0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

舵机驱动电路原理图_基于AVR单片机的舵机驱动电路详解

h1654155282.3538 2018-05-30 15:17 次阅读

舵机( servo motor),又名伺服电机,主要是由外壳、电路板、马达、减速齿轮和电位器构成。舵机主要适用于那些需要角度不断变化并可以保持的控制系统,比如人形机器人的手臂和腿,车模和航模的方向控制。目前,市面上的成熟的舵机工业产品都来自日本、韩国和我国***地区。本文基于舵机工作的基本原理,选用Atmega8L单片机作为舵机电路板控制芯片,对舵机控制进行了一系列实验,并取得了很好的实验效果。

舵机工作原理

控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

舵机驱动电路原理图_基于AVR单片机的舵机驱动电路详解

基于AVR单片机的舵机驱动电路原理图

1、舵机驱动电路板接受上位机PWM信号对电机控制

舵机的转角范围通常是0到180度,舵机的转角通常由脉宽来控制,一般舵机都会有三根输入线(电源正,地,信号线), PWM信号由信号线输入,上位机产生周期为20ms左右的方波作为输入信号,方波的占空比决定舵机转的角度。如图1所示:

舵机驱动电路原理图_基于AVR单片机的舵机驱动电路详解

根据以上原理,设计出以下实验电路(图2)。 通过A tmega8L单片机和电机专用驱动芯片L298N的连接实现了舵机工作的基本原理。

AVR单片机是Atmel公司8位RISC结构的单片机。具有系统内可编程存储器Flash电擦写可编程存储器EEPROM 随机访问存储器RAM 模数A/D转换器、大量I/0口、 16/8位定时器RS-232通讯接口UART,两线串行接口TWI以及其他很多功能的单片集成电路。本文采用的是AVR系列常用型号的产品ATMega8L系统时钟频率使用外部晶振7.3728Mhz,工作电压5V。

舵机驱动电路原理图_基于AVR单片机的舵机驱动电路详解

L298是双H型桥高电压大电流集成电路,可用来驱动继电器、线圈、直流电动机和步进电动机等。原理图如图3所示,Vss接逻辑控制的电源。Vs为电机驱动电源。 IN1-IN4输入引脚为标准TTL逻辑电平信号,ENAENB引脚则为使能控制端。本来是通过IN1--IN4输入用来控制H型桥的开与关即实现电机的正反转。ENA、ENB使能控制端,用来输入PWM信号实现电机调速。本文使用了L298N的一组H型桥,ENA使能控制端一直导通,输入IN1,IN2PWM信号来控制电机速度和转向。

舵机驱动电路原理图_基于AVR单片机的舵机驱动电路详解

2、单片机初始化包括I/O口、定时器、A/D转换的初始化

上位机发出的PWM信号通过Atmega8L的一个I/0口读入,为了读取PWM信号的高电平时间,采用计数方式,使用Atmega8L的T0计数,T0是一个8位定时器,定时器分频为8分频,TCCR0=0x02。若读入PD0的PWM信号是高电平,T0开始计时,T0的计数值TCNTO从0计数到255,产生计数溢出中断,在中断服务程序里设置一个累加器COUNT,每次进入中断服务程序COUNT加1。当PD0口读入的PWM信号是低电平时,T 0停止计时,计算出整个PWM高电平时间是:INPUTPWM= (COUNTX 255+TCNT0) /921. 6 (ms)。若PD0口读入的PWM高电平时间低于1ms,在程序中处理INPUTPWM=lms,若高于2ms,则INPUTPWM= =2ms。

在实验过程中,为了避免第一次计时未能从PWM信号的高电平始端计时,忽略PWM信号第一次高电平的时间,从PD0口读到的第二个高电平开始计时。

读电位器电压,通过A/D转换读取当前电位器的电压值( ADC), Atmega8L提供最高分辨率为10位的A/D转换精度,即转换后的电压值从0到1023基于这一考虑,PDO读入的PWM信号转换为电压值target=(INPUTPWM-1)*1023,采用这一设计,有利于减少P WM信号转换为相应电压值的复杂过程。

舵机驱动电路原理图_基于AVR单片机的舵机驱动电路详解

