新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 舵機(jī)速度控制原理細(xì)解

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

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

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

本文引用地址:http://m.butianyuan.cn/article/201612/324196.htm

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

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



評(píng)論


技術(shù)專區(qū)

關(guān)閉