1、电动机的运转状态通过数码管显示出来。电动机所处速度级以速度档级数显示。正转时最高位显示“三” ,其它三位为电机转速;反转时最高位显示“F”,其它三位为电机转速。每次电动机启动后开始显示,停止时数码管显示出“0000”。1、系统的硬件电路设计与分析电动机PWM驱动模块的电路设计与实现具体电路见下图。本电路采用的是基于PWM原理的H型桥式驱动电路。PWM电路由复合体管组成H型桥式电路构成,四部分晶体管以对角组合分为两组:根据两个输入端的高低电平决定晶体管的导通和截止。4个二极管在电路中起防止晶体管产生反向电压的保护作用,防止电动机两端的电流和晶体管上的电流过大的保护作用。 在实验中的控制系统电压统
2、一为5v电源,因此若复合管基极由控制系统直接控制,则控制电压最高为5V,再加上三极管本身压降,加到电动机两端的电压就只有4V左右,严重减弱了电动机的驱动力。基于上述考虑,我们运用了TLP521-2光耦集成块,将控制部分与电动机的驱动部分隔离开来。输入端各通过一个三极管增大光耦的驱动电流;电动机驱动部分通过外接12V电源驱动。这样不仅增加了各系统模块之间的隔离度,也使驱动电流得到了大大的增强。在电动机驱动信号方面,我们采用了占空比可调的周期矩形信号控制。脉冲频率对电动机转速有影响,脉冲频率高连续性好,但带带负载能力差脉冲频率低则反之。经实验发现,当电动机转动平稳,但加负载后,速度下降明显,低速时
3、甚至会停转;脉冲频率在10Hz以下,电动机转动有明显跳动现象。而具体采用的频率可根据个别电动机性能在此围调节。通过P10输入高电平信号,P11输入低电平,电机正转;通过P10输入低电平信号,P11输入高电平,电机反转;P10、P11同时为高电平或低电平时,电机不转。通过对信号占空比的调整来对电机转速进行调节。2、系统的软件设计 本系统编程部分工作采用KELI-C51语言完成,采用模块化的设计方法,与各子程序做为实现各部分功能和过程的入口,完成键盘输入、按键识别和功能、PWM脉宽控制和数码管显示等部分的设计。单片机资源分配如下表:P0显示模块接口键盘中断P1键盘模块接口P1.0/P1.1PWM电
4、机驱动接口系统时钟PWM脉宽控制:本设计中采用软件延时方式对脉冲宽度进行控制,延时程序函数如下:/*延时函数*/delays() uchar i; for(i=5000;i0;i-);键盘中断处理子程序:采用中断方式,按下键,完成延时去抖动、键码识别、按键功能执行。要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少一定的占空比。显示子程序:利用数组方式定义显示缓存区,缓存区有8位,分别存放各个数码管要显示的值。定时中断处理程序:采用定时方式1,因为单片机使用12M晶振,可产生最高约为65.5ms的延时。对定时器置初值B1E0H可定时20ms,即
5、系统时钟精度可达0.02s。当20ms定时时间到,定时器溢出则响应该定时中断处理程序,完成对定时器的再次赋值,并对全局变量time加1,这样,通过变量time可计算出系统的运行时间。3、软件设计中的特点:对于电机的启停,在PWM控制上使用渐变的脉宽调整,即开启后由停止匀加速到默认速度,停止则由于当前速度逐渐降至零。这样有利于保护电机。键盘处理上采用中断方式,不必使程序对键盘反复扫描,提高了程序的效率。第三章:系统硬件电路设计整体框图如下:第四章:系统功能调试仿真整体图如下:直流电机的调试功能仿真如下图:1、正转时,电机正转,数码管最高位显示“三”,其它三位先所给定频率,如下图:2、反转时,电机
6、反转,数码管最高位显示“F”,其它三位先所给定频率,如下图:3、输出波形如下:4、加速分5档,波形依次如下:5、减速分5档,波形如下:第五章:程序见附件1第六章:PCB图见附件2第七章:元件清单见附件3第八章:心得体会略附件1/*基于单片机AT89C51的直流电机PWM调速控制系统*/*地点:松山职业技术学院*/*班级:2009级检测技术及应用*/*指导老师:军涛*/*时间:2011年7月1日*/*头文件*/#includeabsacc.h#include /* /*自定义变量*/#define uint unsigned int /自定义变量#define uchar unsigned ch
7、ar char gw,sw,bw,qw;uchar j; /定时次数,每次20msuchar f=5; /计数的次数sbit P10=P10; /PWM输出波形1sbit P11=P11; /PWM输出波形2sbit P12=P12; /正反转sbit P13=P13; /加速sbit P14=P14; /减速sbit P15=P15; /停止sbit P16=P16; /启动uchar k;uchar t; /脉冲加减/*/*/*控制位定义*/uchar code smg12=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x73,0x7
8、1;/程序存储区定义字型码表char data led4=0x08,0x04,0x02,0x01; /位码uint x; /数码管显示的数值display(); /数码管显示 delays(); /延时函数key();displays();/*/*主函数*/main (void) TMOD=0x51; /T0方式1 定时计数 T1方式1计数 TH0=0xb1; /装入初值 20MS TL0=0xe0; TH1=0x00; / 计数567 TL1=0x00; TR0=1; /启动 t0 TR1=1; /启动t1 gw=sw=bw=qw=0; /数码管初始化 P0=0xc0; P2=1; whil
9、e(1) /无限循环 display(); key(); /*数码管显示*/display() gw=x%10; /求速度个位值,送到个位显示缓冲区 sw=(x/10)%10; /求速度十位值,送到十位显示缓冲区 bw=(x/100)%10; /求速度百位值,送到百位显示缓冲区 qw=x/1000; /求速度千位值,送到千位显示缓冲区 for(i=0;i4;) P2=ledi; if(i=0) /显示个位 P0=smggw; delays(); else if(i=1) /显示十位 P0=smgsw; else if(i=2) /显示百位 P0=smgbw; delays(); else if
10、(i=3) /显示千位 if(k=0) /正转时显示三 P0=0x49; else P0=0x71; /反转时显示F i+;/*/*/*t0定时*中断函数*/void t0() interrupt 1 using 2 /重装t0 f-; if(k=0) if(ft) P10=1; else P10=0; P11=0; if(f=5) t=5; if(P14=0) /减速 while(P14=0); t-; if(t1) t=1;if(P15=0) /停止 while(P15=0); EA=0; /*/附件2:附件3:元件数量(个)光电耦合器:TLP521-21三极管85504按键5三极管8050自锁按键1N4007At89s52四位一体数码管12M晶振电容104Led直流电机电阻1K3电容22P2电阻10K电解电容47P/16V74LS04下载口DANPIANJI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1