您当前的位置: 首页 >  单片机

舵机控制激光头(51单片机)

发布时间:2020-04-27 12:33:36 ,浏览量:7

舵机控制激光头
  • 介绍
    • 什么是舵机
    • 原理
    • 转动方法
    • 实现方法
  • 编程实例
    • 定义变量类型,管脚
    • 定时器初始化
    • 定时器中断函数
    • 主函数
  • 结尾
介绍 什么是舵机

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。

原理
  1. 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

2.连线

橙色—————————–信号线

红色—————————–VCC

棕色—————————–GND 3. 占空比 舵机占空比 占空比 = t / T; 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。想要控制舵机,那么我们就需要一个周期T = 20ms。高电平小t等于0.5ms-2.5ms之间的这样一个方波。

转动方法

以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2.0ms-----------135度; 2.5ms-----------180度; 这只是一种参考数值,具体的参数,请参见舵机的技术参数。 我们在开发过程中,会发现因为舵机的型号不同,舵机的优劣不同,加上你的单片机晶振时钟的缘故,导致相应时间的角度实际情况会有一定的偏差。

实现方法

C51单片机PWM来调节控制它,对于T = 20ms 。我们可以使用定时器来计数。每次0.1ms。如果计数达到200则说明一个周期到了。这是我们常用的定时器方法。 以我们常用的12MHz和11.0592MHz晶振为例: (方式1) 11.0592MHz晶振——0.1ms THx = 0xff,TLx = 0xa3

12.0000MHz晶振——0.1ms THx = 0xff,TLx = 0x9c

编程实例 定义变量类型,管脚
#include #include//自己编写的延时函数放在这里,你们只需要自己写个延时函数就行了 sbit DJ_PWM=P0^0; sbit JG=P0^7;//低电平发光 typedef unsigned char u8; typedef unsigned int u16; u8 t=0,g=5;
定时器初始化
void dingshi_Init() { TMOD &= 0x00; //置零 TMOD |= 0x01; //TMOD=0x01;定时器0方式1  TH0 = 0xff; //赋初值0.1ms TL0 = 0x9c; //晶振12M ET0 = 1; //定时计数器0溢出中断允许控制位置1 TR0 = 1; //打开定时计数器0 EA=1; //总中断允许 }
定时器中断函数
void Time_Init() interrupt 1 { TR0=0;//关闭定时器中断 //因为是定时器方式1,所以需要在这里初值重装 TH0 = 0xff; //赋初值0.1ms TL0 = 0x9c; //晶振12M if(t<=g) { DJ_PWM=1; } else { DJ_PWM=0; } t++; if (t>=200)//T=20MS清零 { t=0; } TR0=1;//开启定时器中断 }
主函数
void main() { dingshi_Init(); while(1) { JG=0;
   g=3;//因为我的0度大致在这里,你们可以自己测试 t=0; delay(2000); g=11;//90度 t=0; delay(2000); g=20;//180 t=0; delay(2000); } }
结尾

如果在后续想学习很多项目实例,比如蓝牙控制舵机。遥控激光赛车,都可以关注我的 项目实战 栏目。欢迎大家交流。

关注
打赏
1688896170
查看更多评论

暂无认证

  • 7浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0530s