基于CC1110無線單片機的機器魚控制系統(tǒng)設計
3機器魚控制系統(tǒng)軟件設計
本文引用地址:http://www.ex-cimer.com/article/267501.htm在機器魚控制系統(tǒng)中軟件設計采用模塊化設計,主要包括串口通信程序、無線通信程序、存儲器讀寫程序以及舵機驅(qū)動程序。
3.1串口通信程序設計
串口通信程序完成CC1110無線單片機與上位機PC的串行通信。串口接收數(shù)據(jù)采用中斷的方式,串口發(fā)送數(shù)據(jù)采用查詢的方式。串口收發(fā)程序流程圖如圖7所示。
圖7串口收發(fā)程序流程圖
在硬件設計中采用了CH341T串口轉(zhuǎn)換電路模擬串口,為了配合硬件的使用,需要在上位機中安裝驅(qū)動程序,驅(qū)動程序可以從南京沁恒電子有限公司網(wǎng)站上下載。
3.2無線通信程序設計
在設計無線通信程序前,需要配置CC1110的高頻部分,以確定無線收發(fā)器的收發(fā)頻率、發(fā)送功率、傳輸速率以及調(diào)制方式等。由于CC11 10高頻配置較為復雜,這里可以采用TI公司的SmartRF Studio軟件來進行配置。通過設置寄存器FREQ2、FREQ1和FREQ0將CC1110的收發(fā)頻率選擇在433MHz頻段;通過設置PA TABLE0將CC1110的發(fā)送功率設置為10dBm,這樣可以提高發(fā)射距離;由于該控制系統(tǒng)的指令數(shù)據(jù)量較小,可以選擇較低的傳輸速率,不僅可以提高傳輸距離,而且可以降低能耗;調(diào)制方式選擇2-FSK方式。
無線通信程序包括無線發(fā)送程序和無線接收程序兩部分。無線發(fā)送程序?qū)⒋l(fā)送的數(shù)據(jù)通過無線的方式發(fā)送出去,無線接收程序可以接收同頻率的發(fā)射機發(fā)送的數(shù)據(jù)。無線通信程序流程圖如圖8所示。
圖8無線通信程序流程圖
3.3指令發(fā)送端主程序設計
在機器魚控制系統(tǒng)的指令發(fā)送端,實現(xiàn)的功能包括串口收發(fā)數(shù)據(jù)和無線收發(fā)數(shù)據(jù)。指令發(fā)送端主程序流程圖如圖9所示。
圖9指令發(fā)送端主程序流程圖
指令數(shù)據(jù)無線發(fā)送以后,指令發(fā)送端開始等待接收指令執(zhí)行端反饋的數(shù)據(jù)。指令發(fā)送端接收到反饋數(shù)據(jù)后調(diào)用串口發(fā)送程序?qū)⒎答仈?shù)據(jù)發(fā)回到PC,將反饋數(shù)據(jù)與指令數(shù)據(jù)比對,如果反饋數(shù)據(jù)與發(fā)送數(shù)據(jù)一致,則認為指令數(shù)據(jù)發(fā)送成功,否則重新發(fā)送指令數(shù)據(jù)。如果長時間沒有接收到反饋數(shù)據(jù),則重新發(fā)送指令數(shù)據(jù)。
3.4指令執(zhí)行端主程序設計
在機器魚控制系統(tǒng)指令執(zhí)行端,主要包含指令數(shù)據(jù)的接收、指令數(shù)據(jù)的反饋發(fā)送、存儲器的讀寫以及舵機的控制等。其中,舵機的控制是最為關鍵的部分。在控制舵機前要先對指令數(shù)據(jù)進行解析,計算出舵機的控制量。由于舵機采用級聯(lián)的方式來模仿魚體的擺動,因此舵機間關節(jié)的運動規(guī)律可以采用以下數(shù)學模型:
式中,Ka為振幅系數(shù),Ki為偏斜系數(shù),f為擺動頻率,φi為關節(jié)滯后角,Aimax為關節(jié)擺動幅度,t為時間。以上參數(shù)即為舵機的主要控制參數(shù)。在程序設計過程中,一般取Ka≤0.5,Ki、f、φi以及Aimax四個參數(shù)根據(jù)具體的速度指令和方向指令來計算出相應的控制量。指令執(zhí)行端主程序流程圖如圖10所示。
圖10指令執(zhí)行端主程序流程圖
4結束語
本文設計的機器魚控制系統(tǒng)通過了下水測試。在機器魚下水測試階段,利用串口調(diào)試助手對機器魚進行直接發(fā)送控制指令實驗,對機器魚的調(diào)直數(shù)據(jù)保存、直游以及轉(zhuǎn)彎進行了直接控制。測試結果表明,機器魚控制系統(tǒng)可以有效地接收上位機發(fā)送的指令數(shù)據(jù),并執(zhí)行相關的動作,達到了較好的控制效果。同時,本文的研究設計工作為進一步研究設計自主機器魚以及多魚協(xié)作提供了較好的軟硬件設計基礎。
評論