舵機速度控制原理細解
雖然理論上是那么回事,不過要通過程序表達還是要經過一些變換,在這里假設舵機初始位置的值是x,舵機要運行到目標位置y,在設置個變量a讓他初始時0,x+(y-x)*a/100就是我們要送入的舵機位置信息,開始的時候a是0所以送入的數據是x,舵機還在初始位置,這時候我們每隔固定的時間就對a+1,隨著a的變化舵機位置逐步從初始位置向目標位置靠近,到a=100的時候完全到達目標位置停止a的自加。但是由于x+(y-x)*a/100的公式中大量的引入了x,你會發(fā)現(xiàn)寫程序還是不是那么好控制,我的最終的速度控制程序又對這個公式進行了變換y-(y-x)*(100-a)/100這個公式也是隨著a的自加會使得送入的信息逐步到達目標位置。兩個公式都可以實現(xiàn),但是相比較第二個程序到時候會相對簡單。
本文引用地址:http://cqxgywz.com/article/201612/324196.htm在寫程序的時候有時候我們不光要考慮程序語句的正確性,有時候還要考慮單片機的處理能力,比方說a=(0x01<<16)>>16這個語句沒有錯誤,理論上a應該最后還是等于1但是把他下載到51單片機當中就不是那么回事了,因為在向右移動16位的過程中,51沒有16位的高位來儲存數據,所需信息會有打失,最后的結果會是a=0,我也是在寫程序的時候發(fā)現(xiàn)了這個問題,只是想說明在涉及運算的時候要考慮單片機處理能力。x+(y-x)*a/100就是對舵機在初始位置到目標位置的轉化過程進行了100微分,本來還想進行1000微分的了,但是發(fā)現(xiàn)100微分就已經完全足夠了,而且100的時候程序計算過程設計的不合理就會出現(xiàn)超出運算能力而出錯的情況。
有朋友問我我的舵機控制速度程序是什么原理,所以寫篇小文章介紹下,大家互相交流學習 呵呵
下面是舵機的單片機程序:
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


評論