PS2小车—舵机基本原理

简介:   最近几年国内机器人开始起步发展,很多高校、中小学都开始进行机器人技术教学。小型的机器人、模块化的机器人、组件式的机器人是教学机器人的首选。在这些机器人产品中,舵机是很关键,使用较多的部件。根据控制方式,舵机应该称为微型伺服马达。早期在模型上使用最多,主要用于控制模型的舵面,所以俗称舵机。舵机接受一个简单的控制指令就可以自动转动到一个比较精确的角度,所以非常适合在关节型机器人产品使用。

@[TOC]
  最近几年国内机器人开始起步发展,很多高校、中小学都开始进行机器人技术教学。小型的机器人、模块化的机器人、组件式的机器人是教学机器人的首选。在这些机器人产品中,舵机是很关键,使用较多的部件。根据控制方式,舵机应该称为微型伺服马达。早期在模型上使用最多,主要用于控制模型的舵面,所以俗称舵机。舵机接受一个简单的控制指令就可以自动转动到一个比较精确的角度,所以非常适合在关节型机器人产品使用。

1.舵机的结构

  舵机简单的说就是集成了直流电机、电机控制器和减速器等,并封装在一个便于安装的外壳里的伺服单元。能够利用简单的输入信号比较精确的转动给定角度的电机系统。舵机安装了一个电位器(或其它角度传感器)检测输出轴转动角度,控制板根据电位器的信息能比较精确的控制和保持输出轴的角度。这样的直流电机控制方式叫闭环控制,所以舵机更准确的说是伺服马达,英文servo

  舵机的主体结构如图所示,主要有几个部分:外壳、减速齿轮组、电机、电位器、控制电路。简单的工作原理是控制电路接收信号源的控制信号,并驱动电机转动;齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍数,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动角度;电路板检测并根据电位器判断舵机转动角度,然后控制舵机转动到目标角度或保持在目标角度。
  舵机的外壳一般是塑料的,特殊的舵机可能会有金属铝合金外壳。金属外壳能够提供更好的散热,可以让舵机里面的电机运行在更高功率下,以提供更高的扭矩输出。金属外壳也可以提供更牢固的固定位置。舵机的齿轮箱有塑料齿轮、混合齿轮、金属齿轮的差别。塑料齿轮成本底,噪音小,但强度较低;金属齿轮强度高,但成本高,在装配精度一般的情况下会有很大的噪音。小扭矩舵机、微舵、扭矩大但功率密度小的舵机一般都用塑料齿轮,如Futaba3003,辉盛的9g微舵。金属齿轮一般用于功率密度较高的舵机上,比如辉盛的MG995舵机,在和3003一样体积的情况下却能提供13KG的扭矩。Hitec甚至用钛合金作为齿轮材料,其高强度能保证3003大小的舵机能提供20几公斤的扭矩。混合齿轮在金属齿轮和塑料齿轮间做了折中,在电机输出减速箱扭矩不大的部位,用塑料齿轮。

2.舵机的规格和选型

2.1舵机转速

  转速由舵机无负载的情况下转过60°角所需时间来衡量,常见舵机的速度一般在0.11s/60°-0.21s/60°之间。

2.2 舵机扭矩

  舵机扭矩的单位是KG·CM,这是一个扭矩单位。可以理解为在舵盘上距舵机轴中心水平距离1CM处,舵机能够带动的物体重量。

2.3工作电压

  厂商提供的速度、转矩数据和测试电压有关,在4.8V和6V两种测试电压下这两个参数有比较大的差别。如MG995在4.8V时速度为0.17秒,在6.0V时速度为0.13秒。舵机的工作电压对性能有重大的影响,舵机推荐的电压一般都是4.8V或6V。当然,有的舵机可以在7V以上工作,比如12V的舵机也不少。具体更加较高的电压可以提高电机的速度和扭矩。选择舵机还需要看我们的控制板所能提供的电压。

