智能车学习(十四)——舵机学习
一、舵机基础知识
1、定义
舵机简单的说就是集成了直流电机、电机控制器和减速器等,并封装在一个便于安装的外壳里的伺服单元。能够利用简单的输入信号比较精确的转动给定角度的电机系统。
舵机安装了一个电位器(或其它角度传感器)检测输出轴转动角度,控制板根据电位器的信息能比较精确的控制和保持输出轴的角度。这样的直流电机控制方式叫闭环控制,所以舵机更准确的说是伺服马达,英文servo。
2、舵机组成
3、工作原理
控制电路接收信号源的控制信号,并驱动电机转动;齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍数,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动角度;电路板检测并根据电位器判断舵机转动角度,然后控制舵机转动到目标角度或保持在目标角度。
二、舵机的规格
1、转速:
(1)定义:转速由舵机无负载的情况下转过60°角所需时间来衡量。
(2)一般在0.11S/60°~0.21S/60°之间。
2、转矩
(1)定义:舵机扭矩的单位是KG·CM,这是一个扭矩单位。可以理解为在舵盘上距舵机轴中心水平距离1CM处,舵机能够带动的物体重量。
3、电压
厂商提供的速度、转矩数据和测试电压有关,在4.8V和6V两种测试电压下这两个参数有比较大的差别。如Futaba S-9001 在 4.8V 时扭力为 3.9kg、速度为 0.22 秒,在 6.0V 时扭力为 5.2kg、速度为 0.18 秒。若无特别注明,JR 的舵机都是以 4.8V 为测试电压,Futaba则是以 6.0V 作为测试电压。
三、模拟舵机及其控制原理
1、工作原理
工作原理是控制电路接收信号源的控制脉冲,并驱动电机转动;齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍数,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动角度;电路板检测并根据电位器判断舵机转动角度,然后控制舵机转动到目标角度或保持在目标角度。
2、控制信号
舵机的控制脉冲周期20ms,脉宽从0.5ms-2.5ms,分别对应-90度到+90度的位置。如下图所示:
四、使用PWM控制舵机输出
在main函数中的测试代码
#include "include.h" #include "init.h" #include "OLED.h" #include "menu.h" #include "keySquare.h" void main() { DisableInterrupts; system_init(); EnableInterrupts; u16 duty = 450; FTM_PWM_init(FTM2,CH0,50,duty); OLED_Write_Int(0,0,duty); while(1) { if(keyBoard_get() == Keynum1) { time_delay_ms(100); if(keyBoard_get() == Keynum1) { duty += 10; FTM_PWM_Duty(FTM2,CH0,duty); OLED_Clear(); OLED_Write_Int(0,0,duty); time_delay_ms(100); } } if(keyBoard_get() == Keynum2) { time_delay_ms(100); if(keyBoard_get() == Keynum2) { duty -= 10; FTM_PWM_Duty(FTM2,CH0,duty); OLED_Clear(); OLED_Write_Int(0,0,duty); time_delay_ms(100); } } } }