技术文档

单片机控制舵机电路图 使用8051单片机控制舵机

小编 2024-11-24 技术文档 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);

}

}

}

舵机直流电机控制原理

本文简单介绍在舵机中的直流电机控制原理和方法。下图是控制器原理图,单片机选择stm32f030,驱动选择fm116b,ldo为lp2992,这个可以任意选择兼容的芯片,电压反馈端用tl431进行分流稳压,确保反馈电阻器供电电压的稳定。

舵机的工作原理很简单,处理器实时获取电阻器的ADC值来计算获得当前的角度,如果与预期的角度一致,就不做任何操作,保持当前状态;如果与预期角度不同,就计算出当前角度与预期角度的差值,然后通过PID算法计算出控制量,根据控制量输出PWM控制电机旋转,随着电机旋转,实时角度会越来越接近预期值,控制输出也会越来越小,直到最后为0,就转到了预期的位置。

本方案通过I2C接口获取控制命令,可以实现比传统模拟方式更多的功能。

PWM1和PWM2控制电机转速和方向,当PWM1输出高电平而PWM2输出低电平就是正转,反之就是反转,如果二者都输出低电平就停止。

ADC值需要标定,确定舵机角度为0和180时的ADC采样值,这样才能通过比例计算出任意ADC值对应的角度。

PID这里,ADC得到的角度减去预期角度就是角度差,乘以比例系数构成比例项;角度差的和乘以积分系数构成积分项,积分项要设置上限,防止该值过大影响响应速度;本次角度差与上一次的角度差的差乘以微分系数构成微分项(这里用固定的时间采样,dt固定,故不需要计算变化率了)。三者之和就是预期的输出值,再根据输出限制得到最终的输出值,该值可正可负,注意变量选取要合适。

具体的代码可以查看:

https://github.com/gcrisis/ElectronBot/tree/trans_blocking/2.Firmware/ServoDrive-fw-ll

相关问答

如何用 单片机控制 大扭力 舵机 ?

控制大扭力舵机需要先通过单片机控制驱动电路,将电信号转换为直流电机所需的电平。然后,通过单片机控制舵机的正反转以及转速,从而实现对舵机的控制。此外,为...

sg90 舵机 的三根线怎么接?

SG90舵机的三根线分别是红色、棕色和橙色。红色线接正极,棕色线接负极,橙色线接PWM信号输出口。大多数情况下,PWM信号输出口需要连接到单片机或其他控制板上,...

51 单片机 怎么调整 舵机 初始位置?

回答如下:1.首先,将舵机的信号线连接到单片机的一个PWM输出引脚上。2.编写程序,使用PWM输出引脚控制舵机旋转到期望的初始位置。具体方法是,设置PWM输出引...

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

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

船用 舵机 不好用怎么办?

1.电源电压不足:这个原因是最常见的情况,很多PIXHAWK爱好者希望外接一个舵机,发现遥控器映射好通道后,直接插上舵机是不转的,主要原因就是舵机的供电电压不足...

单片机 寻迹什么意思?

单片机寻迹是指利用单片机控制系统来实现对特定路径的跟踪和追踪。通常使用红外传感器或光电传感器来检测路径上的标记或线条,然后通过单片机的程序控制电机或...

我有一个梦想是做智能机器人,需要怎么做?

当然来得及!首先你有这样的梦想,又肯努力去追求,就没有什么做不成的!学过单片机,尝试用舵机控制板做六足机器人,这就是做机器人的一个很好的基础。A如...

单片机 智能小车pmw?

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

舵机 是什么呢?

舵机是一种电机设备,也被称为伺服电机,主要用于调节机械设备的角度和方向。该设备由电机、减速器、控制电路和三线舵盘组成。舵机的工作原理是通过输入电信号...

在座的同志!可以推荐一下!!蚌埠靠谱的机器人编程培训,机...

[回答]机器人舵机什么是舵机:在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的...

猜你喜欢