2.4尺寸、重量和材质

  舵机的功率(速度×转矩)和舵机的尺寸比值可以理解为该舵机的功率密度,一般同样品牌的舵机,功率密度大的价格高。塑料齿轮的舵机在超出极限负荷的条件下使用可能会崩齿,金属齿轮的舵机则可能会电机过热损毁或外壳变形。所以材质的选择并没有绝对的倾向,关键是将舵机使用在设计规格之内。用户一般都对金属制的物品比较信赖,齿轮箱期望选择全金属的,舵盘期望选择金属舵盘。但需要注意的是,金属齿轮箱在长时间过载下也不会损毁,最后却是电机过热损坏或外壳变形,而这样的损坏是致命的,不可修复的。塑料出轴的舵机如果使用金属舵盘是很危险的,舵盘和舵机轴在相互扭转过程中,金属舵盘不会磨损,舵机轴会在一段时间后变得光秃,导致舵机完全不能使用。综上,选择舵机需要在计算自己所需扭矩和速度,并确定使用电压的条件下,选择有150%左右甚至更大扭矩富余的舵机。

3.舵机的工作原理

舵机是一个微型的伺服控制系统,具体的控制原理可以用下图表示:

  工作原理是控制电路接收信号源的控制脉冲,并驱动电机转动;齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍数,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动角度;电路板检测并根据电位器判断舵机转动角度,然后控制舵机转动到目标角度或保持在目标角度。模拟舵机需要一个外部控制器(遥控器的接收机或者单片机)产生脉宽调制信号来告诉舵机转动角度,脉冲宽度是舵机控制器所需的编码信息。舵机的控制脉冲周期20ms,脉宽从0.5ms-2.5ms,分别对应-90度到+90度的位置(对于180°舵机)。
  舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度舵机为例,那么对应的控制关系是这样的:

0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;

如下图所示:

  需要解释的是舵机原来主要用在飞机、汽车、船只模型上,作为方向舵的调节和控制装置。所以,一般的转动范围是45°、60°或者90°,这时候脉冲宽变一般只有1ms-2ms之间(比如你做一个遥控小车,用舵机控制方向,那么舵机转的角度肯定不是180度,对吧。因为你见过你开的车方向能转180度吗?)。而后舵机开始在机器人上得到大幅度的运用,转动的角度也在根据机器人关节的需要增加到-90°至90°之间,甚至还有-135°至135°之间,脉冲宽度也随之有了变化。对与机器人控制而言,我们一般通过单片机产生PWM信号控制舵机。

4.STM32控制舵机代码

0.5ms---------0度
0.6ms---------9度
0.7ms---------18度
0.8ms---------27度
0.9ms---------36度
1.0ms---------45度
1.1ms---------54度
1.2ms---------63度
1.3ms---------72度
1.4ms---------81度
1.5ms---------90度
1.6ms---------99度
1.7ms---------108度
1.8ms---------117度
1.9ms---------126度
2.0ms---------135度
2.1ms---------144度
2.2ms---------153度
2.3ms---------162度
2.4ms---------171度
2.5ms---------180度

\    |    /
 \---|---/   
  \  |  /
   \ | /
    \|/      
--------------------------------------------------------------

20ms的时基脉冲,如果想让舵机转63度,就应该发生一个高电平为1.2ms,
周期为20ms的方波,duty=1.2/20=6% ,而定时器自动重装载寄存器arr的值
为 1000 ,所以令duty=60,时占空比才为60/1000=6%.

20ms的时基脉冲,如果想让舵机转90度,就应该发生一个高电平为1.5ms,
周期为20ms的方波,duty=1.5/20=7.5% ,而定时器自动重装载寄存器arr的值
为 1000 ,所以令duty=75,时占空比才为75/1000=7.5%.

20ms的时基脉冲,如果想让舵机转126度,就应该发生一个高电平为1.9ms,
周期为20ms的方波,duty=1.9/20=9.5% ,而定时器自动重装载寄存器arr的值
为 1000 ,所以令duty=95,时占空比才为95/1000=9.5%.
-----------------------------------------------------------------
void SERVO_Init(void)
{
    GPIO_InitTypeDef  GPIO_InitStruct;
    TIM_TimeBaseInitTypeDef TIM_TimeStructure;
    TIM_OCInitTypeDef   TIM_OCInitStructure;
    
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;//配置为复用推挽输出
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&GPIO_InitStruct); 

    TIM_TimeStructure.TIM_Period=1000;//1000 自动重装载寄存器的值,周期为50 000Hz/1000=50Hz,即输出PWM波形的频率为20ms。
    TIM_TimeStructure.TIM_Prescaler=1440-1;;// 1400 时钟预分频系数为3600,72 000 000Hz/1400=50000Hz =50KHZ。    
    TIM_TimeStructure.TIM_ClockDivision=TIM_CKD_DIV1;
    TIM_TimeStructure.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_TimeStructure.TIM_RepetitionCounter=0;
    TIM_TimeBaseInit(TIM3,&TIM_TimeStructure);
    TIM_ARRPreloadConfig(TIM3,ENABLE);    //使能ARR预装载寄存器(影子寄存器)
    
    TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse=0;//占空比大小
    TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
    TIM_OC2Init(TIM3,&TIM_OCInitStructure);
    
    TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);    
    TIM_Cmd(TIM3,ENABLE);
    TIM_CtrlPWMOutputs(TIM3,ENABLE);    
}
//舵机角度控制
void SERVO_Angle_Control(uint16_t Compare2)
{
    TIM_SetCompare2(TIM3,Compare2);//设置通道2为可变的pwm
}

