1.1 相关背景和应用简介
1.2 总体设计方案................................................................................................2
1、各模块的功能介绍………………………………………………………2
2、总体设计框图……………………………………………………………3
2、硬件电路的设计
2.1 传感器的选型及电路接口设计……………………………………………..4
2.2 单片机最小系统设计………………………………………………………..6
一、复位电路………………………………………………………………...6
二、晶振电路………………………………………………………………...8
2.3 显示电路设计………………………………………………………………..9
2.4 脉冲电路设计……………………………………………………………….11
3、软件部分的设计
3.1 总体流程图及子程序流程图……………………………………………….12
3.2 主要程序…………………………………………………………………….13
4、仿真及结果
4.1 数据分析表………………………………………………………………….16
4.2 仿真界面图………………………………………………………………….16
5、小结
课程设计小结……………………………………………………………………..17
6、参考文献
参考文献…………………………………………………………………………..18
1、概述
1.1相关背景和应用简介
目前国内外测量电机转速的方法很多,按照不同的理论方法,先后产生过模拟测速法(如离心式转速表、用电机转矩或者电机电枢电动势计算所得)、同步测速法(如机械式或闪光式频闪测速仪)以及计数测速法。计数测速法又可分为机械式定时计数法和电子式定时计数法。传统的电机转速检测多采用测速发电机或光电数字脉冲编码器,也有采用电磁式(利用电磁感应原理或可变磁阻的霍尔元件等)、电容式(对高频振荡进行幅值调制或频率调制)等,还有一些特殊的测速器是利用置于旋转体内的放射性材料来发生脉冲信号.其中应用最广的是光电式,光电式测系统具有低惯性、低噪声、高分辨率和高精度的优点.加之激光光源、光栅、光学码盘、CCD 器件、光导纤维等的相继出现和成功应用,使得光电传感器在检测和控制领域得到了广泛的应用。而采用光电传感器的电机转速测量系统测量准确度高、采样速度快、测量范围宽和测量精度与被测转速无关等优点,具有广阔的应用前景。
1.2 总体设计方案
1、各模块的功能介绍
图1.1 系统原理图
各部分模块的功能:
①传感器:用来对信号的采样。
②放大、整形电路:对传感器送过来的信号进行放大和整形,在送入单片机进行数据
的处理转换。
③单片机:对处理过的信号进行转换成转速的实际值,送入LED
④LED 显示:用来对所测量到的转速进行显示。
2、总体设计框图
图1.2 总体设计框图
2、硬件电路的设计
2.1 传感器的选型
一、霍尔传感器
霍尔传感器是利用霍尔效应进行工作的?其核心元件是根据霍尔效应原理制成
的霍尔元件。本文介绍一种泵驱动轴的转速采用霍尔转速传感器测量。霍尔转速传感
器的结构原理图如图2.1, 霍尔转速传感器的接线图如图2.2。
传感器的定子上有2 个互相垂直的绕组A 和B, 在绕组的中心线上粘有霍尔片
HA 和HB ,转子为永久磁钢,霍尔元件HA 和HB 的激励电机分别与绕组A 和B 相连,
它们的霍尔电极串联后作为传感器的输出。
图2.1 霍尔转速传感器的结构原理图
图2.2 霍尔转速传感器接线图
缺点:采用霍尔传感器在信号采样的时候,会出现采样不精确,因为它是靠磁性感应才采集脉冲的,使用时间长了会出现磁性变小,影响脉冲的采样精度。
二、光电传感器
整个测量系统的组成框图如图2.2所示。从图中可见,转子由一直流调速电机
驱动,可实现大转速范围内的无级调速。转速信号由光电传感器拾取,使用时应先在转子上做好光电标记,具体办法可以是:将转子表面擦干净后用黑漆(或黑色胶布)全部涂黑,再将一块反光材料贴在其上作为光电标记,然后将光电传感器(光电头)固定在正对光电标记的某一适当距离处。光电头采用低功耗高亮度LED ,光源为高可靠性可见红光,无论黑夜还是白天,或是背景光强有大范围改变都不影响接收效果。光电头包含有前置电路,输出0—5V 的脉冲信号。接到单片机C51 的相应管脚上,通过C51 内部定时/计时器T0、T1 及相应的程序设计,组成一个数字式转速测量系统。
图2.3 光电传感器测量接口电路
优点:这种方案使用光电转速传感器具有采样精确,采样速度快,范围广的特点。综上所述,方案二使用光电传感器来作为本设计的最佳选择方案。
2.2单片机最小系统设计
一、复位电路
MCS-51 单片机复位电路是指单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使CPU 和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。
图2.4 复位电路
①复位功能:
复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销
复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。单片机的复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST 通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位(如图2.5 (a))和按钮复位(如图2.5(b))两种方式。
图2.5 RC复位电路
②单片机复位后的状态:
单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,
这表明程序从0000H 地址单元开始执行。单片机冷启动后,片内RAM 为随机值,运行中的复位操作不改变片内RAM 区中的内容,21 个特殊功能寄存器复位后的状态为确定值,见表1。
值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的
初态,减少应用程序中的初始化部分是十分必要的。
说明:表2-6 中符号*为随机状态:
表2.6 寄存器复位后状态表
PSW=00H,表明选寄存器0 组为工作寄存器组; SP=07H,表明堆栈指针指向片内RAM 07H 字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H 单元中;Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出。IP=×××00000B,表明各个中断源处于低优先级; IE=0××00000B,表明各个中断均被关断; 系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。
51 单片机的复位是由RESET 引脚来控制的,此引脚与高电平相接超过24 个振荡周期后,51 单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET 引脚转为低电平后,才检查EA 引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。51 单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,至于内部RAM 内部的数据则不变。
二、晶振电路
晶振(图2.7)是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。
ATC51 单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1 和
XTAL2 分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1 和C2 构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为30μF。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。晶体振荡电路如图2.7:晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。
图2.7 晶振电路
2.3显示电路设计
(1)许多电子产品上都有跳动的数码来指示电器的工作状态,其实数码管显示的数码均是由八个发光二极管构成的。每段上加上合适的电压,该段就点亮。LED 数码有共阳和共阴两种,把这些LED 发光二极管的正极接到一块(一般是拼成一个8 字加一个小数点)而作为一个引脚,就叫共阳的,相反的,就叫共阴的,那么应用时这个脚就分别的接VCC 和GND。再把多个这样的8 字装在一起就成了多位的数码管了。实物如图2.8所示
图2.8 数码管
共阳型(图2.9)就是八个发光管的正极都连在一起,作为一条引线.A~G 段用于显示数字,字符的笔画,(dp 显示小数点),每一段控制A~G~dp 的亮与来。
内部结构:
图2.9 共阳极LCD
共阴型(图2.10)就是七个发光管的负极都连在一起,作为一条引线。A~G 段用于显示数字,字符的笔画,(dp 显示小数点),每一段控制A~G~dp 的亮与来.
内部结构:
图2.10 共阴极LCD
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O 端口进行驱动,或者使用如BCD 码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O 端口多,如驱动5 个数码管静态显示则需要5×8=40 根I/O 端口来驱动,要知道一个S51 单片机可用的I/O 端口才32 个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8 个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM 增加位选通控制电路,位选通由各自的I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O 端口,而且功耗更低。
(2)段码表
表2.11 为LED 段码表
表2.11 LED断码表
2.4 脉冲电路的设计
在数字电路中分别以高电平和低电平表示1状态和0状态。此时电信号的波形是非正弦波。通常,就把一切既非直流又非正弦交流的电压或电流统称为脉冲。
脉冲波形多种多样,表征它们特性的参数也不尽相同,这里,仅以图Z1602所示的矩形脉冲为例,介绍脉冲波形的主要参数。
(1)脉冲幅度Vm--脉冲电压或电流的最大值。脉冲电压幅度的单位为V、mV,脉冲电流幅度的单位为A、mA。
(2)脉冲前沿上升时间tr--脉冲前沿从0.1Vm上升到0.9Vm所需要的时间。单位为ms、μs、ns。
(3)脉冲后沿下降时间tf--脉冲后沿从0.9Vm下降到0.1Vm所需要的时间。单位为:ms、μs、ns。
(4)脉冲宽度tk--从脉冲前沿上升到0.5Vm处开始,到脉冲下降到0.5Vm处为止的一段时间。单位为:s、ms、μs或ns。
(5)脉冲周期T--周期性重复的脉冲序列中,两相邻脉冲重复出现的间隔时间。单位为:s、ms、μs。
(6)脉冲重复频率--脉冲周期的倒数,即f =1/T,表示单位时间内脉冲重复出现的次数,单位为Hz、kHz、MHz。
(7)占空比tk/T--脉冲宽度与脉冲周期的比值,亦称占空系数。
图2.12 脉冲输入电路
3、软件部分的设计
3.1 总体流程图及显示子流程图
①主程序流程图3.1
图3.1 流程图
②显示子程序流程图3.2
图3.2 显示子程序流程图
③定时计数子程序流程图3.3
图3.3 定时计数子程序流程图
3.2主要程序
#include #define uchar unsigned char unsigned int a,count; uchar i; uchar dis_buf[4]; //显示缓冲区 uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //代码表 uchar code bittable[4]={0xfe,0xfd,0xfb,0xf7}; //位码控制表 void dl_ms() { unsigned int j; for(j=0;j<200;j++); } void abc() { uchar j; count=0; for(j=0;j<4;j++) dis_buf[i]=0; TMOD=0x51; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=0; TL1=0; ET1=1;PT1=1;EA=1;TR1=1;TR0=1;ET0=1; } void efg() { count=TH1*256+TL1; a=count; dis_buf[3]=a%10; a=a/10; dis_buf[2]=a%10; a=a/10; dis_buf[1]=a%10; a=a/10; dis_buf[0]=a%10; TH1=0;TL1=0; } void display(void) //显示函数 { uchar segcode,i; for(i=0;i<4;i++) { segcode=dis_buf[i]; //显示缓冲器内容查表 P1=table[segcode]; P2=bittable[i]; dl_ms(); P2=0xff; //关闭显示 } } void main(void) { abc(); while(1) {display();} } void time0_int() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; i++; if(i==20) { i=0; efg(); } } 4、仿真及结果 4.1 数据分析表 5、小结 通过此次课程设计,使我更加扎实的掌握了有关传感器原理方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。 过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可! 课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了传感器的选型、keil与proteus的联调、单片机的实用、及C51语言熟练编译等等一系列的知识。 我认为,在这学期的实验中,不仅培养了思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。 此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。 6、参考文献 1、《电力拖动自动控制系统-运动控制系统》机械工业出版社,陈伯时 2003 2、《一种高精度实时电机转速测量新方法》齐齐哈尔大学学报. 马全权,李庆辉,强盛 2002 3、《电机转速测量设计实验》 实验室科学,孙桂荣,班莹,刘鸣. 2005 4、《传感器原理及应用》北京航空航天大学出版社. 王雪文.张志勇. 2004 5、《模拟集成电路应用》西北工业大学出版社,王秀杰,张畴先. 2003 6、《MCS-51 系列单片机应用系统设计》北京航空航天大学出版社,何立民.1990 7、《单片微型计算机原理及接口技术》辽宁科学技术出版设, 蒋智勇. 1992 8、《单片微型计算机原理及接口技术》机械工业出版社, 穆兰. 1995 9、《MCS-51 单片机应用设计》哈尔滨工业大学出版社, 张毅刚. 1990
4.2仿真界面图脉冲频率/Hz 1 50 100 200 500 1000 2000 5000 9999 转速输出/r/s 1 50 100 201 500 1001 2000 5001 9998 系统误差/% 0 0 0 0.5 0 0.1 0 0.02 0.01