亿加合和智能车制作

标题: 智能车舵机 [打印本页]

作者: 星雨    时间: 2010-4-7 23:10
标题: 智能车舵机
基于单片机的舵机控制方法具有简单、精度高、成本低、体积小的特点,并可根据不同的舵机数量加以灵活应用。
   在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。
   舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电 压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的 正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动
  

舵机的控制信号是PWM信号 (原文件名:2.JPG)

图1  舵机的控制要求

  舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图1所示。
单片机实现舵机转角控制
   可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂。对于脉宽调制信号的脉宽变换,常用的一种方法是采用调制信号获取 有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放器件的选择有较高要求,从电路体积和功耗考虑也不易采用。5mV以上的控制电 压的变化就会引起舵机的抖动,对于机载的测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波电路的精度难以达到舵机的控制精度要求。
   也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信 号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。
   单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。
   当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。
   具体的设计过程:例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定 时器在2ms后发生中断,中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电 平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机。用修改定时器中断初值的方法巧妙形成了脉冲信号,调整时间段的宽度 便可使伺服机灵活运动。
   为保证软件在定时中断里采集其他信号,并且使发生PWM信号的程序不影响中断程序的运行(如果这些程序所占用时间过长,有可能会发生中断程序还未结束,下 次中断又到来的后果),所以需要将采集信号的函数放在长定时中断过程中执行,也就是说每经过两次中断执行一次这些程序,执行的周期还是20ms。
作者: hycool    时间: 2010-5-21 13:38
太好了
作者: asd009    时间: 2010-7-28 18:17
别的地方抄来的吧...未有消化啊...
作者: 尼古拉斯    时间: 2010-8-2 15:22
真是好动下
作者: 尼古拉斯    时间: 2010-8-2 15:22
真是好东西啊
作者: apple张    时间: 2010-11-28 23:08
嗯,好。。。。
作者: RKK    时间: 2011-5-1 15:37
还好
作者: sophiayan1989    时间: 2011-5-1 21:01
thanks
作者: sophiayan1989    时间: 2011-5-1 21:01
thanks
作者: prince_rong    时间: 2011-5-6 15:25
谢啦
作者: wolflsh    时间: 2011-5-6 20:33
还好。
作者: 李武军    时间: 2011-8-31 08:43
good job!
作者: 海驹    时间: 2011-10-6 00:02
thank you
作者: liehuzuo    时间: 2019-7-8 19:25
真是好东西




欢迎光临 亿加合和智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2