您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机控制电动机调速测速器(修改) (2)
单片机技术课程设计单片机控制直流电动机调速测速器•随着社会的发展,各种智能化的产品日益走入寻常百姓家。为了实现产品的便携性、低成品以及对电源的限制,小型直流电机应用相当广泛。•对直流电机的速度调节,我们可以采用多种办法,下面我们小组将在给出直流电机调整和PWM实现方法的基础上,提供一种用单片机软件实现PWM调速的方法。目录目录第一章任务与要求第二章硬件电路设计第三章软件设计第一章项目描述单片机控制直流电动机调速,单片机属于前端的控制级,只需要能够产生可调的PWM波形就可以,PWM脉宽调制,调节电机的输入占空比就可以控制电机的平均电压,控制转速。驱动级,在控制级后。因为单片机弱电不能直接驱动电机这样的强电,所以需要用功率开关器件(如MOSFET等)来驱动电机。基本思路就是通过弱电控制强电(本任务控制的为小型直流电动机)。通过测速元件及LCD显示,在屏幕上能看到电机的转速,这就是最简单的单片机调速测速器。本设计以单片机为核心,应用红外传感器,电机驱动电路和LCD显示来实现的。1.单片机控制开关的断开与导通,通过按键来控制电动机的启停。PWM脉宽调制,改变占空比控制电动机的转速。通过按键控制改变转速。2.传感器测电动机转速。通过传感器测速及LCD显示器,能观察到电动机的转速。第二章硬件电路设计单片机控制单元AT89S51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对程序存储器重复编程。AT89S51将具有多种功能的8位CPU与FPEROM结合在一个芯片上,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比较高。AT89S51AT89S51引脚图LCD1602功能简介•LCD液晶显示器是一种功耗极低的显示器件,它广泛应用于便携式电子产品中。它不仅省电,而且能够显示大量的信息,如文字、曲线、图形等,其显示界面与数码管相比较有了质的提高。它的特点是低压微功耗,显示信息量大,易于彩色化,没有电磁辐射,寿命长。•LCD1602是一个应用广泛的显示芯片,它以其低廉的价格赢得了广大用户的青睐,它之所以起名为1602,是因为它一行可以显示8个字节,总共有两行,一共有16个字节,但是1602也有其局限性,它只可以显示数字,字母,但是不可以显示汉字,但是因为我们这个项目只需显示数字,所以我们就选择了这一款经济实惠的显示屏。1602字符型液晶显示器实物1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm控制1602只需要四个操作写命令读状态写显示数据读显示数据•液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平‘表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。直流电动机驱动•电动机只有两根引线,调节供电电压或电流可调速,更换两根引线的极性,电动机换向。其驱动电路受单片机控制,一般要求能进行正反转和调速驱动,而且体积不宜太大。•在此电路中有钳位二极管、保护电容,同时具备正反转和调速功能,在3~12V供电的微型直流电机的驱动中几乎是通用电路。但驱动能力也有一定限度,使用的元件太多,成本是一个方面,一旦出现故障将无从下手,只能报废,而且仅能驱动一台微型直流电动机。•这是一个占空比可调的脉冲振荡器。电机M是用它的输出脉冲驱动的,脉冲占空比越大,电机电驱电流就越小,转速减慢;脉冲占空比越小,电机电驱电流就越大,转速加快。因此调节电位器RP的数值可以调整电机的速度。如电机电驱电流不大于200mA时,可用CB555直接驱动;如电流大200mA,应增加驱动级和功放级。图中VD3是续流二极管。在功放管截止期间为电驱电流提供通路,既保证电驱电流的连续性,又防止电驱线圈的自感反电动势损坏功放管。电容C2和电阻R3是补偿网络,它可使负载呈电阻性。整个电路的脉冲频率选在3~5千赫之间。频率太低电机会抖动,太高时因占空比范围小使电机调速范围减小。测速传感器•该传感器由两对完全相同的红外发射装置、红外接收与处理装置。红外发射装置以一定频率f发射红外光。红外接收和处理电路将该频率的红外光转换成电信号并进行处理,输出信号经逻辑电路后转换成逻辑电平,来控制计数器。•通过红外传感器及外围电路我们知道,v=f0/n×s可知只要求得n就可求得速度v。这里t=n/f0。单片机主要完成计算叶轮在两红外传感器之间转过的时间以及与计算机的通信。转过的时间的计算方案如下:把红外光电传感器输出的y信号直接送至单片机的中断口,利用中断子程序对计数器进行起停操作,当叶轮通过第一个红外发射装置时,启动计数。通过第二个红外发射装置时,停止计数。•接收部分采用专用红外接收集成电路,其工作中心频率与发射部分红外光频率相同。红外光电二极管接收调制红外光,进行光-电转换后,经专用红外接收集成电路处理得到高电平。信号处理电路将该电平进一步进行处理,以控制计数器正确计出电机叶轮通过两红外探头的时间。该传感器接收部分对红外信号反应非常灵敏,必须良好屏蔽,防止红外反射光及其他红外信号的干扰,提高接收电路的抗干扰能力,防止误动作。红外对管器件测转速•在本项目中,我们对转速的采集所采用的传感器是红外对管。我们所采用红外对管的原因有如下几点:•1、红外对管的价格便宜。•2、红外对管的灵敏度虽然不是很高但完全能够满足低压直流电机的速度采集。•3、红外对管的驱动和信号转换电路比较简单。红外对管•红外对管是红外线发射管与光敏接收管,或者红外线接收管,或者红外线接收头配合在一起使用时候的总称。红外线在光谱中波长自0.76至400微米的一段称为红外线,红外线是不可见光线。所有高于绝对零度(-273.15℃)的物质都可以产生红外线。现代物理学称之为热射线。医用红外线可分为两类:近红外线与远红外线。•红外线发射管红外线发射管在LED封装行业中主要有三个常用的波段,如下850NM、875NM、940NM。根据波长的特性运用的产品也有很大的差异,850NM波长的主要用于红外线监控设备,875NM主要用于医疗设备,940NM波段的主要用于红外线控制设备。EG:红外线遥控器、光电开关、光电计数设备等。•光敏接收管它是一个具有光敏特征的PN结,属于光敏二极管,具有单向导电性,因此工作时需加上反向电压。无光照时,有很小的饱和反向漏电流(暗电流)。此时光敏管不导通。当光照时,饱和反向漏电流马上增加,形成光电流,在一定的范围内它随入射光强度的变化而增大。红外线接收管•红外线接收管功能与光敏接收管相似只是不受可见光的干扰,感光面积大,灵敏度高,属于光敏二极管,一般只对红外线有反应。•红外线接收头就是在红外线接收管的基础上增加了对微弱信号进行放大的处理的电路,类似与三极管的放大效果。主要程序•#includereg51.h•#includeintrins.h•unsignedcharcodelcd[]={speed0k};•unsignedcharcodetable[]={0123456789};•unsignedcharcodepin[]={Hz};•unsignedcharzhuan[5];•unsignedcharshi=20;•unsignedinty,jia;•sbitrd=P2^7;•sbitrw=P2^6;•sbite=P2^5;•sbitkong=P1^0;•voiddelay1(unsignedcharms)//延时函数•{•unsignedcharj;•while(ms--)•{•for(j=0;j125;j++);•}•}•voiddelay()//延时函数•{•_nop_();•_nop_();•_nop_();•}•bitdu()//LCD读忙状态•{•bits;•rw=1;•rd=0;•delay();•e=1;•delay();•s=(bit)(P0&0x80);•e=0;•returns;•}•voidxie(unsignedcharcom)//LCD写命令•{•while(du());•rd=0;•rw=0;•delay();•e=0;•P0=com;•e=1;•delay();•e=0;•//delay1(20);•}•voidxieshuju(unsignedchardat)//LCD写数据•{•while(du());•rw=0;•rd=1;•delay();•e=0;•P0=dat;•e=1;•delay();•e=0;•}•voidchushihua()//LCD初始化•{•xie(0x38);•xie(0x0c);•xie(0x01);•xie(0x06);•}•voiddelayms(unsignedchartime)//延时函数•{•unsignedchari,j;•for(i=0;itime;i++)•for(j=100;j1;j--);•}•voidtiaosu(unsignedintshi1)//电机调速•{•kong=0;•delayms(5);•kong=1;•delayms(shi1);•}•unsignedcharkeycan()//按键返回值函数•{••staticunsignedcharkey;•if(P1!=0xff)•{•delay1(10);•if(P1!=0xff)•key=P1&0Xff;•if(P1==0xfd)•jia=jia+5;•if(P1==0xfb)•jia=jia-5;•if(jia=5)•jia=3;•}•while(P1!=0xff);•return(key);•}•voidzhuanhuan()//电机转速数据处理•{•zhuan[0]=table[y/1000%10];•zhuan[1]=table[y/100%10];•zhuan[2]=table[y/10%10];•zhuan[3]=table[y%10];•}•voidmain()•{•unsignedcharwei;•unsignedcharw=0;•EA=1;•TR0=1;•ET0=1;•TR1=1;•ET1=1;•TH0=0x3c;•TL0=0xb0;•TH1=0x00;•TL1=0x00;•TMOD=0x51;•chushihua();•delay1(20);//在这里如果时间不过长的话控制位置无用•xie(0x84);•delay();•while(lcd[w]!='\0')//LCD显示cesuji•{•xieshuju(lcd[w]);•w++;•delay();•}•w=0;•xie(0xca);•while(pin[w]!='\0')//LCD显示hz•{•xieshuju(pin[w]);•w++;•delay();•}•while(1)•{•wei=keycan();•switch(wei)•{•case0xfe:kong=0;break;//电机全速启动•case0xfd:•case0xfb:tiaosu(jia);break;•case0xf7:kong=1;break;//电机停止•}•}•}•voidzhongduan()interrupt1//中断刷新数据•{•unsignedchari;•TH0=0x3c;•TL0=0xb0;//50ms中断一次•shi--;•if(shi1)//1s取数据一次•{•shi=20;•y=(TH1*256+TL1);//红外对管中断次数•TH1=0x00;•TL1=0x00;•zhuanhuan();//数据转换•xie(0xc6);•for(i=0;i4;i++)//LCD数据处理显示•{
本文标题:单片机控制电动机调速测速器(修改) (2)
链接地址:https://www.777doc.com/doc-3355406 .html