产品选型

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

小编 2024-10-25 产品选型 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 单片机 哪个引脚可以 连接舵机 ?

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

松果林gs1603金属 舵机 怎么接?

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

为什么发明 舵机 ?

舵机工作原理1、概述舵机最早出现在航模运动中。在航空模型中,飞行机的飞行姿态是通过调节发动机和各个控制舵面来实现的。举个简单的四通飞机来说,飞机上...

工业 舵机 怎么控制?

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

单片机 开发板跟 舵机 多路控制板是什么概念?

[回答]舵机多路控制板属于单片机的一种应用咯,开发板也可以开发那个四强科技专业、专注、专一为客户提供方案和芯片或者PCBA产品供应、提供选型指导、提...

关于 舵机 怎么减少 舵机 抖动啊?是不是在它复位状态时(不断电)...

[最佳回答]舵机抖动一般是因为干扰信号造成的.尤其是在发射机关闭的时候,接收机的输出乱码很严重,我曾经对日本的4VF做过测试验证过了.你看看下面的文章航模...

单片机 智能小车pmw?

不需要单独的PWM模块,仅靠单片机和电机驱动(L298N)足够了。具体是在程序中用单片机的IO口模拟出PWM信号来,也就是控制IO口输出的高低电平的时间,利用不同时...

想学习 单片机 ,有什么好的书籍推荐?

五年之前那是在大学期间,距离现在大约有4年了吧,教我们单片机的老师要离我们而去了,因为她要去她的城市教书去了。怎么形容她呢?那是一个风度翩翩,很有才华...2...

普通的IO口为什么可以模拟PWM信号?

PWM英文全拼就是PlUSEWIDTHMODE也就是脉冲宽度调制。它的参数就是有频率和占空比,当然还有峰值电压。然而单片机的IO口,一般都具有高低电平输出的功能。然而...

单片机 如何才能算掌握好?

对于题主的困惑,想要深入单片机,学得更明白的话,谈谈我是怎么做的吧。1.51入门单片机很好,已经明白寄存器原理就OK,说明程序中的代码对IO口在做什么事情至...

猜你喜欢