葛汶鑫 張文燕
(江蘇省常州技師學(xué)院,江蘇 常州 213032)
圖1 Segway
Segway是一種可自動(dòng)平衡的兩輪單人車。它是由美國(guó)發(fā)明家Dean Kamen和他的公司DEKA R&D Corp(DEKA Research and Development Corp)發(fā)明,并隨之創(chuàng)建了Segway有限責(zé)任公司。 Segway也被稱為站立式滑行車。與傳統(tǒng)的兩輪滑行車區(qū)別在于Segway的兩個(gè)小輪都在一條軸心線上。“Segway”這個(gè)名稱源于單詞“Segue”意思是流暢地流動(dòng)。
圖2 原理圖解
Segway的運(yùn)作主要是以動(dòng)態(tài)平衡原理為基礎(chǔ),讓小車能調(diào)節(jié)自身平衡。小車內(nèi)嵌精密回轉(zhuǎn)儀用來(lái)判斷小車的即時(shí)狀態(tài),再由高速中央處理器計(jì)算出正確的指令來(lái)開(kāi)動(dòng)小車使之達(dá)到平衡狀態(tài)。假設(shè)我們把整個(gè)車和駕駛員與地面垂直時(shí)的重力中心線作為參考軸線。當(dāng)小車向前傾斜時(shí)(θ>0),小車內(nèi)部的電動(dòng)馬達(dá)就會(huì)提供一個(gè)向前的動(dòng)力。如此讓小車平衡,然而與此同時(shí),它也制造出了一個(gè)讓小車向前的加速度。反之亦然。因此,駕駛員只需通過(guò)向前或向后傾倒來(lái)改變身體與參考軸線的角度,便能控制Segway向前或是向后行駛,并且Segway的行駛速度與駕駛員的身體傾斜度成正比。理論上,在有充足的電能的前提下,駕駛員不會(huì)有摔倒的危險(xiǎn)。
探索臺(tái)式Segway的自動(dòng)平衡控制,首先要制作一個(gè)臺(tái)式Segway。制作臺(tái)式Segway需要一個(gè)連有兩個(gè)小輪的電動(dòng)馬達(dá)和一個(gè)控制電動(dòng)馬達(dá)的嵌入式系統(tǒng)。在此次臺(tái)式Segway的制作中,用到了Arduino,嵌入式系統(tǒng)L293D-H Bridge和傳感器IMU 5DOF。Arduino是由一個(gè)意大利公開(kāi)的硬件工程資源衍生出來(lái)的。其平臺(tái)包括一個(gè)有簡(jiǎn)單I/O電路板的微處理器和一個(gè)與其對(duì)應(yīng)的完整高效的軟件環(huán)境。Arduino可以作為一個(gè)外部裝置與個(gè)人電腦相連,并在電腦上運(yùn)行Arduino軟件來(lái)相互影響。L293D-H Bridge是一個(gè)有16個(gè)引腳的單片電路裝置。它有兩個(gè)驅(qū)動(dòng)通道和轉(zhuǎn)能晶體管,可用來(lái)改變馬達(dá)轉(zhuǎn)動(dòng)的方向。除此之外,每個(gè)驅(qū)動(dòng)通道都有一個(gè)使能輸入,如ENABLE 1。L293D能通過(guò)內(nèi)部邏輯產(chǎn)生使能信號(hào)來(lái)調(diào)整PWM (脈寬調(diào)制)從而控制馬達(dá)的速度。傳感器IMU 5DOF的作用是給控制算法提供反饋,它由雙軸回轉(zhuǎn)儀IDG-500和三軸加速度測(cè)量?jī)xADXL335組成??勺x取被測(cè)物體的即時(shí)角速度和位置并把這些數(shù)據(jù)傳輸給處理器。臺(tái)式Segway的系統(tǒng)圖解如圖5所示。
圖3 Arduino
圖4 IMU 5DOF
圖5 臺(tái)式Segway系統(tǒng)圖解
圖6是控制直流馬達(dá)的電路連接圖。引腳9是Arduino的6個(gè)I/O引腳中的一個(gè),把它與L293D的使能引腳1連接起來(lái)控制馬達(dá)的發(fā)動(dòng)與停止。L293D的引腳8與外部電源的陽(yáng)極相連為馬達(dá)提供電能。L293D的引腳2和引腳7分別與Arduino的引腳6和引腳7相連,來(lái)接受Arduino中央處理器的發(fā)出的命令來(lái)轉(zhuǎn)換馬達(dá)的旋轉(zhuǎn)方向。L293D的引腳4和引腳5與Arduino的GND(接地)相連最終接到電源的負(fù)極。圖7是此次設(shè)計(jì)中臺(tái)式Segway的最終模型。
圖6 直流馬達(dá)控制電路圖
圖7 臺(tái)式Segway最終模型
Segway是控制倒立擺的典型例子。所以首先要找到可以補(bǔ)償?shù)沽[動(dòng)力學(xué)的控制原理。在這個(gè)項(xiàng)目中,我用了簡(jiǎn)單的bang-bang控制來(lái)實(shí)現(xiàn)了小車的自動(dòng)平衡。Bang-bang控制應(yīng)用在很多方面,如自動(dòng)調(diào)溫器。當(dāng)室內(nèi)溫度太低時(shí),火爐就開(kāi)始發(fā)動(dòng)加熱;當(dāng)室內(nèi)溫度過(guò)高時(shí),空調(diào)便開(kāi)啟。此類控制就叫做bang-bang控制。Bang-bang控制是一個(gè)注重控制運(yùn)算法則可靠性的控制器設(shè)計(jì)方法。其目標(biāo)是確保控制系統(tǒng)在實(shí)際環(huán)境中安全運(yùn)行的同時(shí)為控制系統(tǒng)找到最小的控制要求??刂破饕坏┍辉O(shè)計(jì)好,其參數(shù)就不再變化,控制性能也得到保障。一般來(lái)說(shuō),bang-bang控制系統(tǒng)的設(shè)計(jì)都是基于系統(tǒng)最壞的狀態(tài)。很多系統(tǒng)都可以用bnag-bang控制來(lái)設(shè)計(jì),尤其是有大量不確定范圍或有很小的穩(wěn)定邊緣的系統(tǒng)。
圖8 bang-bang控制自動(dòng)調(diào)溫器
如圖7所示,固定在小車上的傳感器ADXL335不斷讀取即時(shí)數(shù)據(jù)并將這些數(shù)據(jù)傳送給Arduino處理。這里用ADXL335的引腳YAcc,其讀取的數(shù)據(jù)反應(yīng)了小車的即時(shí)傾斜角度。當(dāng)小車平衡時(shí),傳感器讀到的即時(shí)數(shù)據(jù)的范圍是342到345,考慮到系統(tǒng)在實(shí)際環(huán)境中的最壞狀態(tài),為了使之更穩(wěn)定,我適當(dāng)擴(kuò)大此數(shù)據(jù)的范圍,在編寫程序時(shí)將這個(gè)平衡范圍設(shè)置為339到348。這樣,當(dāng)小車向前傾斜時(shí),Y-Acc讀到的數(shù)據(jù)就大于348,此時(shí),Arduino下命令讓L293D控制馬達(dá)向前轉(zhuǎn)動(dòng)。當(dāng)小車向后傾斜時(shí),Y-Acc讀到的數(shù)據(jù)就小于339,此時(shí),Arduino下命令讓L293D控制馬達(dá)向后轉(zhuǎn)動(dòng)。如此,來(lái)控制小車實(shí)現(xiàn)平衡。脈寬調(diào)制PWM設(shè)定為185來(lái)發(fā)動(dòng)馬達(dá)。以上所選用的數(shù)據(jù)都來(lái)自于大量的測(cè)試。用Arduino軟件所編的實(shí)現(xiàn)小車自動(dòng)平衡的程序見(jiàn)附錄I。
截取由傳感器ADXL335的引腳Y-Acc讀取的部分即時(shí)數(shù)據(jù),調(diào)入Matlab經(jīng)處理后生成一個(gè)反饋小車傾斜角度的圖表。此圖表展示了用bang-bang控制設(shè)計(jì)的臺(tái)式Segway系統(tǒng)在實(shí)際環(huán)境中的工作狀態(tài)。如圖9所示,藍(lán)色的線(幾乎保持水平)表示了小車平衡時(shí)的狀態(tài),此時(shí)小車不受任何干擾,一直維持在平衡狀態(tài),傾斜角始終為0度。紅色的線(呈波形狀)表示了小車在受到外界干擾下的工作狀態(tài)。此時(shí),小車的傾斜角始終在以0度為中心,5度的幅度為范圍內(nèi)來(lái)回?fù)u擺。由此可見(jiàn),bang-bang控制成功地實(shí)現(xiàn)了臺(tái)式Segway的自動(dòng)平衡。
圖9 Segway實(shí)際環(huán)境中工作狀態(tài)
最終,一個(gè)用馬達(dá),傳感器和嵌入式系統(tǒng)制造的臺(tái)式Segway成功地實(shí)現(xiàn)了自動(dòng)平衡。Bang-bang控制的使用使小車在實(shí)際環(huán)境中達(dá)到了穩(wěn)定。
附錄I
[1]https://www.sparkfun.com/products/9268,最后一次進(jìn)入時(shí)間 2013.03.30[OL]
[2]http://www.fourmilab.ch/hackdiet/www/subsection1_2_3_0_5.html,最后一次進(jìn)入時(shí)間 2013.03.30[OL].
[3]http://resources.metapress.com/pdf-preview.axd?code=xuq34u56204 74264&size=largest,最后一次進(jìn)入時(shí)間 2013.03.30[OL].
[4]https://www.sparkfun.com/datasheets/Components/SMD/Datasheet_IDG 500.pdf,最后一次進(jìn)入時(shí)間 2013.03.30[OL].
[5]http://hearth.com/econtent/index.php/wiki/8d1e6930d8db3a522ab33b88366567a 7/,最后一次進(jìn)入時(shí)間 2013.03.30[OL].
[6]http://www.ecs.shimane-u.ac.jp/~kyoshida/Swing-up_control.pdf,最后一次進(jìn)入時(shí)間 2013.03.30[OL].