配置号上面的程序,如果你想让舵机旋转90度,只需要在你程序的某个位置放上这句话就可以了

SERVO_Angle_Control(75);//舵机旋转90度

  原因就是20ms的时基脉冲,如果想让舵机转90度,就应该发生一个高电平为1.5ms,周期为20ms的方波,duty=1.5/20=7.5% ,而定时器自动重装载寄存器arr的值为 1000 ,所以令duty=75,时占空比才为75/1000=7.5%。以此类推,你想让舵机转多大的角度按照这个方法设置就行了。

  获取更多开源项目,请关注微信公众号:果果小师弟

关注微信公众号:[果果小师弟],获取更多精彩内容!
智果芯—服务于百万大学生和电子工程师

相关文章
|
JavaScript 前端开发
JS require 与 import 的区别
JS require 与 import 的区别
866 1
|
Java Maven
IDEA项目编译时报:Warning:java: 源值1.5已过时
Idea中maven项目jdk编译version总是跳到1.5版本解决方案-Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
1609 2
IDEA项目编译时报:Warning:java: 源值1.5已过时
|
9月前
|
缓存 安全 调度
《WebGL纹理加载指南:10个颠覆认知的优化技巧》
本文围绕前端WebGL的纹理加载与管理,分享10个实用技巧。涵盖纹理预加载的分层策略、尺寸选择的隐藏规则、压缩格式的动态适配,以及纹理复用、加载时机控制、内存释放等方面。强调结合场景需求与设备特性,通过精细化调度、智能适配和动态管理,平衡纹理视觉效果与性能,突破加载瓶颈,为WebGL 3D应用打造流畅体验,展现了从技术实现到场景适配的深层优化逻辑。
255 0
|
Kubernetes 搜索推荐 Docker
Kubernetes容器运行时:Containerd vs Docke
Kubernetes容器运行时:Containerd vs Docke
2390 5
|
JSON 小程序 应用服务中间件
微信的接口wxLogin()的返回值都有什么?
【10月更文挑战第4天】微信的接口wxLogin()的返回值都有什么?
1671 1
|
人工智能
🎨 设计师必备!AI Stable Diffusion 提示词神器,让你秒变创意大师!
AI绘图新时代来临,设计师必备工具——**白盒子AI绘图提示词生成器**助你轻松跨越提示词难题。该工具操作简便,支持中英文切换,涵盖近1000个精选提示词,适用于各种风格创作。无论是新手还是专业设计师,都能大幅提升工作效率,快速实现创意构想。网址:[https://www.baihezi.com/ai-painting-prompt](https://www.baihezi.com/ai-painting-prompt)
1181 19
🎨  设计师必备!AI Stable Diffusion 提示词神器,让你秒变创意大师!
|
存储 运维 监控
硬盘检测工具哪个好?
本文评测了五款硬盘检测工具,包括HD Tune Pro(专业全面,适合专家,付费)、CrystalDiskInfo(免费,适合初学者,界面简洁)、DiskGenius(功能强大,免费版有限,适合多任务)、AIDA64 Extreme(详尽硬件信息,性能测试,付费)和HDDScan(免费开源,功能多,界面复杂)。这些工具能检查硬盘健康、SMART信息、坏道、性能等,帮助用户预防数据丢失。根据需求和熟练程度选择合适的工具,定期检测,保障数据安全。
硬盘检测工具哪个好?
|
机器学习/深度学习 数据采集 监控
深度学习之可视化工具
基于深度学习的可视化工具旨在帮助研究人员和实践者更好地理解和解释深度学习模型的行为、性能和决策过程。这些工具通过图形界面和可视化技术,使得复杂的模型和数据变得更为直观和易于理解。
471 0