用Atmega8L的Tl定时器产生两路16位pwm信号,其占空比决定控制电机的转速,占空比越大,电流持续时间越长,舵机转动越快,反之则越慢。为了与A/D转换的最大值1023相匹配,减少计算复杂度,T1定时器采用8号相位与频率修正PWM模式,让计数最大值ICR1=1023,其比较值0CR1=( ADC-target)。为了控制电机的转向,若(ADC- -target)。随着电机的转动,采集的电位器的电压值不断与目标值接近,OCR1的值变小,占空比也变小,舵机转速也持续变慢,理论上,当ADC与target相等, 占空比为0,电机到达目标位置,停止转动。电机的控制流程图如图4所示。

3、PID调节

理论上当电机达到目标位置时,电机将停止转动,此时没有电流流过电机,但是舵机是一个需要保持角度的系统,并且保持力越大越好,即舵机的扭矩(torque)越大越好。具体而言,当电机到达目标位置时,电机停止转动,但是此时只要稍微有外力转动电机,电机将流过一个与外力相逆的电流来保持角度,这电流就是堵转电流。因此,一方面要求电机到达目标位置电流越来越小,这样容易停止,另一方面要求在偏离目标位置的微小区域电机又要有很大的堵转电流,使用PID(ProportionalIntegralDifferential)调节就可以很好的解决这一矛盾。

PID可以很好地控制电机很快地到达目标位置而不产生抖动。对于舵机而言,上面提到的定时器T1的比较值0CR1就简单的给定为当前的电机位置和目标位置的差值,引入PID控制后,这一项乘以一个系数kp,作为OCR1的比例项;上一周期的电机位置和这一周期的电机位置的差值乘以系数kd,作为OCR1的微分项,这一项的作用主要是如果电机两次位置的差值很大的话,可以加快电机的转速;每一周期电机位置和目标位置的差值的平均值乘以系数ki作为OCR1的积分项,这一项的作用是使电机阻尼来减少电机抖动。把这三项加起来作为OCRl的值,作为T1定时器的比较值。公式如下:

OCRl=kpX(ADC-target)+kiX((ADC-target)/n)+HkdX(adcvalpre-ADC)

其中,ADC为采集到的当前电位器的值,target为目标位置转换后的电压值,沩周期次数,adcvalpre为上一周期的电压值,kp,ki,kd为选定的参数,选择合适的参数可以保证电机又快又稳的到达月标位置。

4、舵机驱动板以TWI方式与上位机通讯对舵机的控制

TWI(Two-wireSerialInterface)作为Atmega8L的一个通讯接口,提供最快400khz的数据传输率。IWI协议允许系统设计者只用两根双向传输线就可以将128个不同的设备互连到一起。这两根线一是时钟SCL,-是数据SDA。使用TWI方式通讯主要是可以精确的传输舵机要到达的指定位置以及方便地调节kp,ki,kd系数。本文采用两片Atmega8L单片机进行TWI通讯,PC机端采用RS-232与其中一片单片机通讯,模型如图5所示:

舵机驱动电路原理图_基于AVR单片机的舵机驱动电路详解

PC机端是一个用VC6写的串口通讯程序和单片机a通讯,单片机a主要是处理RS--232传输的数据并重新装包以TWI方式发送给舵机控制电路板。这样在实验过程中可以很方便的通过PC机端的串口通讯程序发送目标位置,kp,ki,kd等参数,容易调试。

本文选用FutabaS3003舵机的机械部件,用图4的舵机控制电路,很好的控制电机到达目标位置,而且产生了较大的扭矩。作为一个实验产品,达到了预期的效果,下一步寻求更好的调节算法,更稳定地控制电机,产生更大的扭矩。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AVR单片机
    +关注

    关注

    22

    文章

    607

    浏览量

    55453
  • 舵机
    +关注

    关注

    17

    文章

    264

    浏览量

    40945
