设计与开发

单片机 舵机 连接 使用8051单片机控制舵机

小编 2024-10-11 设计与开发 23 0

使用8051单片机控制舵机

8051控制舵机

舵机在电子和嵌入式系统中非常有用,由于可以把它旋转到任何特定的角度,所以广泛应用于玩具、机器人、计算机、汽车、飞机等项目中。舵机的适用范围也很广泛,从高扭矩电机到低扭矩电机都有应用。

先简单了解一下舵机的工作原理,舵机主要告靠PWM(脉宽调制)控制,这意味着它的旋转角度是由控制脉冲的持续时间控制制的。舵机基本上由直流电动机组成,而直流电动机由可变电阻(电位器)和一些齿轮控制。直流电机的输出通过齿轮转换成扭矩。电位器连接到舵机的输出轴上,并计算角度,在到达需要的角度时停止直流电机。

舵机角度控制

舵机可旋转0到180度,可以通过1ms到2ms之间的脉冲持续时间来控制这种程度的旋转。1ms可以旋转0度,1.5ms可以旋转90度和2毫秒脉冲可旋转180度。1至2毫秒之间的持续时间可以旋转舵机到0至180度之间的任何角度。

电路原理图:

电路原理图

舵机有三根控制线,红色的VCC(电源),棕色的为GND,橙色是控制线。控制线连接到8051的引脚P2.0。当这个引脚输出高电平1ms,则舵机旋转到0度,输出高电平1.5ms,则舵机旋转到90度,输出高电平2ms,则舵机旋转到180度。函数“servo_delay”使用8051芯片的定时器生成50us延时。

由于使用8051的定时器0模式1,所以在TMOD寄存器中写入0x01。模式1是16位定时器模式,TH0是16位定时器的高字节,TL0是16位定时器的低字节。将0xff写入TH0,将0xd2写入TL0,在11.0592M的晶振下,值0xffd2将使定时器0产生50us延时。TR引脚用于启动定时器,TF是溢出标志,在溢出时由硬件设置标志,需要通过软件重新设置。

C语言代码:

#include<reg51.h>

sbit output=P2^0;

void msdelay(unsigned int time) // 毫秒级延时函数.

{

unsigned i,j ;

for(i=0;i<time;i++)

for(j=0;j<1275;j++);

}

void servo_delay(int times) // 50us整倍延时函数

{

int m;

for(m=0;m<times;m++)

{

TH0=0xFF;

TL0=0xD2;

TR0=1;

while(TF0==0);

TF0=0;

TR0=0;

}

}

void main()

{

int n;

TMOD=0x01; // 选择 Timer 0, Mode 1

output=0;

while(1)

{

for(n=13;n<28;n=n+2)

{

output=1;

servo_delay(n);

output=0;

servo_delay(260);

msdelay(200);

}

}

}

51单片机驱动mg995舵机实践讲解

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机的组成包括一个小型直流电机,加上传感器、控制芯片、减速齿轮组,装进一体化外壳。舵机能够通过输入信号(一般是PWM信号)控制旋转角度。

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以 MG995舵机为例,其对应的控制关系是这样的:

0.5ms--------------0度;

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

PWM,即脉宽调制,控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。

我们学过51单片机后会知道,51单片机不能直接产生PWM信号。但我们了解了PWM的工作原理,我们就可以用51单片机中的定时器将PWM信号给模拟出来。

首先我们需要对51单片机的定时器初始化,设定定时器中端和定义模拟输出PWM信号的引脚。设定51单片机定时器周期为0.5ms,定义变量count统计计时时间,当计时达到20ms后重新计时,这样我们就得到了舵机的运行周期。

我们将编好的程序下载到51单片机中,连接好舵机,程序运行后我们会发现舵机的转动十分缓慢,这是什么原因导致的呢?

我们通过查阅手册可以知道,舵机的工作电压在4.8V—6V,51单片机输出电压为5V,在理论上肯定能带动舵机,但还是要以实际情况为准。根据编者自身实践经验来说,用51单片机驱动MG995舵机时还是选用3.3V工作电压较好,此时舵机能够正常转动而不会缓慢抖动。当然,选用3.3V电压驱动舵机仅限于编者自身实践的经验。如果在程序无错误的情况下用5V电压驱动MG995舵机,舵机不能正常运转时,不妨试一下用3.3V电压驱动舵机。

相关问答

51 单片机 ,和, 舵机 怎么连线?

舵机一般有3条线,分别是电源正、电源负、信号线。电源正极线一般为红色或橙色,连接+5V(单片机电源正)【有的舵机为6V供电】电源负极线一般为黑色,连接GND(单片...

51 单片机 哪个引脚可以 连接舵机 ?

51单片机PWM输出引脚可以连接舵机51单片机PWM输出引脚可以连接舵机

在智能车上加装 舵机 ,需要一个 舵机 驱动模块吗?

航模上使用的舵机,一般都是PWM控制的,安装舵机,当然得有舵机控制电路了。航模上PWM控制基本都是单片机控制的(少数是模拟电路做的),如果单片机的驱动能力...

如何控制数字 舵机 ?

用51编写指令,一定要注意指令格式,在通过串口输出给CDS5516的信号线,电源地单供,即可控制数字舵机。数字舵机区别于传统的模拟舵机,模拟舵机需要给它不停的...

工业 舵机 怎么控制?

工业舵机可以通过控制器或者单片机来控制。首先需要将工业舵机与控制器或单片机进行连接,然后在程序中设置舵机角度值,发送给控制器或单片机,控制器或单片机将...

怎么用51 单片机 控制4个 舵机 工作,有程序的更好?

模拟输出4路PWM即可网上程序很多搞清楚舵机的控制信号就行了舵机的控制信号为周期为20ms高电平时间为1ms-2ms(不同型号时间可能会有微小差别)的pwm信号...

单片机 控制 舵机 自动来回不停转动程序?

要实现单片机控制舵机自动来回不停转动,可以使用循环控制结构。首先,设置舵机初始位置,然后使用一个循环结构,让舵机从初始位置逐渐转动到一个极限位置,再返...

怎样用温度传感器来控制 舵机 左右摆动?

温度传感器可以检测环境温度的变化并将其转化为电信号。可以将其与单片机或微控制器相连,通过编程控制舵机的左右摆动。例如,将温度传感器与Arduino连接并编...

单片机 控制 舵机 电压不够怎么办?

单片机控制舵机电压不够,有可以是使用L298N对stm32供电导致电压不稳,可以取消L298N对stm32供电,用其他稳定电源对stm32供电,即可解决单片机控制舵机电压不够,...

舵机 在不同角度停止转动的程序?

舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准...

猜你喜欢