袁銘
摘 ?要:該設計主要由計算機控制端和太陽能小車組成,計算機控制端利用nRF24L01無線控制小車運動。小車以STC89C52單片機為主控芯片,由太陽能鋰電池充電控制模塊提供電源。同時,小車能夠測量工作電壓和環(huán)境的溫濕度數(shù)據(jù),通過無線傳輸模塊發(fā)送給計算機端并在C#開發(fā)的界面上顯示。
關鍵詞:STC89C52 ?nRF24L01 ?太陽能 ?C#
中圖分類號:TN99 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1672-3791(2019)06(a)-0004-02
該小車基于人和物交流的物聯(lián)網(wǎng)思想設計制作,利用太陽能這種清潔能源驅動小車運行,達到了節(jié)能環(huán)保的可持續(xù)發(fā)展理念。該文基于nRF24L01和單片機開發(fā)了一款具有無線通信能力的太陽能供電小車,在PC端遠距離控制小車的運行,并且在PC端實時顯示小車采集到的環(huán)境溫濕度信息和其他相關參數(shù)。
1 ?系統(tǒng)整體結構方案
整個系統(tǒng)由計算機控制端(上位機)和太陽能小車(下位機)兩部分組成。上位機部分由PC機、單片機和無線收發(fā)模塊組成。上位機控制端通過無線收發(fā)模塊向小車發(fā)射控制命令,控制小車運行,同時該無線模塊接收來自小車的各種參數(shù)發(fā)送至PC控制端顯示。下位機小車部分由單片機系統(tǒng)、無線通信模塊、太陽能控制模塊、電機控制模塊、溫濕度模塊等組成。無線通信模塊接收上位機發(fā)出的指令,通過和單片機的通信,由單片機模塊控制電機模塊驅動控制小車運動。AD轉換電路用于采集太陽能充電電流等工作參數(shù),和溫濕度參數(shù)一起通過無線模塊發(fā)送至計算機控制端。系統(tǒng)框圖見圖1。
2 ?下位機硬件電路設計
2.1 太陽能充電電路
該設計的太陽能充電控制模塊采用CN3722,具有恒流恒壓充電模式,適合對單節(jié)或多節(jié)鋰電池或磷酸鐵鋰電池的充電管理。恒壓充電電壓由外部電阻分壓網(wǎng)絡設置;在恒流充電模式,充電電流通過一個外部電阻設置。對于深度放電的電池,當電池電壓低于所設置的恒壓充電電壓的66.7%時,CN3722用所設置的恒流充電電流的15%對電池進行涓流充電。在恒壓充電階段,充電電流逐漸減小,充電過程持續(xù)直到充電電流減小到零,這樣即使太陽能電池輸出很小的功率,也能對電池充電;因為此時電池連接端BAT管腳電壓保持不變,所以不會對電池過充電。該小車采用3節(jié)鋰電池串聯(lián)充電,每節(jié)鋰電池最大充電電壓為4.2V,總充電電壓最大為12.6V。
2.2 無線通信模塊電路
無線通信模塊采用nRF24L01,是一款工作在2.4~2.5GHz世界通用ISM頻段的低功耗單片無線收發(fā)器芯片。輸出功率、頻道選擇和協(xié)議的設置可以通過SPI接口進行設置。3腳使能端由單片機P2.0口控制,4、5、6、7腳為SPI引腳,分別由單片機P2.3、P2.1、P2.4、P2.2配置,8腳中斷標志位由單片機P3.2控制。
2.3 電量采集電路
電量采集電路采用典型的儀表放大電路,通過AD轉換芯片PCF8591采集到單片機端,用于測量太陽能電流。
放大倍數(shù):U=(R20/R17)×(1+2(R18/R21))×((in1+)- (in1-))=10(1+2(10/R21))
當R21=2.2222K時,放大倍數(shù)為100倍。
2.4 電機控制電路
電機控制模塊采用L298N,內(nèi)部包含4通道邏輯驅動電路。其是一種二相和四相電機的專用驅動器,即內(nèi)含2個H橋的高電壓大電流雙全橋式驅動器,接收標準TTL邏輯電平信號,可驅動46V、2A以下的電機。
2.5 溫濕度測量電路
溫濕度測量模塊采用DHT11,是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器,它應用專用的數(shù)字模塊采集技術和溫濕度傳感技術,確保產(chǎn)品具有極高的可靠性和卓越的長期穩(wěn)定性。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,使其成為各類應用甚至是最為苛刻的應用場合的最佳選擇。
2.6 上位機端電路
上位機和單片機采用RS232總線連接,為了使PC機與MCS-51單片機之間能可靠地進行串行通信,需要用電平轉換芯片,該設計采用MAXIM公司生產(chǎn)的專用芯片MAX232。MAX232是一種把電腦的串行口RS-232信號電平(-10V,+10V)轉換為單片機所用到的TTL信號點平(0V,+5V)的芯片。
3 ?軟件設計
3.1 下位機軟件設計
下位機編程采用模塊化編程思想,主流程圖如圖2所示,主流程圖在完成一些初始化后進入while(1)循環(huán)中,進行標志位的檢測及電壓等參數(shù)檢測,并控制小車運動,在外部中斷子程序中執(zhí)行NRF24L01的IRQ觸發(fā)中斷,在中斷服務程序中主要是對一些標志位的設置。
3.2 上位機程序設計
3.2.1 串口通信協(xié)議制定
上位機控制臺要對上位接收機端發(fā)來的數(shù)據(jù)進行解析,分離出有效數(shù)據(jù),設計的數(shù)據(jù)格式如下:$--溫度--?--濕度--@--電池電壓--<--輸入電流--/--輸出電流--*。
其中:
$為一幀數(shù)據(jù)開始符號;
?為溫度與濕度隔離符號;
@為濕度與電池電壓隔離符號;
<為電池電壓與輸入電流隔離符號;
/為輸入電流與輸出電流隔離符號;
*為結束標志。
3.2.2 控制臺界面設計
控制臺程序設計的目的是接收串口數(shù)據(jù),進行數(shù)據(jù)解析,通過串口發(fā)射控制數(shù)據(jù)。
界面主要功能區(qū)有:串口設置區(qū)、數(shù)據(jù)顯示區(qū)、指令發(fā)射區(qū)。
串口設置區(qū)功能:端口號、波特率選擇、串口打開與關閉。數(shù)據(jù)顯示區(qū):原始數(shù)據(jù)顯示文本、解析后數(shù)碼管顯示。指令發(fā)射:按鍵指令發(fā)射、串口文本框指令發(fā)送。
3.2.3 串口通信
串口數(shù)據(jù)的讀取采用事件觸發(fā)的方式,在SerialPort類中有DataReceived事件,當串口的讀緩存有數(shù)據(jù)到達時則觸發(fā)DataReceived事件,其中SerialPort.ReceivedBytesThreshold屬性決定了當串口讀緩存中數(shù)據(jù)多少個時才觸發(fā)DataReceived事件,默認為1。從SerialPort對象接收數(shù)據(jù)時,將在輔助線程上引發(fā)DataReceived事件。由于此事件在輔助線程而非主線程上引發(fā),因此嘗試修改主線程中的一些元素(如UI元素)時會引發(fā)線程異常。如果有必要修改主Form或Control中的元素,必須使用Invoke回發(fā)更改請求,這將在正確的線程上執(zhí)行。進而要想將輔助線程中所讀到的數(shù)據(jù)顯示到主線程的Form控件上時,只有通過Invoke方法來實現(xiàn)。
4 ?結語
該小車采用太陽能供電,主控芯片采用STC89C52單片機控制,利用nRF24L01無線通信模塊實現(xiàn)上位機和下位機之間的數(shù)據(jù)傳輸,在PC計算機上位機端控制界面上操作控制小車的運行,同時可以采集溫濕度、電流電壓等相關參數(shù)并顯示在PC端界面上,實現(xiàn)了人-車之間的遠程交互控制。該太陽能無線控制小車具有功耗低、電路結構簡單等特點。
參考文獻
[1] 李曉麗.單片機與上位機串行通信系統(tǒng)設計[J].儀表技術,2010(7):45-47.
[2] 韓毅,楊天.基于HCS12單片機的智能尋跡模型車的設計與實現(xiàn)[J].學術期刊,2008,29(18):1535-1955.
[3] Yamato. New conversion system for UPS using high fre 2 quency link[A].IEEE PESC[C].1988:210-320.
[4] 儲江偉,郭克友,王榮本,等.自動導向車導向技術分析與評價[J].起重運輸機,2002(11):1-5.
[5] 王朝盛.基于16單片機MC9S12DG128B智能車系統(tǒng)設計[D].天津工業(yè)大學,2007.