基于DragonBoard 410c的遥控炮台一之舵机驱动(上)

来源:互联网 发布:springboot sqlserver 编辑:程序博客网 时间:2024/04/28 19:47

一.舵机介绍

1.舵机简介

舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。最早的舵机是船舶上的一种大甲板机械。舵机的大小由外舾装按照船级社的规范决定,选型时主要考虑扭矩大小,通过发送信号,指定输出轴旋转角度。随着科技的发展与开发的需要(航模,微型机器人等),小型的舵机逐渐在市场上出现。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。



图1 舵机种类



图2 舵机内部结构

2.舵机控制原理

舵机的伺服系统由可变宽度的脉冲来进行控制,也就是我们常说的PWM信号,控制线是用来传送脉冲的。脉冲的参数有最小值,最大值,和频率。一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。这个基准信号定义的位置为中间位置。舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是1.5ms。如下图:


图3 PWM



图4 PWM与舵机转角示意图

角度是由来自控制线的持续的脉冲所产生。这种控制方法叫做脉冲调制。脉冲的长短决定舵机转动多大角度。例如:1.5毫秒脉冲会到转动到中间位置(对于180°舵机来说,就是90°位置)。当控制系统发出指令,让舵机移动到某一位置,并让他保持这个角度,这时外力的影响不会让他角度产生变化,但是这个是由上限的,上限就是他的最大扭力。除非控制系统不停的发出脉冲稳定舵机的角度,舵机的角度不会一直不变。
当舵机接收到一个小于1.5ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。接收到的脉冲大于1.5ms情况相反。不同品牌,甚至同一品牌的不同舵机,都会有不同的最大值和最小值。一般而言,最小脉冲为1ms,最大脉冲为2ms。如下:


图5 PWM控制原理

二.PWM介绍

脉冲宽度调制(即PWM)是一种模拟控制方脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。从广义上,PWM跟I2C,SPI,MIPI等接口一样,都属于一种通讯协议。

随着电子技术的发展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等,而在镍氢电池智能充电器中采用的脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而达到控制充电电流的目的。

对舵机的控制,我们只需要最简单的脉宽PWM法即可,即通过改变输入舵机的PWM信号的高电平的脉宽实现对舵机角度的控制。

三.linux舵机驱动(伪)

根据舵机的控制原理,我们只要让DragonBoard 410c发出可调制脉宽的PWM信号就行。然后博主翻了翻410c的手册,发现410c没有带PWM硬件模块尴尬。。。。。。好吧,作为一名创客,咱只能逢山开路------用GPIO口模拟PWM呗,于是有了下面这个简单的测试驱动。

stree.c

  这是这个驱动测试出来的PWM波形,波形效果还不错:


图6 实测PWM波形

 但是这个驱动有也有很大缺点,具体我们在下一章节再细讲。

0 0