自平衡機器人「蛋黃」(見圖1)的創意始於2013 年6 月初,當時的想法是利用Arduino 設計一款入門級的自平衡小車,可以通過PS2 無線手柄控制,能站能跑,最好還會賣萌。而且要做到取材容易、製作簡單,同時還要注重外觀擁有個性。所以我在設計時採用了模塊化的接插結構,除了用到的各個電子模塊,還用上了樂高積木,使組裝就像搭積木一樣簡單。而「蛋黃」的外形靈感則來自於WALL-E(見圖2)。為了讓它不佔用我書桌太多地方,「蛋黃」的尺寸被限定在了10cm。「蛋黃」是一個開源的項目,我們希望給大家提供一個平臺、一套自平衡車的低成本解決方案,所以大家完全可以在「蛋黃」的基礎上添磚加瓦,製作一套獨一無二的自平衡機器人。
31486
■ 圖1 「蛋黃」自平衡機器人
31487
■ 圖2 電影《機器人瓦力》中的WALL-E
原理簡介
兩輪車又稱自平衡車,主要是建立在「動態穩定」的基本原理上,利用車體內部的陀螺儀和加速度傳感器檢測車體姿態的變化,並利用伺服控制系統精確地驅動電機進行相應的調整,以保持系統的平衡。
類似人體自身的平衡系統,當身體重心前傾時,為了保證平衡,需要往前走,重心後傾時則需要往後走。同時,需要轉向時,使小車左右兩個車輪產生轉速差,例如左轉時,右輪的轉速會比左輪快(左輪速度為為v -x ,右輪速度為v+x ),但車的平均速度是不變的,通過這樣的方式即可達到轉向的效果。
講到自動控制,不得不提的是PID 算法,這是一種在工程實際中應用最為廣泛的調節器,P、I、D 依次代表的是比例、積分、微分。正如上面的平衡原理中提到的,我們需要檢測車體姿態的變化,並以此為依據糾正小車的姿態,也就是說,我們通過慣性元件獲取車子的實時姿態數據,根據這個數據和我們期望的目標值之間的誤差,控制電機的轉向和轉速,正如圖3 中所示,前傾的話,角度誤差為正,那麼輪子就需要向前轉,反之則是向後轉;而且誤差越大,需要的車輪加速度越大,這也說明我們可以簡單地把誤差值乘以一個係數,當作PWM 值賦給電機。
這一整個過程,其實就是控制論裡的負反饋調節。那麼問題來了,我們怎麼知道這個係數是多少呢?其實這個值就是PID 裡面的P值,我們可以通過車子的角度曲線找到調節的規律。同樣的道理,大家可以想像,如果只用比例P的話,容易出現的情況是車子前傾時往前猛加速,然後衝過頭又導致後仰,接著向後猛加速,如此循環,導致車體震蕩,
這時就需要用到微分D。這裡的微分指的其實是誤差的誤差,通過加上這個係數,可以使車子柔和地前後調節,最終達到很好的平衡穩定性。
31488
■ 圖3 自平衡驅動圖示
31489
■ 圖4 MPU6050 6 軸模塊
未完。。。
全文詳見《無線電》201503