專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

舵機速度控制原理細(xì)解

作者:藍(lán)夢荒   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年12月09日   【字體:

      舵機速度的控制其實都是讓舵機從初始位置到目標(biāo)的位置不是直接到達(dá),而是劃分成很多細(xì)微的小過程逐步讓他到達(dá)。比如說讓舵機的初始位置是0度讓他跑到90度,直接送入90度的數(shù)據(jù)的話由于舵機的響應(yīng)速度還是比較快的,幾乎就一下子跑到90度的位置。如果我們在他到達(dá)90度的過程中給他制造很多緩沖,就是讓他從0度到1度到2度3度……..的逐步過渡過到90度,那么出現(xiàn)的效果就是舵機以比較慢的速度到達(dá)目標(biāo)位置,就達(dá)到我們控速的目的。而每個間距切換的時間加以控制既可以得到我們想要的具體旋轉(zhuǎn)速度,因為劃分的過程很多,所以舵機的旋轉(zhuǎn)看上去是流暢的一個速度的旋轉(zhuǎn)。

     雖然理論上是那么回事,不過要通過程序表達(dá)還是要經(jīng)過一些變換,在這里假設(shè)舵機初始位置的值是x,舵機要運行到目標(biāo)位置y,在設(shè)置個變量a讓他初始時0,x+(y-x)*a/100就是我們要送入的舵機位置信息,開始的時候a是0所以送入的數(shù)據(jù)是x,舵機還在初始位置,這時候我們每隔固定的時間就對a+1,隨著a的變化舵機位置逐步從初始位置向目標(biāo)位置靠近,到a=100的時候完全到達(dá)目標(biāo)位置停止a的自加。但是由于x+(y-x)*a/100的公式中大量的引入了x,你會發(fā)現(xiàn)寫程序還是不是那么好控制,我的最終的速度控制程序又對這個公式進行了變換y-(y-x)*(100-a)/100這個公式也是隨著a的自加會使得送入的信息逐步到達(dá)目標(biāo)位置。兩個公式都可以實現(xiàn),但是相比較第二個程序到時候會相對簡單。

     在寫程序的時候有時候我們不光要考慮程序語句的正確性,有時候還要考慮單片機的處理能力,比方說a=(0x01<<16)>>16這個語句沒有錯誤,理論上a應(yīng)該最后還是等于1但是把他下載到51單片機當(dāng)中就不是那么回事了,因為在向右移動16位的過程中,51沒有16位的高位來儲存數(shù)據(jù),所需信息會有打失,最后的結(jié)果會是a=0,我也是在寫程序的時候發(fā)現(xiàn)了這個問題,只是想說明在涉及運算的時候要考慮單片機處理能力。x+(y-x)*a/100就是對舵機在初始位置到目標(biāo)位置的轉(zhuǎn)化過程進行了100微分,本來還想進行1000微分的了,但是發(fā)現(xiàn)100微分就已經(jīng)完全足夠了,而且100的時候程序計算過程設(shè)計的不合理就會出現(xiàn)超出運算能力而出錯的情況。

     有朋友問我我的舵機控制速度程序是什么原理,所以寫篇小文章介紹下,大家互相交流學(xué)習(xí)  呵呵
下面是舵機的單片機程序:
http://www.torrancerestoration.com/mcu/2542.html
http://www.torrancerestoration.com/mcu/2543.html
http://www.torrancerestoration.com/mcu/2544.html
http://www.torrancerestoration.com/mcu/2545.html
http://www.torrancerestoration.com/mcu/2546.html
http://www.torrancerestoration.com/mcu/2547.html
http://www.torrancerestoration.com/mcu/2554.html

 

關(guān)閉窗口

相關(guān)文章