1、用 AVR 单片机实现直流电机 PWM 调速马书雷 ,张立勋 ,杨双华(哈尔滨工程大学 机电学院 ,黑龙江 哈尔滨 150001)摘 要 :介绍了由 A T90S2313 单片机和 L298 构成的直流电机调速系统 ,详细介绍了AVR 单片机中关于 PWM 调速的相关寄存器的设置 ,给出了硬件电路和相应的软件设计。 关 键 词 :AVR 单片机 ;直流电机 ; PWMPWM Regulating Speed of DC Motor Using AVR MicrocontrollerMA Shu-lei ,ZHAN G Li- xun , YAN G Shuang- hua(Department
2、 of Mechanical and Electrical Engineering , Harbin Engineering University , Harbin 150001 ,China)Abstract :A kind of speed regulation system for DC motor composed of A T90S2313 microcontroller andL298 was described , and the setting of relative registers of PWM regulating speed in AVR microcontrolle
3、rwas introduced. The hardware circuit and software design were given.Key words :AVR microcontroller ; DC motor ; PWM1 综 述直流电动机转速的控制方法可分为 2 类 ,即励磁控制法与电枢电压控制法。励磁控制法控制磁通 ,其控制功率虽然小 ,但低速时受到磁饱和的限制 ,高速时受到换向火花和换向器结构强度的限制 ;而且由于励磁线圈电感较大 ,动态响应较差。所以常用的控制方法是改变电枢端电压调速的电枢电压控制法。设直流电源电压为 U d ,将电枢串联一个电阻 R ,接到电源 U d ,
4、则电枢两端的电压 U a 为U a = U d - IaR显然 ,调节电阻 R 即可改变端电压 ,达到调速目的。但这种传统的调压调速方法 ,其效率低。因此 ,随着电力电子技术的进步 ,发展了许多新的电枢电压控制方法。其中 , PWM (脉宽调制 )是常用的一种调速方法。其基本原理如下图所示 ,设加在电机电枢两端的矩形波的幅值电压为 U d ,则电机电枢两端电压的平均值为 :图 1 PWM 波形图U a = T1 - T2T1 + T2U d =(2 T1T - 1) U d = (2 - 1) U d 称为占空比。通过改变 的值 ,达到调压的目的。由于 0 1 , U a 值的范围是 - U
5、d + U d ,因而电机可以在正、反 2 个方向调速运转。AVR 单片机是美国 A TMEL 公司生产的增强 RISC、内载 Flash 的高性能 8 位单片机 ,它执行速度快 ,有良好的性能价格比 ,因而得到越来越广泛的应用。A T90S2313 为 20 引脚的单片机 ,它有 1 个 收稿日期 :2000 - 06 - 14作者简介 :马书雷 (1976 - ) ,男 ,河北永年人 ,哈尔滨工程大学硕士研究生 ,主要研究方向 :机电一体化技术。第 27 卷第 10 期 应 用 科 技 Vol. 27 , . 102000 年 10 月 Applied Science and Techno
6、logy Oct . ,2000 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.全双工的通用异步接收发送器 ,有 B 口和 D 口2 个双向 I/ O 口 ,有 2 个通用定时器 / 计数器 ,定时器 / 计数器 0 ( T/ C0) 为 8 位 ,定时器 / 计数器 1 ( T/ C1) 为 16 位。 B 口 ( PB0 PB7) 是 1 个8 位的双向 I/ O 口 ,其中引脚 PB3 的第二功能(OC1) 是定时器 / 计数器 1 输出比较匹配 (即PWM)的输出。定时器 / 计数器 1 可
7、以从晶振时钟 (CK) 、预定比例晶振时钟、或外部引脚中选择时钟源 ,这可在定时器 / 计数器 1 控制寄存器 B ( TCCR1B)的低 3 位 (CS12 ,CS11 ,CS10) 进行设置 ,如表 1 所示。表 1 时钟源的选择CS12 CS11 CS10 说 明0 0 0 T/ C1 被停止0 0 0 CK0 1 0 CK/ 80 1 1 CK/ 641 0 0 CK/ 2561 0 1 CK/ 10241 1 0 外部 T1 引脚 ,下降沿1 1 1 外部 T1 引脚 ,上升沿定 时 器 / 计 数 器 1 控 制 寄 存 器 A( TCCR1A)的格式如下 :COM1A1COM1A
8、0保留 保留 保留 保留 PWM11 PWM10在 TCCR1A 中可以设置 PWM 为 8 位、 9位或 10 位 ,如表 2 所示。当 T/ C1 处于 PWM模式时 ,可以通过 COM1A1 和 COM1A2 位来设置 OC1 ( PB3) ,如表 3 所示。在 PWM 输出之前 ,应先向定时器 / 计数器 1 的 16 位寄存器TCN T1H 和 TCN T1L 赋 计 数 最 大 值。当PWM 为 8 位时 ,应赋 0x00FF ,此时 PWM 的频率为所选时钟的 1/ 510 ;当 PWM 为 9 位时 ,应赋 0x01FF ,此时 PWM 的频率为所选时钟的 1/1022 ;当
9、PWM 为 10 位时 ,应赋 0x01FF ,此时PWM 的频率为所选时钟的 1/ 2046. 最后 ,通过对定时器 / 计数器 1 输出比较寄存器 OCR1AH和 OCR1AL 赋比较值来输出 PWM ,改变输出比较寄存器中的比较值 ,即可改变 PWM 的占空比 .表 2 PWM 位数选择PWM11 PWM10 说 明0 0 禁止 PWM0 1 PWM 为 8 位1 0 PWM 为 9 位1 1 PWM 为 10 位表 3 OC1 方式选择COM1A1 COM1A0 在 OC1 上的作用0 0 不连接0 1 不连接1 0 清比较匹配值 ,向上计数 ,置比较匹配值 ,向下计数。 (PWM不翻
10、转 )1 1 清比较匹配值 ,向下计数 ,置比较匹配值 ,向上计数。 ( PWM 翻转 )2 硬件电路硬件电路如图 2 所示。集成电路 L298 是一种功率放大芯片 ,它有 2 路完全相同的电路 ,本文中的电路只用到其中的 1 路。工作原理如下 :在使能端 6 脚为高的情况下 ,当 5 脚为高 ,7脚为低时 ,电机向右转 ;当 5 脚为低 ,7 脚为高时 ,电机向左转 ;当 5 脚和 7 脚的状态相同时 ,电机快速停止。在 6 脚为低的情况下 ,当 5 脚和 7 脚的状态相同时 ,电机自由停止。测速反馈电路由光码盘、发光二极管、光电三极管及施密特触发器 CD40106 组成。当光码盘上的孔经过
11、发光二极管时 ,发光二极管发出的光使光电三极管导通 ,A 端输出低电平 ,B端输出高电平。当光码盘上的非孔部分经过发光二极管时 ,B 端输出低电平。反馈信号接到单片机的 8 脚 ( PD0/ T0) 作为定时器 / 计数器 0的外部触发信号。此时应将定时器 / 计数器 0控制寄存器 TCCR0 的低 3 位设为 110 (下降沿有效 ) 或 111 (上升沿有效 ) 。脉冲发生电路用于产生计算速度的时间基准 ,它每隔一定时间产生一个脉冲 ,触发 A T90S2313 单片机的外部中断 0 ,在外部中断 0 的中断服务程序中 ,计算出电机的转速。41 应 用 科 技 第 27 卷 1995-20
12、06 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.图 2 用 AVR 单片机控制直流电机电路原理图3 软件设计主程序首先从上位机 ( PC 机或单片机 ) 获得控制电机转速的命令字 ,命令字包括控制电机的速度、转向等信息 ,然后检查收到的数据是否有效 ,如果无效 ,则向上位机发出“命令错”信息 ,继续等待上位机发出命令字 ;否则 ,调用速度控制子程序 ,然后等待外部中断 0 的产生。速度控制子程序根据上位机发来的命令字输出一定占空比的 PWM 波形 ,使电机朝一定方向按一定速度转动。外部中断 0 的中断服务子程序根据
13、计数器 0 的数值计算出电机的速度 ,将计算值与命令字中的速度设定值进行比较 ,如果计算值大于设定值 ,则通过减小 PWM 的占空比来降低电机转速 ,否则 ,应增加 PWM 的占空比来升高电机的转速。图 3 主程序流程图 图 4 速度控制子程序流程图 图 5 中断服务程序4 结 论AVR 单片机是一种新型的单片机 ,有很好的应用前景。将其用于直流电机的 PWM 调整 ,不仅调速精度高 ,响应速度快 ,而且经济可靠 ,因而具有极大使用价值。参 考 文 献1 宋建国 . AVR 单片机原理及应用 M .北京 :北京航空航天大学出版社 ,1998.2 张立勋 . 机械电子学 M .哈尔滨 :哈尔滨工程大学出版社 ,1999.51第 10 期 马书雷 ,等 :用 AVR 单片机实现直流电机 PWM 调速 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.