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