這類舵機的轉向跟頻率和占空比相關,兩者缺一不可!
1、在一個特定的頻率下,特定的占空比使得舵機會轉到一個角度,占空比不變,則角度不會不會變化,所以想要舵機動,就要在國定的頻率下不斷改變占空比。
2、當頻率改變時,占空比的比值也要改變,這根第1點的占空比不一樣了。那到底頻率和占空比是怎樣的取值,不僅僅要看舵機的文檔資料(理論),另外還要用戶信號源輸出
頻率和占空比給舵機(實際),找到舵機轉向角度/位置下的合適的頻率值和占空比值。
3、以下的是兩個舵機在其相應的信號來時,轉向90°的單片機程序。模擬轉向,不是精確的哈,主要是能夠表達出頻率不變時,一個占空比值對應一個舵機角度/位置。
#include <reg52.h>
sbit duoji_1 = P2^7;
sbit duoji_2 = P2^0;
sbit xinhao_1 = P3^4;
sbit xinhao_2 = P3^5;
void aa(unsigned char i) //延時i個ms
{
unsigned char j,k;
for(;i>0;i--)
for(j=2;j>0;j--)
for(k=245;k>0;k--);
}
void main(void)
{
while(1)
{
if(!xinhao_1)
{
duoji_1 = 0;
aa(19);
duoji_1 = 1;
aa(2);
duoji_1 = 0;
aa(19);
duoji_1 = 1;
aa(2);
}
else
{
duoji_1 = 0;
aa(19);
duoji_1 = 1;
aa(1);
duoji_1 = 0;
aa(19);
duoji_1 = 1;
aa(1);
}
if(!xinhao_2)
{
duoji_2 = 0;
aa(19);
duoji_2 = 1;
aa(2);
duoji_2 = 0;
aa(19);
duoji_2 = 1;
aa(2);
}
else
{
duoji_2 = 0;
aa(19);
duoji_2 = 1;
aa(1);
duoji_2 = 0;
aa(19);
duoji_2 = 1;
aa(1);
}
}
}
sbit duoji_1 = P2^7;
sbit duoji_2 = P2^0;
sbit xinhao_1 = P3^4;
sbit xinhao_2 = P3^5;
void aa(unsigned char i) //延時i個ms
{
unsigned char j,k;
for(;i>0;i--)
for(j=2;j>0;j--)
for(k=245;k>0;k--);
}
void main(void)
{
while(1)
{
if(!xinhao_1)
{
duoji_1 = 0;
aa(19);
duoji_1 = 1;
aa(2);
duoji_1 = 0;
aa(19);
duoji_1 = 1;
aa(2);
}
else
{
duoji_1 = 0;
aa(19);
duoji_1 = 1;
aa(1);
duoji_1 = 0;
aa(19);
duoji_1 = 1;
aa(1);
}
if(!xinhao_2)
{
duoji_2 = 0;
aa(19);
duoji_2 = 1;
aa(2);
duoji_2 = 0;
aa(19);
duoji_2 = 1;
aa(2);
}
else
{
duoji_2 = 0;
aa(19);
duoji_2 = 1;
aa(1);
duoji_2 = 0;
aa(19);
duoji_2 = 1;
aa(1);
}
}
}