智能车学习(十四)——舵机学习
2015-12-07 13:59
323 查看
一、舵机基础知识
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); } } } }
相关文章推荐
- 从今天开始—兄弟连IT教育
- java泛型程序设计——定义简单泛型类+泛型方法
- 音频、视频播放时属性、事件等操作
- UIImageView-播放序列图(简单的动画效果实现)
- 重定向跳出父Frame
- android之进度条
- JDBC连接数据库中CallableStatement执行有参存储过程及注解其他
- c++ std::bind 基本用法
- 软件工程学概述
- JDK的下载地址
- Linux 下Can的配置
- git删除分支
- Linux 网络通信之广播
- LeetCode - 3Sum Closest
- vs 生成pdb调试
- 【Android学习之道】 图片手势放大
- 改变自己—兄弟连IT教育
- 面向对象编程。
- weblogic 包加载与冲突等问题
- 17个提升iOS开发效率的必用工具