文章目錄
- 平衡板電路設計指南
- 一、功能分析
- 二、原理圖設計
- 三、PCB設計
- 四、程式設計
- 五、最終結果
平衡板電路設計指南
一、功能分析
使用 STM32F103RCT6 芯片作為主核心,搭配多個電子模塊設計一款測控系統,裝載于外賣箱結構上,實作外賣箱自平衡,在外賣箱里面有一個平臺,它會隨著外賣箱的顛簸而自動調節,保持平穩,具體實作采用了IMU模塊固定在平臺上,通過中央處理器實時讀取模塊的角度資訊,根據當前角度資訊與平衡時角度資訊的差值,帶入到平衡演算法當中,經過演算法計算,算出每一個舵機的調整值,再輸出到舵機上,舵機進行角度調整,讓平臺始終穩定在水平位置,實作防潑灑功能,本專案中使用各個模塊及其連接圖如下

實作平衡效果,整個系統需要的硬體組成如下:
-
自制PCB
自制PCB使用STM32F103C8T6為主控芯片,設計外圍電路,將陀螺儀、按鍵、LED燈、PWM介面、ADC介面、電壓電路集成到一張PCB電路板上,為軟體運行提供穩定的硬體環境
-
壓力傳感器
壓力傳感器使用壓敏電阻,經過運算放大電路放大電壓信號,方便PCB上的單片機讀取
-
舵機
舵機為平衡板位置調整的執行單元,通過PWM精準驅動,維持系統角度平衡
-
機械結構
機械結構使用亞克力做平衡板載體,安裝PCB電路板以及傳感器和舵機,使系統可以進行資料獲取以及位置調整
-
電池
采用3S電池供電,電壓穩定,可充電,實作回圈使用
二、原理圖設計
原理圖設計:

三、PCB設計
電路布局:

PCB布線圖:
正面:

反面:

PCB三維模型:

四、程式設計
程式設計使用STM32CubeMX代碼生成軟體結合MDK IDE進行開發,在CubeMX中配置芯片外設以及FreeRTOS作業系統介面,CubeMX配置如下:

基于CubeMX生成的代碼,在MDK軟體中撰寫控制邏輯,使用多任務編程,撰寫出串口任務、LED和按鍵任務、ADC采樣任務、平衡任務,每個任務的實作功能如下:
-
串口任務:串口任務使用到單片機的串口1和串口2,串口1用于接受成品陀螺儀模塊解算出的姿態角資料,獲取平衡板的角度狀態,便于帶入PID計算,串口2用于轉發串口1接受到的姿態資料,發送到后臺用于進一步處理
-
LED和按鍵任務:LED和按鍵任務用于讀取按鍵的狀態以及顯示當前系統是否正常運行,按鍵按下后可以切換是否開啟平衡功能,LED周期性閃爍方便用戶確定系統是否正常運行
-
ADC采樣任務:ADC采樣任務使用單片機的內置ADC外設,采集壓力傳感器回傳的電壓值,與我們設定的壓力值進行對比,當壓力大于設定值時,即認為檢測到重物,開啟板子的平衡功能
-
平衡任務:平衡任務在獲取到姿態角的更新資訊后會對他進行PID演算法運算,并將得出的值輸出到PWM上,控制舵機進行姿態調整,維持板子的平衡
代碼流程圖如下:

五、最終結果
放一個舊版的硬體測驗視頻,看起來不明顯,但新版本的效果是非常好的,可惜最新版本的機器沒有拍視頻,機器不知道去哪了,大致了解一下即可

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/386719.html
標籤:其他
