直流电机调速系统设计报告学院:信息控制与工程学院班级:姓名:学号:时间:一设计任务设计并制作一套直流电机调速系统,主要包括两部分:主电路部分和以单片机为核心的控制电路部分。
设计要求、制作控制电路和主电路,实现如下功能:(1)通过码盘和光耦得到一系列脉冲,利用M 法、T 法或M/T法对这些脉冲在单片机中进行处理得到电机的转速,在液晶或数码管上进行显示;(2)DC/DC 电路能够正常工作,通过旋钮或键盘设定转速,并能够通过电力电子电路输出合适的电压,使电机的转速达到设定转速。
图1 系统总体框图二、 设计思路和设计过程在此次电路和软件的设计中,电机的转速的获得是通过光耦采集码盘和光耦脉冲传输到单片机的INT0管脚上进行中断,然后通过定时器T0产生1s的计时,计算在1s内脉冲的个数为X,由于电机上码盘上刻有23个孔,那么电机的转速为3X。
而转速的设定采用的是电位器,采集0-5V的电压,通过单片机上P1.0端口进行A/D转换产生00H-FFH。
PWM的产生是由P1.3口产生的,通过单片机的PCA中的寄存器设定初始值,产生大约是40KHZ的PWM波。
通过驱动电路来改变电机的转速。
由于本次实习采用的是自主设计,需要同学们自己自行设计电路并编写程序,由于我之前并没有接触过这种设计,因此此次设计有很大的难度。
电源部分的设计由于之前都做过很多,这是很简单的,在当天下午我们基本上就完成了这部分。
至于单片机最下系统部分的电路和数码管显示的电路是参考老师给的关于STC12C5A16AD型号单片机的技术资料上参考得到的。
驱动电路和主电路的设计是来源于网上的参考资料和从图书馆中借的书中,并与其他同学对照比较和在老师的帮助下完成的。
这部分花了比较长的时间完成。
由于课程设计之前我自己看过C语言编写单片机程序的书,再加上参考老师给的一些资料,所以完成起来不是特别难。
三、电路调试过程中遇到的问题1、由于在焊接数码管部分电路时,为了方便焊接就把数码管的管脚打乱了接,在程序设计过程中出现了几次修改才让数码管显示正常。
2、在电路的整体连调时出现了在PWM波的占空比在50%时,电机的转速就上不去,后面请教同学说是要把PWM波的频率加大,经程序改正后,占空比能达到85%以上,基本上实现了功能。
3、电机在PWM波的占空比达到将近100%时会出现突然断电的情况,减小占空比是会出现过流情况。
原因是驱动芯片IR2125里面的电容在占空比将近100%时不能完成充放电过程,也就没法输出PWM波。
电机在出现转速没完全降下来的时候突然加上24V的电压会过流,这是设计电路的问题。
4、在程序的调试过程中主要是修改一些延时程序,改变数码管的扫描频率,使数码管能够显示正常。
四、设计与制作硬件部分直流电机调速系统总设计图1、电源部分设计供电电源采用220伏交流电晶变压器变成15交流电,经整流桥变成直流电,再经7812、7805稳压得到12v和5v直流电,分别给驱动和单片机系统供电。
图2 电源设计图2、单片机系统设计本设计采用STC12C5A60S2型号单片机,使用它的A/D采集功能、技计数功能、定时器功能、数码管驱动功能、PWM波输出功能进行设计制作。
首先制作单片机最小系统,在单片机相应管脚上接上晶振以及复位按钮,单片机就可正常工作。
图3 单片机系统图制作MAX232电路,用于使用串口给单片机下载程序。
图4 MAX232电路图3、显示部分设计使用计数器采集到电机转速后,需要用数码管进行显示。
首先使用三极管构成驱动电路,驱动数码管。
采用单片机的P2.4-P2.7作为位选输出口,使用P0.0-P0.7作为段选输出口,给相应输出口相应电位,使数码管显示相应转速。
图5 数码管接线图4、A/D采集部分设计将阻值1k的电位器连接在5伏电源与地之间,中间抽头接到A/D 采集端口P1.0上,进行A/D采样。
通过转动电位器,使P1.0端口的电位发生变化,采集值也相应的发生变化。
图6 A/D采集和转速反馈电路图5、驱动部分电路设计驱动部分作为电机与单片机控制器的结合部分,是本次设计的主电路,需要完成DC/DC变化的功能。
单片机产生PWM波送给驱动芯片2125,2125通过驱动电路控制MOSFET开关改变加在直流电机上的电压,从而达到改变转速的目的。
电路设计图如图6所示。
图7 驱动部分电路图软件部分源程序#include<reg51.h>#define uint unsigned int#define uchar unsigned charintadl;unsignedint temp1,sh1,ge1,n1,m1;unsigned char ad_average_result; //AD转换十次的平均值unsigned char Ain,Vin;unsigned char b,t,R;chartp=0;uint a1,b1,c1,d1;char TAB[10]={0x05,0xdd,0x46,0x54,0x9c,0x34,0x24,0x5d,0x04,0x14}; //数字0-9#define count 50000#define TH_M1 (65636-count)/256#define TL_M1 (65626-count)%256int count_T0=0;int pulse=0;int shudu1;sbit PWM=P1^3;void PWM1ms(int );#define scan P0ucharAD_finished ;uchar AD_RESULT;int result;uchar ZKB,ZKB1;voidsend_PWM(uchar);void delay(uint);void AD(){ADC_CONTR = ADC_CONTR|0x80; //启动ad电源delay(5);P1ASF |= 0x01; //配置P1.0的模拟输入功能AUXR1&=0xFB;ADC_CONTR=ADC_CONTR|0x60;delay(50);ADC_RES =0;ADC_RESL =0;ADC_CONTR |= 0x08; //启动AD转换AD_finished = 0;while (AD_finished ==0 ) //等待A/D 转换结束{AD_finished = (ADC_CONTR & 0x10); //0001,0000 测试A/D 转换结束否}ADC_CONTR &= 0xE7; //1110,0111 清ADC_FLAG 位, 关闭A/D转换,AD_RESULT=ADC_RES;//result=AD_RESULT;}void PWMchansheng(ucharzkb){CMOD = 0x00;CL = 0x00;CH = 0x00;CCAP0H = 255-zkb; //50% Duty CycleCCAPM0 = 0x42; //0100,0010 Setup PCA module 0 in 8BIT PWM, P1.3CR = 1; // 启动PCA/PWM 定时器}void delay(uint delay) //STC11F60XE,22.1184M,延时170us {uinti,j;for(;delay>0;delay--)for(i=0;i<10;i++);for(j=0;j<124;j++);}//speed的程序void speed(void) //注意啊这地main函数可能重复{IE=0x83;TMOD=0x01;TCON=0x01;TH0=TH_M1;TL0=TL_M1;TR0=1;//while(1);}void T0_1s(void) interrupt 1{TH0=TH_M1;TL0=TL_M1;count_T0++;if(++count_T0>=20){count_T0=0;shudu1=pulse*60/23;TH0=TH_M1;TL0=TL_M1;pulse=0;}}void my_int0(void) interrupt 0{pulse++; //码盘产生的脉冲数目}//数码管的程序//-------模块延时程序---------------------------- 1msvoid delay1ms(uint delay1ms) //STC11F60XE,22.1184M,延时1ms{uinti,j;for(;delay1ms>0;delay1ms--)for(i=0;i<10;i++)for(j=0;j<210;j++);}void xianshi(intshudu) //需要调用{//uint i;a1=shudu/1000; //千位b1=(shudu%1000)/100; //百位c1=((shudu%1000)%100)/10; // 十位d1=((shudu%1000)%100)%10; // 个位}void main(){ int i=0;speed();while(1){AD();xianshi(shudu1);ZKB= AD_RESULT; PWMchansheng(ZKB);// scan=0x80;scan=0x10;for(i=4;i>0;i--){。
if(i==4){P2=TAB[d1];delay1ms(1);scan>>=1;}else if(i==3){P2=TAB[a1];delay1ms(1);scan>>=1;}else if(i==2){P2=TAB[b1];delay1ms(1);scan>>=1;}else if(i==1){P2=TAB[c1];delay1ms(1);}}五、课程设计体会一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。
学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.还加强了电路图的设计能力以及加深了对以前所学的电力拖动相关课程知识的印象,能够灵活运用自己所学的知识。
我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.在此感谢我们的康伟老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次模具设计的每个实验细节和每个数据,都离不开老师您的细心指导。