这类舵机的转向跟频率和占空比相关,两者缺一不可!
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);
}
}
}