葛汶鑫 張文燕
(江蘇省常州技師學院,江蘇 常州 213032)

圖1 Segway
Segway是一種可自動平衡的兩輪單人車。它是由美國發明家Dean Kamen和他的公司DEKA R&D Corp(DEKA Research and Development Corp)發明,并隨之創建了Segway有限責任公司。 Segway也被稱為站立式滑行車。與傳統的兩輪滑行車區別在于Segway的兩個小輪都在一條軸心線上。“Segway”這個名稱源于單詞“Segue”意思是流暢地流動。

圖2 原理圖解
Segway的運作主要是以動態平衡原理為基礎,讓小車能調節自身平衡。小車內嵌精密回轉儀用來判斷小車的即時狀態,再由高速中央處理器計算出正確的指令來開動小車使之達到平衡狀態。假設我們把整個車和駕駛員與地面垂直時的重力中心線作為參考軸線。當小車向前傾斜時(θ>0),小車內部的電動馬達就會提供一個向前的動力。如此讓小車平衡,然而與此同時,它也制造出了一個讓小車向前的加速度。反之亦然。因此,駕駛員只需通過向前或向后傾倒來改變身體與參考軸線的角度,便能控制Segway向前或是向后行駛,并且Segway的行駛速度與駕駛員的身體傾斜度成正比。理論上,在有充足的電能的前提下,駕駛員不會有摔倒的危險。
探索臺式Segway的自動平衡控制,首先要制作一個臺式Segway。制作臺式Segway需要一個連有兩個小輪的電動馬達和一個控制電動馬達的嵌入式系統。在此次臺式Segway的制作中,用到了Arduino,嵌入式系統L293D-H Bridge和傳感器IMU 5DOF。Arduino是由一個意大利公開的硬件工程資源衍生出來的。其平臺包括一個有簡單I/O電路板的微處理器和一個與其對應的完整高效的軟件環境。Arduino可以作為一個外部裝置與個人電腦相連,并在電腦上運行Arduino軟件來相互影響。L293D-H Bridge是一個有16個引腳的單片電路裝置。它有兩個驅動通道和轉能晶體管,可用來改變馬達轉動的方向。除此之外,每個驅動通道都有一個使能輸入,如ENABLE 1。L293D能通過內部邏輯產生使能信號來調整PWM (脈寬調制)從而控制馬達的速度。傳感器IMU 5DOF的作用是給控制算法提供反饋,它由雙軸回轉儀IDG-500和三軸加速度測量儀ADXL335組成。可讀取被測物體的即時角速度和位置并把這些數據傳輸給處理器。臺式Segway的系統圖解如圖5所示。

圖3 Arduino

圖4 IMU 5DOF

圖5 臺式Segway系統圖解
圖6是控制直流馬達的電路連接圖。引腳9是Arduino的6個I/O引腳中的一個,把它與L293D的使能引腳1連接起來控制馬達的發動與停止。L293D的引腳8與外部電源的陽極相連為馬達提供電能。L293D的引腳2和引腳7分別與Arduino的引腳6和引腳7相連,來接受Arduino中央處理器的發出的命令來轉換馬達的旋轉方向。L293D的引腳4和引腳5與Arduino的GND(接地)相連最終接到電源的負極。圖7是此次設計中臺式Segway的最終模型。

圖6 直流馬達控制電路圖

圖7 臺式Segway最終模型
Segway是控制倒立擺的典型例子。所以首先要找到可以補償倒立擺動力學的控制原理。在這個項目中,我用了簡單的bang-bang控制來實現了小車的自動平衡。Bang-bang控制應用在很多方面,如自動調溫器。當室內溫度太低時,火爐就開始發動加熱;當室內溫度過高時,空調便開啟。此類控制就叫做bang-bang控制。Bang-bang控制是一個注重控制運算法則可靠性的控制器設計方法。其目標是確保控制系統在實際環境中安全運行的同時為控制系統找到最小的控制要求。控制器一旦被設計好,其參數就不再變化,控制性能也得到保障。一般來說,bang-bang控制系統的設計都是基于系統最壞的狀態。很多系統都可以用bnag-bang控制來設計,尤其是有大量不確定范圍或有很小的穩定邊緣的系統。

圖8 bang-bang控制自動調溫器
如圖7所示,固定在小車上的傳感器ADXL335不斷讀取即時數據并將這些數據傳送給Arduino處理。這里用ADXL335的引腳YAcc,其讀取的數據反應了小車的即時傾斜角度。當小車平衡時,傳感器讀到的即時數據的范圍是342到345,考慮到系統在實際環境中的最壞狀態,為了使之更穩定,我適當擴大此數據的范圍,在編寫程序時將這個平衡范圍設置為339到348。這樣,當小車向前傾斜時,Y-Acc讀到的數據就大于348,此時,Arduino下命令讓L293D控制馬達向前轉動。當小車向后傾斜時,Y-Acc讀到的數據就小于339,此時,Arduino下命令讓L293D控制馬達向后轉動。如此,來控制小車實現平衡。脈寬調制PWM設定為185來發動馬達。以上所選用的數據都來自于大量的測試。用Arduino軟件所編的實現小車自動平衡的程序見附錄I。
截取由傳感器ADXL335的引腳Y-Acc讀取的部分即時數據,調入Matlab經處理后生成一個反饋小車傾斜角度的圖表。此圖表展示了用bang-bang控制設計的臺式Segway系統在實際環境中的工作狀態。如圖9所示,藍色的線(幾乎保持水平)表示了小車平衡時的狀態,此時小車不受任何干擾,一直維持在平衡狀態,傾斜角始終為0度。紅色的線(呈波形狀)表示了小車在受到外界干擾下的工作狀態。此時,小車的傾斜角始終在以0度為中心,5度的幅度為范圍內來回搖擺。由此可見,bang-bang控制成功地實現了臺式Segway的自動平衡。

圖9 Segway實際環境中工作狀態
最終,一個用馬達,傳感器和嵌入式系統制造的臺式Segway成功地實現了自動平衡。Bang-bang控制的使用使小車在實際環境中達到了穩定。
附錄I

[1]https://www.sparkfun.com/products/9268,最后一次進入時間 2013.03.30[OL]
[2]http://www.fourmilab.ch/hackdiet/www/subsection1_2_3_0_5.html,最后一次進入時間 2013.03.30[OL].
[3]http://resources.metapress.com/pdf-preview.axd?code=xuq34u56204 74264&size=largest,最后一次進入時間 2013.03.30[OL].
[4]https://www.sparkfun.com/datasheets/Components/SMD/Datasheet_IDG 500.pdf,最后一次進入時間 2013.03.30[OL].
[5]http://hearth.com/econtent/index.php/wiki/8d1e6930d8db3a522ab33b88366567a 7/,最后一次進入時間 2013.03.30[OL].
[6]http://www.ecs.shimane-u.ac.jp/~kyoshida/Swing-up_control.pdf,最后一次進入時間 2013.03.30[OL].