1、1基于单片机实现直流电机 PWM 调速系统摘要:利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制;采用了专门的芯片组成了PWM信号的发生系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形。关键词:PWM信号;直流电机;调速;占空比;单片机一、 系统总体设计框图直流电机P W M 信号的产生与放大A / D转换滤波电路测速发电机AT89C51单片机图 1 系统总框图近年来,随着科技的进步,电力电子技术得到了迅速的发展,直流电机得到了越来越广泛的应用。直流它具有优良的调速特性,调速平滑、方便,调速范围广;过载能力大,能
2、承受频繁的冲击负载,可实现频繁的无级快速起动、制动和反转;需要能满足生产过程自动化系统各种不同的特殊运行要求,从而对直流电机的调速提出了较高的要求,改变电枢回路电阻调速,改变电枢电压调速等技术已远远不能满足要求,这时通过 PWM 方式控制直流电机调速的方法应运而生。采用传统的调速系统主要有以下缺陷:模拟电路容易随时间漂移,会产生一些不必要的热损耗,以及对噪声敏感等。而在用了 PWM 技术后,避免了以上的缺陷,实现了用数字方式来控制模拟信号,可以大幅度降低成本和功耗。另外,由于 PWM 调速系统的开关频率较高,仅靠电枢电感的滤波作用就可获得平稳的直流电流,低速特性好;同样,由于开关频率高,快速响
3、应特性好,动态抗干扰能力强,可以获得很宽的频带;开关器件只工作在开关状态,主电路损耗小,装置效率高。PWM 具有很强的抗噪性,且有节约空间、比较经济等特点。二、 外设电路设计21、AT89C51 单片机(1)AT89C51 单片机的基本组成AT89C51 单片机由 CPU 和 8 个部件组成,它们都通过片内单一总线连接,其基本结构依然是通用 CPU 加上外围芯片的结构模式,但在功能单元的控制上采用了特殊功能寄存器的集中控制方法。(2)AT89C51 单片机引脚图及功能介绍P0.7-P0.0:这 8 个引脚共有两种不同的功能,分别使用于两种不同的情况。第一种情况是 AT89C51 不带片外存储器
4、,P0 口可以作为通用 I/O 口使用,P0.7-P0.0 用于传送 CPU 的 I/O 数据。第二种情况是 AT89C51带片外存储器,P0.7-P0.0 在 CPU 访问片外存储器时先是用于传送片外存储器的低 8 位地址,然后传送CPU 对片外存储器的读写数据。P2.7-P2.0:这组引脚的第一功能可以作为通用的 I/O 使用。它的第二功能和 P0 口引脚的第二功能相配合,用于输出片外存储器的高 8 位地址,共同选中片外存储器单元,但是并不能像 P0 口那样还可以传送存储器的读写数据。P3.7-P3.0:这组引脚的第一功能为传送用户的输入/输出数据。它的第二功能作为控制用,每个引脚不尽相同
5、,如下表所示: P3 口的位 第二功能 注释P3.0 RXD 串行数据接收口P3.1 TXD 串行数据发送口P3.2 _0INT外中断 0 输入P3.3 1外中断 1 输入P3.4 T0 计数器 0 计数输入1p1.02. 3p1.24.35p1.46.57p1.68.79RST/VPD10XD/p3.0T/.1 12p3.23. 14p3.4 5.516p3.6 7.718XTAL29120VS 21p2.0.123p2.4 .325p2.46 .527p2.68 .729PSEN30 AL/PROG1E/V32p0.7.634p0.55 .436p0.37 .238p0.19 .40VC8
6、9C513P3.5 T1 计数器 1 计数输入P3.6 _WR外部 RAM 写选通信号P3.7 D外部 RAM 读选通信号表 1 AT89C51 芯片引脚 P3 口第二功能及说明VCC为+5V 电源线,V SS为接地线。ALE/ :地址锁存允许/编程线,配合 P0 口引脚的第二功能使用,在访问片外存_PROG储器时,AT89C51CPU 在 P0.7-P0.0 引脚线上输出片外存储器低 8 位地址的同时还在 ALE/线上输出一个高电位脉冲,其下降沿用于把这个片外存储器低 8 位地址锁存到外部_专用地址锁存器,以便空出 P0.7-P0.0 引脚线去传送随后而来的片外存储器的读写数据。在不访问片外
7、存储器时,AT89C51 自动在 ALE/ 线上输出频率为 1/6 fOSC的脉冲序列。_PROG该脉冲序列可以用作外部时钟源或者作为定时脉冲源使用。/ VPP:允许访问片外存储器/编程电源线,可以控制 AT89C51 使用片内 ROM 还是_EA片外 ROM。如果 =1,那么允许使用片内 ROM;如果 =0,那么允许使用片外 ROM。_ _EA:片外 ROM 选通线,在执行访问片外 ROM 的指令 MOVC 时,AT89C51 自动在_PSN线上产生一个负脉冲,用于片外 ROM 芯片的选通。其他情况下, 线均为高电E _PSEN平封锁状态。RST/VPD:复位备用电源线,可以使 AT89C5
8、1 处于复位工作状态。XTAL1 和 XTAL2:片内振荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接 AT89C51 片内 OSC 的定时反馈电路。石英晶振起振后,应能在 XTAL2 线上输出一个 3V 左右的正弦波,以便于 AT89C51 片内的 OSC 电路按石英晶振相同频率自激振荡,电容C1、C2 可以帮助起振,调节它们可以达到微调 fOSC的目的。2、PWM 信号发生电路设计(1)PWM 的基本原理PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的一种电压调整方法。PWM 可以应用在许多方面,比如:电机调速、温度控制、压
9、力控制等等。在 PWM 驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。也正因为如此,PWM 又被称为“开关驱动装置” 。如下图所示:4Tt 1t 2设电机始终接通电源时,电机转速最大为 Vmax,设占空比为 ,则电机的平均TtD/1速度为 ,其中 Va指的是电机的平均速度;V max 是指电机在全通电时的最大DVamx*速度; 是指占空比。t/1由上面的公式可见,当我们改变占空比 时,就可以得到不同的电机平均速度Tt/1Vd,从而达到调速
10、的目的。严格来说,平均速度 Vd 与占空比 D 并非严格的线性关系,但是在一般的应用中,我们可以将其近似地看成是线性关系。(2)PWM 信号发生电路图PWM 波可以由具有 PWM 输出的单片机通过编程来得以产生,也可以采用 PWM 专用芯片来实现。当 PWM 波的频率太高时,它对直流电机驱动的功率管要求太高,而当它的频率太低时,其产生的电磁噪声就比较大,在实际应用中,当 PWM 波的频率在 18KHz 左右时,效果最好。在本系统内,采用了两片 4 位数值比较器 4585 和一片 12 位串行计数器 4040 组成了 PWM 信号发生电路。两片数值比较器 4585,即图上 U2、U3 的 A 组
11、接 12 位串行 4040 计数输出端 Q2Q9,而 U2、U3 的 B 组接到单片机的 P1 端口。只要改变 P1 端口的输出值,那么就可以使得 PWM信号的占空比发生变化,从而进行调速控制。12 位串行计数器 4040 的计数输入端 CLK 接到单片机 C51 晶振的振荡输出 XTAL2。计数器 4040 每来 8 个脉冲,其输出 Q2Q9 加 1,当计数值小于或者等于单片机 P1 端口输出值X 时,图中 U2 的(AB)输出端保持为低电平,而当计数值大于单片机 P1 端口输出值 X 时,图中 U2 的(AB)输出端为高电平。随着计数值的增加,Q2Q9 由全“1”变为全“0”时,图中 U2
12、 的(AB)输出端又变为低电平,这样就在 U2 的(AB)端得到了 PWM 的信号,它的占空比为(255 -X / 255) *100%,那么只要改变 X 的数值,就可以相应的改变 PWM 信号的占空比,从而进行直流电机的转速控制。使用这个方法时,单片机只需要根据调整量输出 X 的值,而 PWM 信号由三片通用数字电路生成,这样可以使得软件大大简化,同时也有利于单片机系统的正常工作。由于单片机上电复位时 P1 端口输出全为“1” ,使用数值比较器 4585 的 B 组与 P1 端口相连,升速时 P0端口输出 X 按一定规律减少,而降速时按一定规律增大。5C L KQ 3Q 2Q 8Q 9Q 7
13、Q 6Q 5R S TQ 44 0 4 0P 1 . 7P 1 . 6P 1 . 5P 1 . 4P 1 . 3P 1 . 2P 1 . 1P 1 . 0X T A L 2P 3 . 7V C C+ 5 VG N D8 9 C 5 1P W MB 3B 2B 1B 0A 3A 2A 1A 0A = BA BA 3A 1A 2A 0A BA = BA U m a xU i = U 1 - U m i nP I 输出参数结束是是(2)系统中部分程序设计a)单片机资源分配工作寄存器 0 组RO-R7 00H-07H数据缓冲区 30H-7FHPSW.4(RS 1=0) PSW.3(RS 0=0) ;选
14、中工作寄存器 0 组P0 口地址 80H P1 口地址 90H11P2 口地址 A0HP3 口地址 B0H堆栈(SP) 81H定时器/计数器控制 TCON 88H定时器/计数器方式控制 TMOD 89H定时器/计数器 0 低字节 TL0 8AH 高字节 TH0 8CH定时器/计数器 1 低字节 TL1 8BH 高字节 TH1 8DH中断 1PI 采样(u i)中断 0A/D 采样 P1 口预置 WP0 口测量值(实测 Y)主程序:0000 AJMP STARTSTART: CLR PSW.4CLR PSW.3 ;选中工作寄存器 0 组CLR CMOV R0 ,4FHMOV A ,30HCLEA
15、R1: CLR AINC ADJNZ R0 ,CLEAR1 ;清零 30-7FHSETB TR0 ;定时器/计数器 0 工作MOV TMODE ,#01H ;定时器/计数器工作在方式 1SETB EA ;总中断开放SETB IT0 ;置 INTO 为降沿触发SETB IT1 ;置 INT1 为降沿触发LJMP MAINLJMP CTCOLCALL SAMPLEFosc=12MHZ,用一个定时器/计数器定时 50ms,用 R2作计数器,置初值 14H,到定时时间后产生中断,每执行一次中断服务程序,让计数器内容减 1,当计数器内容减为 0 时,则到 1s。b)PI 控制算法: eiTKpeipUi
16、 *)/()1(1令 KPtTI/*则 eiIiei)(T采样周期, , RnC0/RnKpPI 程序:SETB EX1 ;开放中断 1MOV R0,90H ;P1 口(W)送 R0,预设12MOV R1,80H ;P0 口(Y)送 R1,实测MOV A,R0 ;W 给 AMOV B,R1 ;Y 给 BSUBB A,B ;ei 给 AMOV 7FH,A ;ei 给 7FHMOV 7EH,#00H ;e i-1=0 给 7EHMOV 7BH,Umax MOV 7AH, UminAJMP IN ;积分项AJMP P ;比例项MOV A,R2 ;Pi 给 AADD A,R3 ;Pi+Pp 给 AMO
17、V 7DH,#00H ;U i-1=0 给 7DHADD A,7DH ;U i-1+Pi+Pp=Ui 给 AMOV 7CH,A ;Ui 给 7CHMOV 7DH,7CH ;Ui 给 Ui-1MOV A,7BH ;Umax 给 ACJNE A,#Ui,LOOP2 ;UiUmax 转移MOV A,#UiCJNE A,7AH,LOOP3 ;Ui BA 3A 1A 2A 0A BA = BA B+ 5 VB 0B 1B 2B 3U 2U 3P W M 信号发生电路主电路1I N 32I N 43I N 54I N 65I N 76S T A R T7E O C8D B 39O E1 2V + r e
18、f1 0C L O C K1 1V C C1 3G N D1 4D B 11 5D B 21 6V - r e f1 7D B 01 8D B 41 9D B 52 0D B 62 7I N 12 6I N 02 5A D D A2 4A D D B2 3A D D C2 2A L E2 1D B 72 8I N 2A D C 0 8 0 91p 1 . 02p 1 . 13p 1 . 24p 1 . 35p 1 . 46p 1 . 57p 1 . 68p 1 . 79R S T / V P D1 0R X D / p 3 . 01 1T X D / p 3 . 11 2p 3 . 21 3p
19、 3 . 31 4p 3 . 41 5p 3 . 51 6p 3 . 61 7p 3 . 71 8X T A L 21 9X T A L 12 0V S S2 1p 2 . 02 2p 2 . 12 3p 2 . 22 4p 2 . 32 5p 2 . 42 6p 2 . 52 7p 2 . 62 8p 2 . 72 9P S E N3 0A L E / P R O G3 1E A / V P P3 2p 0 . 73 3p 0 . 63 4p 0 . 53 5p 0 . 43 6p 0 . 33 7p 0 . 23 8p 0 . 13 9p 0 . 04 0V C C8 9 C 5 1CCR RRRU wU y滤波电路A T 8 9 C 5 1