收藏 人收藏

    评论

    相关推荐

    STM32 PWM驱动舵机实验

    STM32 simulink驱动舵机效果如图5.1所示,本次实验用到的Simulink简易模型如图5.2所示,电路图接法如图5.3所示,YF-STM32-ALPHA开发板舵机接口位置如
    的头像 发表于 11-29 16:30 2598次阅读
    STM32 PWM<b class='flag-5'>驱动</b><b class='flag-5'>舵机</b>实验

    AVR单片机驱动舵机问题

    请高手赐教AVR单片机用72LS244怎么驱动舵机(MG996),原理是什么?
    发表于 05-03 10:00

    单片机驱动舵机问题

    本帖最后由 tangkii 于 2014-11-1 22:43 编辑 小弟用STC89C52驱动一个舵机,MG996R,用P1.0口直接接到舵机信号线上,舵机电源和
    发表于 11-01 22:32

    【小白求助】单片机舵机与电机的电源如何得到?

    本人小白,准备做一个4个舵机+1个电机并且用单片机控制的小制作。舵机采用辉盛9g舵机,电机利用电机驱动板电源12V左右,
    发表于 10-14 15:28

    51单片机舵机控制系统的相关资料分享

    搭建,主要包括51单片机最小系统,矩阵按键,数码管驱动舵机四个部分。Protues仿真电路图如下数码管驱动仿真测试程序数码管时可以直接用I
    发表于 11-10 07:46

    单片机驱动舵机的时候是否需要功率放大器件呢

    内部集成了驱动电路,可以对我们输入的PWM信号直接采样,所以,控制舵机的时候,用一个单片机的PWM输出引脚即可,这大大精简了电路的设计。供电
    发表于 01-14 08:56

    51单片机控制舵机

    利用简单的51单片机的PWM的脉冲控制信号来很方便的控制舵机
    发表于 11-10 15:25 103次下载

    电机驱动&&舵机驱动

    电机驱动&&舵机驱动
    发表于 03-21 11:52 27次下载

    单片机实现舵机转角控制

    单片机实现舵机转角控制单片机实现舵机转角控制单片机实现舵机转角控制
    发表于 04-28 14:57 24次下载

    如何使用AT89S52单片机进行舵机控制系统的设计

    文中设计了一种基于AT89S52单片机舵机控制系统,单片机通过定时中断产生脉宽调制信号PWM来控制Futaba-S3003舵机转动。文中给出了系统的
    发表于 08-12 08:00 37次下载
    如何使用AT89S52<b class='flag-5'>单片机</b>进行<b class='flag-5'>舵机</b>控制系统的设计

    单片机操控舵机电路图

    舵机的作业原理是:PWM信号由接纳通道进入信号解调电路BA66881。的12脚进行解调,取得一个直流偏置电压。该直流偏置电压与电位器的电压比照,取得电压差由BA6688的3脚输出。该输出送人电机驱动
    的头像 发表于 03-22 15:46 1.2w次阅读
    <b class='flag-5'>单片机</b>操控<b class='flag-5'>舵机电路图</b>

    使用STM32单片机实现16路PWM舵机驱动的程序和工程文件

    本文档的主要内容详细介绍的是使用STM32单片机实现16路PWM舵机驱动的程序和工程文件免费下载。
    发表于 11-11 08:00 26次下载
    使用STM32<b class='flag-5'>单片机</b>实现16路PWM<b class='flag-5'>舵机</b><b class='flag-5'>驱动</b>的程序和工程文件

    51单片机舵机控制

    搭建,主要包括51单片机最小系统,矩阵按键,数码管驱动舵机四个部分。Protues仿真电路图如下数码管驱动仿真测试程序数码管时可以直接用I
    发表于 11-05 11:06 21次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>舵机</b>控制

    51单片机——舵机的原理及应用

    三条引线,分别是电源线Vcc、地线GND和控制信号线舵机的控制信号也是PWN信号,利用占空比的变化改变舵机的位置,其脉冲宽度在0-2.5ms变化时,舵机输出的轴转角在0-180°变化三.用单片
    发表于 11-10 19:20 17次下载
    51<b class='flag-5'>单片机</b>——<b class='flag-5'>舵机</b>的原理及应用

    51单片机-步进电机-舵机

    51单片机-步进电机-舵机
    发表于 11-23 17:06 23次下载
    51<b class='flag-5'>单片机</b>-步进电机-<b class='flag-5'>舵机</b>