基于RT-Thread的两轮平衡小车设计
一、前言
最近參加了RT-Thread官方發起的RT-Robot Car DIY活動,借此機會想總結一些自己本科四年的所學的部分知識。
也可以幫助到那些需要的小伙伴(可以參考我的代碼中對RT-Thread的can設備驅動的使用方法,對IIC驅動的使用方法,mpu6050+hmc5883的初始化和數據讀取的方法,RT-Thread硬件定時器的使用方法,滑動窗口濾波的鏈表實現,pid結構的代碼參考,pid參數調試方法等)
?
二、演示
github鏈接(包括整個keil工程的代碼,原理圖和PCB,機械圖紙和一些參考資料):https://github.com/iamluoyijie/funny_car
小車實物:
?
兩個演示視頻鏈接:https://v.youku.com/v_show/id_XNDMzNzExODMyMA==.html
https://v.youku.com/v_show/id_XNDMzNzExODMxNg==.html
?
?
?
?
三、詳細步驟
硬件上,MCU選用stm32f407zgt6,imu選用gy-86(mpu6050+hmc5883+ms5611)。電機為大疆無刷電機m2006,電機驅動為電調c610,所以選用6s航模鋰電池,所以需要設計24V轉5v,5v轉3.3v穩壓電路,分別使用lm2576-5.0和asm1117-3.3穩壓芯片,由于電調使用can總線通信,所以需要單片機外接can芯片,選用TJA1050,除此之外就是MCU的一些接口電路,包括led,key,sw下載接口、多路串口、PWM和IO??偟脕碚f比較簡單(需要注意一點是:電池24v輸出到電調24v輸入,是在pcb上走線,單路額定電流10A,線寬需要注意,最好雙面都布線)。這是AD18的PCB工程鏈接,。這是pcb的3d圖:
機械上,需要根據電機尺寸單獨設計電機支架和小車底板,三視圖如下所示:
? ? ?
軟件上,我是使用的這個目錄下的bsp:https://github.com/RT-Thread/rt-thread/tree/v4.0.0/bsp/stm32f4xx-HAL,需要的功能可以在rtconfig.h文件中開啟對應的宏。?
四、不足分析與接下來繼續要做的工作。
1、速度內環的pid效果不太理想,500的電機目標轉速,實際轉速波動有正負50。角度外環0度的期望角度,有正負0.5度的波動,小車運動過程中,速度過快就會倒。我感覺最重要的原因就是電池太重,導致小車重心偏高,其次就角度更新頻率太慢,電機轉速值不準,pid參數也不是最優。
2、代碼上,使用了太多全局變量。led的狀態顯示沒好好弄,ps2的好多按鍵沒利用上。
3、接下里的工作就是,使用RT-Thread的IPC機制,盡量減少全局變量的使用。 通過yaw角度或電機編碼器,實現轉向環 速度 的閉環控制。增加 前進 和 轉向 的位置控制。(前面的都是速度控制),也就是說還要增加3組pid控制。
4、可能會重新設計電機支架,把電池放到電機下面,降低平衡車重心。會增加樹莓派,用opencv實現簡單的目標跟蹤等工作。
轉載于:https://www.cnblogs.com/luoyijie/p/11433817.html
總結
以上是生活随笔為你收集整理的基于RT-Thread的两轮平衡小车设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 32-CrawlSpider类爬虫与Sp
- 下一篇: 基于内存搜索的进程检测方法