最近想做個自平衡雙輪車
硬體準備好了。軟體撰寫遇到了困難,希望有過類似經驗的前輩們能指點一下。
1,電機編碼器采用的是紅外線對管,電機轉動一圈輸出20個脈沖,電機減速比50:1
車輪轉動一圈大約會產生1000個脈沖。因為編碼器結構簡單,導致輸入信號有抖動,實際用外部中斷采集信號會多出很多很多。后來用邏輯分析儀抓了下波形才知道。改用定時器掃描計數。基本解決了。
2,電機的啟動延緩,停止延緩:因為電機滿功率啟動會讓小車受到很大的反作用力。
所以想要車輪啟動時線性加減速。平緩啟停。
(問題未解決)
3,電機的同步運行:左右電機因為是分開獨立結構的,程式流程為:沒得到1000個脈沖電機就換向。結果過了不到5秒兩個電機的轉動就不同步了,有時間差。就是本想要兩個電機同步運行,輸出一樣的速度,一樣的扭矩,在最短時間內同步。
不知道有沒有有過類似經驗的前輩給指點下。



uj5u.com熱心網友回復:
忘記了51單片機實驗原始碼鏈接:https://pan.baidu.com/s/1ZFyUlhCA5RKnPma3Mqollg 提取碼:4h23
uj5u.com熱心網友回復:
Q2:靜止到輸出之間有加速程序,如果是脈沖控制,則脈沖頻率由0開始按一定的增加率增加到目標頻率,如果是PWM,則脈寬0以一定的增加量,增加到目標脈寬Q3:兩個電機同步必須使用PID
uj5u.com熱心網友回復:
第三個問題,我沒有實踐過,就只是說說我的想法,交流一下。如果不加雙輪同步的PID的話,根據平衡小車的位姿資訊,你會通過正常的一個PID算出兩個輪子應該設定的速度。
然后如果雙輪速度不同步的話,你可以通過馬達上的編碼器算出兩個馬達實際的速度v1、v2,雙輪同步PID的速度的設定值為(v1+v2)/2,兩個馬達的實際速度和設定速度分別做差得到error,使用PID,得出一個優化脈沖值(假設以脈沖控制馬達)。
然后位姿PID得到的脈沖加上雙輪同步PID得到的優化脈沖值,就是馬達實際脈沖值。
當然,這需要兩個馬達分開控制。
也可以考慮換一個精度高的馬達,正常來說同樣的兩個馬達之間的誤差不是很大。
uj5u.com熱心網友回復:
謝謝,我去了解下pid的演算法再說轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/53334.html
標籤:單片機/工控
上一篇:C#設計模式學習筆記:簡單工廠模式(工廠方法模式前奏篇)
下一篇:提問
