舵機是一種位置伺服的驅動器,適用于那些需要角度不斷變化并能夠保持的控制系統。能夠在微機電系統和航模中作為基本的輸出執行機構,其簡單的控制和輸出使得單片機系統很容易與之接口。鑒于舵機廣泛的應用,文中設計了一種基于AT89S52單片機的舵機控制系統。
1 Futaba-S3003舵機
常見的舵機廠家有:日本的Futaba、JR、SANWA等,國產的有北京的新幻想、吉林的振華等。之所以用Futaba-S3003是因為這個型號是市場上最常見的,也是價格相對較便宜的一種。圖1為Futaba-S3003舵機的實物圖,圖2為Futaba-S3003舵機的引線示意圖。
舵機輸出軸的轉角由周期為20ms的脈沖信號控制,脈沖信號的脈寬從0.5ms變化到2.5ms,舵機輸出軸的角度便隨之從0°線性變化到180°,以幾個特殊角度說明舵機輸出轉角與輸入信號脈沖寬度之間的關系,如圖3所示。
2 舵機控制系統設計
要想實現對舵機的控制,由舵機的工作原理可知,只需生成與所需位置角度相對應的脈沖信號,即脈寬與位置角度相對應的周期為20ms的脈沖信號。這種信號很容易由單片機生成,而且脈寬精度可以達到1μs,則舵機轉動角度精度可達1μs×1 80°/2ms=0.09°。
舵機控制系統的proteus仿真原理圖如圖4所示,其中舵機的連接與圖2所示接法不一致,這是由于proteus軟件對舵機各引線的定義與Futaba-S3003不一致,實際電路的連接應該以圖2為準。
與單片機的P1.0腳相連的按鈕控制舵機角度增加,與P1.1腳相連的按鈕控制舵機角度減小,與P1.2腳相連的按鈕控制舵機角度回到初始位置,在本設計中使舵機回到90°的位置。單片機的P3.7腳產生PWM信號以控制舵機,在該點連接示波器,仿真的時候可以看到PWM信號隨著按鈕的控制,脈寬增大或者減小或者恢復到1.5ms脈寬。
3 軟件設計
舵機控制程序用定時中斷產生PWM信號,用查詢方式對三個按鍵做出反應。程序流程圖如圖5所示。單片機的P1.0腳連接的按鈕控制舵機角度增加,按鈕按下時,先判斷是否達到了最大角度180°,如果達到了180°則重新查詢各個按鈕,否則舵機角度按照程序設定的幅度增加;單片機的P1.1腳連接的按鈕控制舵機角度減小,按鈕按下時,先判斷是否達到了最小角度0°,如果達到了0°則重新查詢各個按鈕,否則舵機角度按照程序設定的幅度減小;單片機的P1.2腳連接的按鈕控制舵機角度回到初始位置,即90°位置。
控制舵饑關鍵是要產生與角度相對應的PWM信號,單片機通過定時器中斷產生PWM信號。定置,定義TL02和TH02用于PWM信號低電平定時初值設置。例如,舵機初始位置設在90°位置,對應的PWM信號脈寬為1.5ms,即PWM信號高電平為1.5ms,低電平為20ms-1.5ms=18.5ms。所以在程序開始部分如下設置:
程序如此設置,系統上電后則在P3.7腳產生1.5ms高電平,然后18.5ms低電平,然后不斷重復,舵機則保持在90°位置。如果有按鈕被按下,則舵機按照程序設置角度增加或者減小,實質上是P3.7腳按照程序設置產生了脈寬增加或者減小的PWM信號。
4 結束語
文中設計了一個基于單片機的舵機控制系統,控制方法簡單方便,而且精度比較高。在此控制系統的基礎上,在舵機上安裝受控部件,并增加音樂播放,可做成有聲有色的玩具
|