1、基于单片机的电机转速仪设计任务书1 设计目的与要求(1)显示: 采用数码管显示电动机的实时转速。(2)实现2台以上电机的转速实时监测和显示。(3)增加速度上下限检测报警功能。(4)可以设定速度的上下限。2设计内容 (1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH文件生成与打印输出;(5)PCB文件生成与打印输出;(6)系统的总体设计、安装和调试。3编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。4答辩 在规定时间内,完成叙述并回答问题。目录1 引言12 总体设计方案12.1 设计思路12.2 设计方框图13 设计原理分析23
2、.1 信号采集电路的设计23.1.1 霍尔传感器23.1.2 转速测量原理2 3.2 控制电路的设计33.2.1复位电路33.2.2.晶振电路43.3报警电路53.4显示电路54 总结与体会6附录一系统电路PCB图7附录二系统电路原理图8附录三系统总程序9电机转速仪课程设计摘 要: 转速是电器运行过程中的一个重要监测量,目前国内外常用的转速测量方法有离心式转速表测速法、闪光测速法、对射式测速法和霍尔元件测速法等。直流电机转速测量仪特别针对高转速的电机,准确测量直流电机的转速、电压、电流、功率等参数。具有测量速度快,精度高,使用方便,轻巧美观等优点。设计了基于单片机AT89C51的直流电机转速测
3、量系统。完成了电机转速测量系统的硬件电路设计、霍尔传感器测量电路的设计、显示电路的设计。关键词:电机转速测量;霍尔传感器;单片机;89C51;LCD液晶显示1 引言转速是各类电器运行中的一个重要物理量,如何准确、快速而又方便地测量转速,极为重要。转速是工程中应用非常广泛的一个参数,其测量方法较多,而模拟量的采集和模拟处理一直是转速测量的主要方法,目前这种测量方法已不能适应现代科技发展的要求。随着大规模及超大规模集成电路的发展,使得全数字测量仪器越来越普及,其转速测量仪器也可以用全数字化处理。在测量范围和测量精度方面都有很大提高。因此,本次设计的目的是:对各种测量转速的方法加以分析,针对不同的应
4、用环境,利用AT89C51系列单片机设计一种全数字化测速仪器,并从提高测量精度的角度出发,分析讨论其产生误差的可能原因,为今后的实际使用提供参考。本设计以单片机为中心,设计全数字化测速仪器,其次该转速测量仪器由于采用全数字化结构。在现代化生活中,转速测量仪器的研究是一个非常有意义的课题。2 总体设计方案2.1 设计思路该设计须由信号采集,信号处理,单片机计算,数码显示构成。2.2 设计方框图转动系统传感器显示电路单片机处理电路3 设计原理分析3.1 信号采集电路的设计3.1.1霍尔传感器A04E霍尔元件和磁钢 管脚图3.1.2转速测量原理本系统采用89C51中的中断对转速脉冲计数。定时器T0工
5、作于定时方式,工作于方式1。每到1s读一次外部中断计数值,此值即为脉冲信号的频率,根据直流电机转速计算公式可计算出电机的转速。当直流电机通过传动部分带圆盘旋转时,霍尔传感器根据圆盘上得磁片获得一系列脉冲信号。这些脉冲信号通过单片机系统定时/计数器计数,定时器T0定时。定时器T0完成100次溢出中断的时间T除以测得的脉冲数m,经过单位换算,就可以算得直流电机旋转的速度。直流电机转速计算公式:n=60m/(N1TN)(rpm) 其中:n为直流电机转速,N为栅格数,N1为T0中断次数,m为在规定时间内测得的脉冲数,T为定时器T0定时溢出时间。3.2 控制电路的设计这次设计采用的是89c51单片机,用
6、p0口作为4位一体数码管的信号输入端,以p2口后位作为位选信号输入端,以T0作为定时器,以T1作为计数器。这样设计可以充分利用89s51的定时计数功能,使其一边定时,一边计数。3.2.1复位电路MCS-51单片机复位电路是指单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关
7、或电源插头分-合过程中引起的抖动而影响复位。在这次设计中我采用上电自动复位电路。单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值(表1)。 说明:中符号*为随机状态:表1 寄存器复位后状态表特殊功能寄存器初始状态特殊功能寄存器初始状态ABPSW00H00H00HTMODTCONTH000H00H00HSPDPLDPHP0P3IPIE07H00H00HFFH*00000B0*00000BTL0TH1TL1SBU
8、FSCONPCON00H00H00H不定00H0*BPSW00H,表明选寄存器0组为工作寄存器组; SP07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;Po-P3FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出 。IP00000B,表明各个中断源处于低优先级; IE000000B,表明各个中断均被关断; 系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状
9、态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,至于内部RAM内部的数据则不变。3.2.2.晶振电路晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器
10、一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为30F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。图1 控制电路原理图3.3报警电路本设计采软件处理报警,利用有源蜂鸣器进行报警
11、输出,采用直流供电。当所测速度超过获低于所预设的速度时,数据口相应拉高电平,报警输出。(也可采用发光二级管报警电路,如过需要报警,则只需将相应位置1,当参数判断完毕后,再看报警模型单元ALARM 的内容是否与预设一样,如不一样,则发光报警)报警电路硬件连接见图5。图 2 蜂鸣器电路连接图3.4显示部分1602字符型LCD与单片机相连图3 LCD显示原理图4 总结与体会经过本次实习,我深刻体会到了单片机功能的强大,也进行了大量的实践操作,经历了未来可以真正用到工作中的东西。采用单片机技术来实现转速的测量,可以提高转速的测量,可以提高转速测量的精确度,并且加快了采样的速率,具有较好的实时性。这也体
12、现了我们实习的目的,开阔了我们的眼界。基于单片机的测速仪的设计,让我学到很多东西,有很多知识都是书本上没有的,必须经过查找与讨论才能得到结果。所以这次设计也提高了我们的学习能力。通过这次单片机实习,我也发现了我的许多不足,我们已经大三了,而现在的能力还远远不够,在专业上没有强有力的专长,我感到了就业与各方面的压力,所以我明白了必须抓住每次学习机会,毕竟我们的大学学习生活已过去一大半。在此也感谢耐心教导我们的老师,是他们的帮助才换来我们的进步。本次实习采取了小组制,也感谢我的搭档,使我也明白了团队力量才是强大的。参考文献1. 康华光电子技术基础(模拟部分)第五版M.高等教育出版社,2005 2.
13、 康华光电子技术基础(数字部分)第五版M.高等教育出版社,20053. Altium Designer8.0 中文版 电路设计 标准教程.清华大学出版社4. 徐君鹏 单片机实验指导书.附录一 图4系统电路PCB图附录二 图5系统电路原理图附录三#include#define uchar unsigned char#define uint unsigned intuint mm=1234;uchar code table=0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,; delay(uint m) uint i,j; for(i=m;i0;i
14、-) for(j=60;j0;j-);xian_shi() uchar qian,bei,shi,ge; uint jj; jj=mm; jj*=20; /jj+=1; qian=jj/1000; bei=jj%1000/100; shi=jj%100/10; ge=jj%10; P2=0x10; P0=tableqian; delay(1); /P2=0; P2=0x20; P0=tablebei; delay(1); /P2=0; P2=0x40; P0=tableshi; delay(1); /P2=0; P2=0x80; P0=tablege; delay(1); /P2=0; tim
15、er_init() /定时器计数器初始化函数 EA=1; ET0=1; ET1=1; TMOD=0X51; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TH1=0; TL1=0; TR0=1; TR1=1;main() timer_init(); P0=0; /开始数码管不显示 while(1) xian_shi(); delay(2); /数码管刷新时间单位毫秒 void timer0() interrupt 1 TR0=0; TR1=0; TH0=(65535-50000)/256; TL0=(65535-50000)%256; mm=0; mm|=TH1; mm=(mm8)|TL1;/mm-=55536; TH1=0; TL1=0; TR0=1; TR1=1;void timer1() interrupt 3 /显示0000说明出错 TR1=0; TR0=0; mm=0; / TH1=0; / TL1=0; / TR1=1; 11