打印
[应用方案]

舵机的驱动

[复制链接]
790|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eefas|  楼主 | 2023-11-26 08:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

舵机的控制信号,一般是脉宽调制(PWM)信号,如下图,反映了 PWM 信号和舵机转动角度的关系,可以简单的理解为,通过给舵机通电的时间控制,结合角度传感器的反馈信号检测和控制,实现了舵机的精确角度控制。

舵机的控制信号周期为 20ms 的脉宽调制信号(PWM),其中脉宽从 0.5ms ~ 2.5ms,相应的舵盘位置从 0 ~ 180度,呈线型变化。也就是说,给舵机提供一定的脉宽,输出轴就会保持一定的对应角度,无论外接转矩怎么改变,直到提供另外一个脉冲信号,才会改变输出角度到新的对应的位置上。

舵机内部有一个基准电路,产生周期为 20ms,宽度为 1.5ms 的脉冲信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。

伺服电动机的周期通常为 20ms,希望以 50Hz 的频率产生脉冲。

180 度电机与 360 度电机

360 度舵机与一般舵机的区别是:给一般舵机一个 PWM 信号,舵机会转到一个特定角度,而给 360 度舵机一个 PWM 信号,舵机会以一个特定的速度转动,类似与电机。但与电机不同的是,360 舵机是闭环控制,速度控制稳定。

PWM 信号与 360° 舵机转速的关系:

  • 0.5ms ———— 正向最大转速
  • 1.5ms ———— 速度为 0
  • 2.5ms ———— 反向最大转速

利用 51 单片机驱动舵机

通过上述分析,可以得出 1ms 对应 90°,那么 0.1ms 对应 9°。由于驱动舵机的控制信号周期为 20ms,可以将 20ms 的周期信号分为 200 份,那么 1 份代表 0.1ms,相对应舵机的转角为 9°。

因此,将定时器中断一次的时间设定为 0.1 ms,即定时时间为 0.1ms。采用定时器 1 工作方式 2(8 位初值自动重载)。

  • 计算定时器初值
    • 机器周期 T c y = 12 × 1 / ( 11.0592 × 1 0 6 ) s T_{cy} = 12 × 1 / (11.0592 × 10^6) sTcy​=12×1/(11.0592×106)s 约等于 1.0851 u s 1.0851 us1.0851us
    • 定时时间 t = 0.1 m s t = 0.1mst=0.1ms
    • 计数值 N = t / T c y = 0.1 m s / 1.0851 u s = 92 N = t / T_{cy} = 0.1ms / 1.0851 us = 92N=t/Tcy​=0.1ms/1.0851us=92
    • 装入 THX 和 TLX 的数为:T H X = T L X = 256 − 92 = 164 THX = TLX = 256-92 = 164THX=TLX=256−92=164
  • 代码
void T1_Init(void){        TMOD &= 0x0F;                //设置定时器模式        TMOD |= 0x20;                //设置定时器模式                TH1 = 164;                        //设置定时初始值        TL1 = 164;                        //设置定时重载值        TF1 = 0;                        //清除TF1标志        TR1 = 1;                        //定时器1开始计时}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

2820

帖子

2

粉丝