基于ATmega8的直流电机PWM调速控制系统设计与实现

本文将介绍一款以atmega8为基础,采用数字pid算法的受限单极性可逆pwm系统实现的直流电机调速控制系统,克服了上述难点。
一、引言
直流电机因具有良好的线性调速特性、效率高、控制简单、调速性能好及体积小等优点得到了广泛使用。常规电机调速控制方法中,电机工作不稳定,损耗较大,尤其在低电压轻负荷时情况更为严重,且工作频率受电源频率的限制,难以满足高精度的调速要求,不利于广泛推广[1]。
如何才能使电路具有成本低、控制精度高、调试修改参数方便,且能方便和灵活地适用于大功率、可靠性高的直流电机控制系统中,是我们研究的目的。
文献[2]和文献[3]中采用了先进算法,用ltm18200和l298作电机控制电路,具有控制精度高、稳定性好、响应速度快等优点,但其驱动能力较低、成本较高。
二、直流电机pwm调速原理
直流电机转速表达式为:
式中:u—电枢端电压;i—电枢电流;r—电枢电路总阻;—每极磁通量;k—电机结构参数。
对直流电机的转速控制方法可分为对励磁磁通进行控制的励磁控制法和对电枢电压进行控制的电枢控制方法。目前绝大多数直流电机采用开关驱动方式,它是使半导体功率器件工作在开关状态,通过脉宽调制pwm来控制电机电枢电压,实现调速。
pwm(pulsewidthmodulation)—脉冲宽度调制技术通过对一系列数字脉冲的宽度进行调制,在脉冲作用下,当电机通电时速度加快,断电时速度逐渐变慢,只要按一定规律改变通断电时间,即可对电机的转速控制,实现直流电机调速数字化[4],如图1。
三、控制系统硬件设计
本调速控制系统,主要由atmega8单片机、驱动电路、转速检测电路和通信接口电路等部分组成,如图2所示。
1.atmega8单片机简介[5]
atmega8是增强的avrrisc结构的cmos微控制器,具有高速度、低功耗、片内资源丰富、电源抗干扰能力强等优点。atmega8具有32个通用工作寄存器及丰富的指令集,带有硬件乘法器以及8k的flash和1k的sram,还带有8路10位adc以及三通道的pwm输出,支持isp功能,可以很方便地对器件进行在线编程及修改。
2.atmega8实现pwm控制
atmega8的16位t/c可以实现精确的程序定时、波形产生和信号测量。atmega8波形发生器利用双缓冲输出比较寄存器ocr1a/b与t/c的值做比较,产生pwm信号,通过输出比较引脚oc1a/b输出无干扰脉冲、相位正确、可变频率的pwm信号。
pwm将占空比(电机电枢电压接通时间与通电周期的比值)不同的脉冲变成不同的电压来驱动直流电机转动,通过改变占空比,得到不同的转速,实现电机启动、停止、和反转等功能。
单片机通过比较预设速度与实测速度的偏差,经pid算法得出控制量,根据控制量改变pwm信号的输出脉宽,经驱动电路功率放大后实现对电机速度的控制,然后循环进入下一个控制周期。
3.驱动电路原理
直流电机常要求工作在正反转的场合中,就需要合用可逆pwm系统,可逆pwm系统可分为双极性驱动可逆pwm系统和单极性驱动可逆pwm系统。双极性可逆系统在低速时运行平稳,但电流波动大,功率损耗较大,尤其是必须增加死区来避免开关管直通的危险,限制了开关频率的提高;单极性驱动方式能够避免开关管直通,可以大大提高系统的可靠性,尽管轻载时会出现断流,但可以通过提高开关频率的方法或改进电路设计来克服。
该系统采用受限倍频单极性可逆pwm驱动控制,如图3所示。它可以通过改变对开关管的控制方式,而使直流电机电枢两端获得比pwm控制信号频率高1倍的电压波,可以弥补受限单极驱动所产生的电流断流的问题,具有驱动能力强、控制简单、可靠性高且成本低等优点。
pwm接atmega8的ocr1a脚pwm信号输出,in1、in2接电机正反转控制信号;pwm、in1和in2具体逻辑功能见表1:
四、控制系统程序设计
控制程序采用c语言模块化结构。主要包括主程序、pid控制程序、中断服务程序和电机正反转控制程序等部分。
1.主程序流程图
主程序主要完成相关中断初始化、调用显示、判断中断类型和执行相应中断服务程序等功能,其结构如图4所示:
2.数字pid控制器[1]
在控制系统中,将输出量与给定量之间的偏差的比例p、积分i、微分d通过线性组合构成控制量的pid控制器获得了广泛的应用,它参数整定方便,结构更改灵活。
pid表达式:
其中:u(t)——控制量;kp——比例放大系数;ti——积分时间;td——微分时间。
本系统采用转子位置传感器,利用传感器输出的脉冲信号来反映电机的转速。将传感器输出的信号经过采样调理电路后送至单片机,该引脚作为外部中断源的输入口,随着电机的转动,单片机将不断接收到脉冲信号,当接收到一个上升沿时将启动定时器t0以开始计时,直至接收到下一个相邻的上升沿为止,定时器t0的计时结果便是电机转动一圈所需的时间,据此即可计算出电机的转速。利用pid算法,将实时采集的电机转速值与设定值进行比较,得出偏差,利用软件编程实现转速调节。
本系统采用位置式数字pid算法,其控制算法简化示意图如图5:
采用全量算法,通过差分代微分,可将表达式化简为:
其中:;;
u(k)——第k个采样时刻的控制量;kp——比例放大系数;ki——积分放大系数;kd——微分放大系统;ts——采样周期;u0——控制量的基值,即k=0时的控制。
pid算法流程图如图6所示:
3、控制程序
以下是atmega8单片机实现电机控制的部分程序:
pwm控制器的初始化:
voidtimer1_init(void)
{ ocr1a=0; //初始化为0,电机停止
ocr1b=0; //初始化为0,电机停止
tccr1a=(1< clr_in1;
set_in2;
clr_in3;
set_in4;
}
定时器0中断服务函数,用于控制pwm1a的时间:
signal(sig_overflow0)
{ if(timer0_tick { timer0_tick++;}
else{printf(ack:);
set_in3;
set_in4;
ocr1a=0;
timsk&=~_bv(toie0);
}
}
电机正转,speed为速度(0-255可调),choose为电机通道选择(r为右、l为左):
voidfor_ward(ucharspeed,charchoose)
{ if(ch=='r')
{ ocr1b=speed; //pwm1b_en;
set_in1;
clr_in2; }
else
{ ocr1a=speed;//pwm1a_en;
set_in3;
clr_in4; }
}
五、结语
利用atmega8单片机产生的pwm信号,加入数字pid算法实现对电机速度的控制,提高了系统的控制精度,保证了电机转速的稳定性;电机的启动、停止、左右转和速度都由程序定义,调试时只需修改pwm信号占空比即可实现速度控制,改变输出口电平即可实现电机正反转,无须改变系统硬件电路,即可实现各种控制,能有效缩短开发周期,提高效率;结合了受限倍频单极性可逆pwm电机驱动电路,增强了系统的驱动能力,提高了系统的可靠性和性价比。电路设计简单,电机控制方便,有利于广泛推广。
探索未来中国物联网市场的战略发展重点
MySQL缓冲区设计介绍
新型VR头盔研制成功,盲人患者的福音
5G时代如何解决当前海量物联所面对的问题和挑战
《无主之地3》新DLC 华硕B450主板助你制霸星球
基于ATmega8的直流电机PWM调速控制系统设计与实现
SpaceX载人飞船内部场景首次曝光 iPad亮眼
TDA16846各引脚功能及电压资料
门禁系统所需突破哪些发展瓶颈
未来移动通信系统中的无线资源管理
受价格下跌拖累,2018年第四季NAND Flash大厂营收季减16.8%
苹果史上最简短的发布会,有哪些看点?
领邦仪器过关斩将 再获“高新技术”称号
传台积电或在今年下半年风险试产3nm制造工艺
半导体测试设备行业深度报告(2022)
如何选择PLC
环球时报:中美贸易日趋紧张,打贸易战的牌接近旗鼓相当
LTC5562低功率有源混频器提供7GHz 带宽和20dB mOIP3
透湿量测试仪的主要用途以及技术特点的介绍
SoC芯片设计企业亿智电子 获评2020年度最具创新精神IC设计企业