360°舵机要如何控制它旋转?

发布网友 发布时间:2022-04-23 03:32

我来回答

4个回答

热心网友 时间:2023-07-10 17:21

360°舵机要如何控制它旋转:
1、控制信号是一种脉宽调制(PWM)信号,凡是微控制器能轻松的产生这种信号。在此文中,常用的Arino开发环境下的微控制器。
2、 脉冲的高电平持续1到2毫秒(ms),也就是1000到2000微秒(µs)。在1000µs时,舵机左满舵。在2000µs时,右满舵。不过可以通过调整脉宽来实现更大或者更小范围内的运动。
3、控制脉冲的低电平持续20毫秒。每经过20毫秒(50次每秒),就要再次跳变为高电平,否则舵机就可能罢工,难以保持稳定。不过要是想让它一瘸一拐的跳舞,倒可以采取这种方法。

热心网友 时间:2023-07-10 17:21

你稍微改动一下。
#include<reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
uint16 sec;
sbit PWM =P0^0;
sbit Button1=P0^1;
sbit Button2=P0^2;
signed int N=0;
/********************************** 延 时 函 数 **********************************/
void delay(uint16 k)
{ uint16 data i,j;
for(i=0;i<k;i++)
{for(j=0;j<121;j++);
}
}
/********************************** T0初 始 化  定 时0.2ms **********************************/
void T0_init(void)
{
TMOD=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
ET0=1;
TR0=1;
EA=1;
}
/********************************** T0中断服务程序PWM初始占空比N/100 PWM输出 **********************************/
void time0(void) interrupt 1
{
TH0=(65536-50)/256;
TL0=(65536-50)%256;
sec++;

if(sec<=N) PWM=1;
else PWM=0;
if(sec>=60) sec=0;
}
/********************************** 主 程 序 **********************************/
void main(void)
{Button1=1;
Button2=1;
T0_init();

while(1)
{
if(Button2==0) //按键控制输出占空比
{
delay(30);
if(Button2==0)
{
N=N-1;
if(N<=0)
N=0;
}
} ;
if(Button1==0) //按键控制输出占空比
{
delay(40);
if(Button1==0)
{
N=N+1;
if(N>=60)
N=60;
}

}
}
}追问刚看到回复,谢谢!
看了一遍程序感觉很奇怪,T0设置为50us定时,60次似乎才3ms,并且高电平输出是在0~3ms变动
和我印象中的值相差很多,明天我试试看,说不定就是因为我记忆的数值完全不正确惹的祸!

顺便提一句,这么短时间的定时,采用8位定时器自动重载技术支持更好,16位误差比较大了。

追答这个程序是控制其他类型的舵机的,不是360度舵机,具体你还的调试,那个程序就是一种思想。
具体你要看舵机的参数。

热心网友 时间:2023-07-10 17:21

航空知识小课堂-如何控制舵面使飞机转弯?

热心网友 时间:2023-07-10 17:22

PWM脉冲实现。看下单片机怎么给脉冲输出的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com