PWM波控制舵机总结
文章转自:http://www.geek-workshop.com/thread-70-1-1.html
一、关于舵机:
舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。
舵机的形状和大小多的让人眼花缭乱,大致可以分为下面这几种(如图所示)
最右边的是常见的标准舵机,中间两个小的是微型舵机,左边魁梧的那个是大扭力舵机。图上这几种舵机都是三线控制。
制作机器人常用的舵机有下面几种,而且每种的固定方式也不同,如果从一个型号换成一个型号,整个机械结构都需要重新设计。
第一种是MG995,优点是价格便宜,金属齿轮,耐用度也不错。缺点是扭力比较小,所以负载不能太大,如果做双足机器人之类的这款舵机不是很合适,因为腿部受力太大。做做普通的六足,或者机械手还是不错的。
第二种是SR 403,这款舵机是网友xqi2因MG995做双足机器人抖动太厉害,摸索找到的,经过测试。制作双足机器人不错~~~至少不抖了。优点是扭力大,全金属齿轮,价格也还算便宜。缺点嘛。。。做工很山寨。。。其他缺点等待反馈
第三种就是传说中的数字舵机AX12+,这个是久经考验的机器人专用舵机。除了价格高,使用RS485串口通信(控制板就得换数字舵机专用控制板),其他都是优点。
下图是一个普通模拟舵机的分解图,其组成部分主要有齿轮组、电机、电位器、电机控制板、壳体这几大部分。
电机控制板主要是用来驱动电机和接受电位器反馈回来的信息。电机嘛,动力的来源了,这个不用太多解释。电位器这里的作用主要是通过其旋转后产生的电阻的变化,把信号发送回电机控制板,使其判断输出轴角度是否输出正确。齿轮组的作用主要是力量的放大,使小功率电机产生大扭矩。
舵机底壳拆开后就可以看到,主要是电机与控制板
控制板拿起来后下方是与控制板连接的电位器
从顶部来看电机与电位器,与电机齿轮直接相连的为第一级放大齿轮。
经过一级齿轮放大后,再经过二、三、四级放大齿轮,最后再通过输出轴输出。
通过上面两图可以很清晰的看到,本舵机是4级齿轮放大机构,就是通过这么一层层的把小的力量放大,使得这么一个小小的电机能有15KG的扭力。
二、舵机控制方法:
舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。脉冲的参数有最小值,最大值,和频率。一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。这个基准信号定义的位置为中间位置。舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是1.5ms。如下图:
角度是由来自控制线的持续的脉冲所产生。这种控制方法叫做脉冲调制。脉冲的长短决定舵机转动多大角度。例如:1.5毫秒脉冲会到转动到中间位置(对于180°舵机来说,就是90°位置)。当控制系统发出指令,让舵机移动到某一位置,并让他保持这个角度,这时外力的影响不会让他角度产生变化,但是这个是由上限的,上限就是他的最大扭力。除非控制系统不停的发出脉冲稳定舵机的角度,舵机的角度不会一直不变。
当舵机接收到一个小于1.5ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。接收到的脉冲大于1.5ms情况相反。不同品牌,甚至同一品牌的不同舵机,都会有不同的最大值和最小值。一般而言,最小脉冲为1ms,最大脉冲为2ms。如下图:
三、小总结:
首先是舵机的引线,一般为三线控制(没有接触过不是三线的),红色为电源,棕色为地,黄色为信号。控制舵机的时候,需要不断的给PWM波才能使得舵机在某个角度有扭矩。
关于舵机的控制程序,我的上一篇博文:SEM32之PWM波形输出配置总结 有进行介绍。只需要改变PWM波的占空比就可以改变舵机的转动角度了。
PWM波控制舵机总结的更多相关文章
- 使用引脚模拟PWM波控制引脚
/********************************* 代码功能:输出PWM波控制引脚 使用函数: 创作时间:2016*10*07 作者邮箱:jikexianfeng@outlook.c ...
- 进阶之路(基础篇) - 005 模拟PWM波控制引脚
/********************************* 代码功能:输出PWM波控制引脚 使用函数: 创作时间:2016*10*07 作者邮箱:jikexianfeng@outlook.c ...
- STM32F103定时器输出PWM波控制直流电机
这个暑假没有回家,在学校准备九月份的电子设计竞赛.今天想给大家分享一下STM32高级定时器输出PWM波驱动直流电机的问题.. 要想用定时器输出的PWM控制直流电机,,首先要理解“通道”的概念..一个定 ...
- 【.NET 与树莓派】控制舵机
不管是小马达,还是大马达,嗯,也就是电机,相信大伙伴们也不会陌生.四驱车是一种很优秀的玩具,从老周小时候就开始流行(动画片<四驱兄弟>估计很多大朋友都看过),直到现在还能看到很多卖四驱车的 ...
- 定时器同步+触发三ADC采样+输出6路PWM波
为了熟悉定时器定时器和ADC 用STM32F407DIS做了一个简单的工程: 通过高级定时器TIM1溢出更新时间作为触发输出信号(TRGO),触发TIM8开始计数: 同时TIM1的通道1.2.3以及分 ...
- [ZigBee] 13、ZigBee基础阶段性回顾与加深理解——用定时器1产生PWM来控制LED亮度(七色灯)
引言:PWM对于很多软件工程师可能又熟悉又陌生,以PWM调节LED亮度为例,其本质是在每个周期都偷工减料一些,整体表现出LED欠压亮度不同的效果.像大家看到的七色彩灯其原理也类似,只是用3路PWM分别 ...
- stm32cube--通用定时器--产生pwm波
看了通用定时器的资料,发现内容挺多,挺难看懂,现在还是先掌握使用方法,以后再多看几遍吧. ① ② ③生成mdk工程后,在main.c的while(1)前面加上HAL_TIM_PWM_Start(&am ...
- STM32 PWM波
利用STM32产生占空比可以调节的PWM波 科普:pwm(Pulse Width Modulation)脉宽调制 关于pwm波的产生:1.首先来看一下代码: pwm波模式的相关配置(利用的是定时器TI ...
- STM32高级定时器TIM1产生两路互补的PWM波(带死区)
测试环境:Keil 5.20.0.0 STM32F103RBT6 固件库版本:STM32F10x_StdPeriph_Lib_V3.5.0(2011) 本文使用TIM1的通道1,通道2,产生两路1kh ...
随机推荐
- 自动化测试第一季-selenium + python(环境搭建与基础代码解释)
# coding = utf-8 %%%%%%%%%%%%%%%%防止乱码(可加可不加) from selenium import webdriver ...
- springmvc spring mybatis插入mysql中文乱码
springmvc 插入mysql数据库中文乱码问题: 1.将页面中的编码改成utf-8 2.用SQLyog右击->改变数据库 以上两步可以保证页面数据编码一致 3.在mybatis连接的地方加 ...
- iOS 开发 常用的正则验证表达式:电话 、邮箱等等
#pragma mark - 验证手机号 +(BOOL)checkForMobilePhoneNo:(NSString *)mobilePhone{ NSString *regEx = @" ...
- Exception Type & Exception Code
1.Exception Type 1)EXC_BAD_ACCESS 此类型的Excpetion是我们最长碰到的Crash,通常用于访问了不改访问的内存导致.一般EXC_BAD_ACCESS后面的&qu ...
- sql 事物以及回滚
第一种: Begin Try Begin Tran Tran1 insert into t1(Id, c1) values(1,'1') insert into t1 ...
- error-2016-2-15
错误:该请求包含双重转义序列,而 Web 服务器上配置的请求筛选拒绝双重转义序列原因:一些URL中可能会包含+号等符号,然后IIS7以上的版本会默认拒绝请求此URL,需要进行如下的修改. 解决PHP中 ...
- SHOPNC占用CPU过高
今天一个SHOPNC商城突然变慢,查看服务器情况,发现MYSQL占用181%CPU,然后查看PHP慢查询,发现这样的内容 [22-Nov-2016 20:55:41] [pool www] pid 5 ...
- openssl和Java的keytool证书相关的命令总结
Java的keytool keytool -genkey -alias myserver -keyalg RSA -keysize -keystore oauth-server.keystore -v ...
- Qt4.8.5 QtWebKit QWebView 用户栈检查崩溃问题的思考
最近在项目中,发现在使用Qt4.8.5 提供的QWebView与网页交互的时候, m_pWebView->page()->mainFrame()->evaluateJavaScrip ...
- 关于SharpZipLib压缩分散的文件及整理文件夹的方法
今天为了解决压缩分散的文件时,发现想通过压缩对象直接进行文件夹整理很麻烦,因为SharpZipLib没有提供压缩进某个指定文件夹的功能,在反复分析了SharpZipLib提供的各个接口方法后,终于找到 ...