新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于CC1110無線單片機的機器魚控制系統設計

        基于CC1110無線單片機的機器魚控制系統設計

        作者: 時間:2014-12-30 來源:網絡 收藏

          3控制系統軟件設計

        本文引用地址:http://www.104case.com/article/267501.htm

          在控制系統中軟件設計采用模塊化設計,主要包括串口通信程序、無線通信程序、存儲器讀寫程序以及舵機驅動程序。

          3.1串口通信程序設計

          串口通信程序完成無線與上位機PC的串行通信。串口接收數據采用中斷的方式,串口發送數據采用查詢的方式。串口收發程序流程圖如圖7所示。

          

         

          圖7串口收發程序流程圖

          在硬件設計中采用了CH341T串口轉換電路模擬串口,為了配合硬件的使用,需要在上位機中安裝驅動程序,驅動程序可以從南京沁恒電子有限公司網站上下載。

          3.2無線通信程序設計

          在設計無線通信程序前,需要配置的高頻部分,以確定無線收發器的收發頻率、發送功率、傳輸速率以及調制方式等。由于CC11 10高頻配置較為復雜,這里可以采用TI公司的SmartRF Studio軟件來進行配置。通過設置寄存器FREQ2、FREQ1和FREQ0將的收發頻率選擇在433MHz頻段;通過設置PA TABLE0將CC1110的發送功率設置為10dBm,這樣可以提高發射距離;由于該控制系統的指令數據量較小,可以選擇較低的傳輸速率,不僅可以提高傳輸距離,而且可以降低能耗;調制方式選擇2-FSK方式。

          無線通信程序包括無線發送程序和無線接收程序兩部分。無線發送程序將待發送的數據通過無線的方式發送出去,無線接收程序可以接收同頻率的發射機發送的數據。無線通信程序流程圖如圖8所示。

          

         

          圖8無線通信程序流程圖

          3.3指令發送端主程序設計

          在控制系統的指令發送端,實現的功能包括串口收發數據和無線收發數據。指令發送端主程序流程圖如圖9所示。

          

         

          圖9指令發送端主程序流程圖

          指令數據無線發送以后,指令發送端開始等待接收指令執行端反饋的數據。指令發送端接收到反饋數據后調用串口發送程序將反饋數據發回到PC,將反饋數據與指令數據比對,如果反饋數據與發送數據一致,則認為指令數據發送成功,否則重新發送指令數據。如果長時間沒有接收到反饋數據,則重新發送指令數據。

          3.4指令執行端主程序設計

          在機器魚控制系統指令執行端,主要包含指令數據的接收、指令數據的反饋發送、存儲器的讀寫以及舵機的控制等。其中,舵機的控制是最為關鍵的部分。在控制舵機前要先對指令數據進行解析,計算出舵機的控制量。由于舵機采用級聯的方式來模仿魚體的擺動,因此舵機間關節的運動規律可以采用以下數學模型:

          

         

          式中,Ka為振幅系數,Ki為偏斜系數,f為擺動頻率,φi為關節滯后角,Aimax為關節擺動幅度,t為時間。以上參數即為舵機的主要控制參數。在程序設計過程中,一般取Ka≤0.5,Ki、f、φi以及Aimax四個參數根據具體的速度指令和方向指令來計算出相應的控制量。指令執行端主程序流程圖如圖10所示。

          

         

          圖10指令執行端主程序流程圖

          4結束語

          本文設計的機器魚控制系統通過了下水測試。在機器魚下水測試階段,利用串口調試助手對機器魚進行直接發送控制指令實驗,對機器魚的調直數據保存、直游以及轉彎進行了直接控制。測試結果表明,機器魚控制系統可以有效地接收上位機發送的指令數據,并執行相關的動作,達到了較好的控制效果。同時,本文的研究設計工作為進一步研究設計自主機器魚以及多魚協作提供了較好的軟硬件設計基礎。


        上一頁 1 2 3 下一頁

        關鍵詞: 單片機 CC1110 機器魚

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 鹰潭市| 寿光市| 徐水县| 榆林市| 三明市| 屯门区| 靖宇县| 阿克陶县| 大宁县| 齐齐哈尔市| 姜堰市| 东乌珠穆沁旗| 鹤山市| 耒阳市| 英超| 长沙市| 宁德市| 黄平县| 徐州市| 荥经县| 望奎县| 漳浦县| 马龙县| 辽源市| 乌拉特前旗| 噶尔县| 苏尼特左旗| 郧西县| 平安县| 北宁市| 灌云县| 镇江市| 淳安县| 余干县| 澎湖县| 聂拉木县| 普宁市| 上蔡县| 盐城市| 丰台区| 吴堡县|