基于单片机的霍尔测速报警系统-课程设计论文正文大学论文.doc
-
资源ID:86278541
资源大小:835KB
全文页数:30页
- 资源格式: DOC
下载积分:9金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于单片机的霍尔测速报警系统-课程设计论文正文大学论文.doc
传感器与测控电路课程设计报告 学生姓名: 禹 振 榜 指导老师:杨书仪 余以道 专业班级:12级测控二班 所在学院:机电工程学院 学 号 1203030214 课 题 基于单片机的霍尔测速报警系统 基于单片机的霍尔测速报警系统的设计 摘 要在生产中,电机应用十分广泛,比如汽车速度显示,设备工作时的档位,都需要我们了解电机或者机器的转速。转速作为工程中应用的一个非常广泛的参数,它的测量方法有很多,特别是单片机对脉冲数字信号的强大处理能力,使得全数字测量系统越来越普及,越来越方便。本设计属于码盘转速测量系统,实现转速的实时测量和显示。本系统以STC90C51单片机为核心,旋转编码器通过用传感器测量非电量,转变成模拟电量,再通过一系列测控电路。获得数字信号,实现实时轴转速测量,同时用四位段码式LED数码管显示模块显示电机转速,并且加入了报警模块。详细阐述了转速测量系统的工作过程,以及硬件电路的设计、显示效果。本文吸收了硬件软件化的思想,实现了题目要求的功能。关键词:转速测量,,单片机, LED显示模块,霍尔传感器。 目 录第一部分 绪 论1.1 设计的任务与要求 1第二部分 功能分析与设计要求2.1 测控系统功能的概述 12.2系统模块的确定 22.3各模块的选择 2 2.1.1传感器模块的论证与选择 2 2.1.2报警模块的论证与选择 3 2.1.3显示模块的论证与选择 3 2.1.2单片机模块的论证与选择 32.4 小结 3第三部分 测控系统的总体设计3.1 测控系统的总体设计 4 3.1.1 硬件原理图 4 3.1.2 硬件电路设计总图 53.2 测控系统子模块简介 5 3.2.1传感器原理及分电路析 5 3.2.2 报警模块 7 3.2.3 LED数码管 8 3.2.4 STC90C51单片机10第四部分 软件设计 4.1 程序设计步骤 124.2 程序流程图 13 4.2.1 主程序设计 14 4.2.2 中断服务程序设计 15第五部分 软件调试与仿真5.1 KEIL软件进行程序调试 155.2 PROTEUS软件仿真 165.3 硬件软件联合调试 17 5.3.1 硬件电路的焊接与搭建 18 5.3.2搭接检查步骤 19第六部分 结论参考文献 20附录 第一部分 绪 论1.1 设计的任务与要求 本课题的任务是:设计一套测量转速的仪器,转速在数码管上显示,且具有超速报警功能,精度到达转速个位,高低速实现报警。要求会选用传感器并搭建测控电路,实现课题所要求的功能 本设计需要对各种测量转速的基本方法予以分析,针对不同的应用环境,利用单片机设计一种全数字化测速系统,从提高测量精度的角度出发,分析讨论其产生误差的可能原因,为今后的实际使用提供借鉴。并从实际硬件电路出发,分析电路工作原理和软件流程。熟悉传感器的选择,及外围电路的设计,了解测控系统设计的基本流程 第二部分 功能分析与设计要求2.1 测控系统功能的概述 在电机或转轴上放置一个或多个磁钢,将霍尔传感器有规律的放置在电机或者转轴附近,当有磁场通过时,在传感器上就可以产生电信号,通过测控电路对电信号的处理得到有用信号送单片机内部,根据信号测出电机转速,并在数码管上显示,且有报警功能。2.2系统模块的确定通过对功能的分析可知,系统模块分为以下几类:1. 传感器模块,以将非电信号信号转化为电信号。2. 报警模块,当速度过低或过高时,启动此模块。3. 显示模块,通过单片机处理得出转速,送显示模块显示。4. 单片机模块,用以对脉冲计数,对外部信号进行处理。5. 电源模块,这里使用现有电源,初步确定为5v直流电源,故不再设计。 此外由于单片机有计数功能,计数模块在单片机模块中讨论 2.3各模块的选择 2.1.1传感器模块的论证与选择霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,霍尔传感器具有许多优点,体积小,重量轻,寿命长,安装方便,功耗小,频率高(可达1MHZ),耐震动,不怕灰尘、油污、水汽及盐雾等的污染或腐蚀。广泛用于各类工程实际应用中,出于成本的考虑,在这里我们选用直插式霍尔片传感器A3144,与普通磁钢配套使用,体积小,灵敏度高,价格在12元左右,基本可以满足本课题的要求 2.1.2报警模块的论证与选择方案一:采用蜂鸣器与LED发光二极管为主要报警系统,该系统成本低,电路容易实现,编程容易。方案二:采用音乐语言报警,更人性化,但设计难度大,成本高。基于现有设备器件,选用方案一。 2.1.3显示模块的论证与选择这里课题已要求使用数码管显示,由于测量转速适中,我们采用四位位选数码管完全能满足要求。基于现有器件选用共阴极接法,但由于数码管功耗较高,故需要加入驱动芯片,在这里我们使用51单片机开发板上现有的锁存芯片74573 2.1.2单片机模块的论证与选择此系统十分简单,数据处理不大,采用8位单片机完全能满足需要,基于国内8位单片机领导厂商宏晶公司生产的系列单片机的低价格,高性能的优势,我选用了系类9051八位单片机,编程和使用与一般80c51单片机一样。2.4 小结通过本小计,对本设计的基本模块进行了选择,确定了显示,报警,计数,传感器,单片机选择的可行性。并在实现仪器功能的基础上充分考虑了成本问题。 第三部分 测控系统的总体设计3.1 测控系统的总体设计 3.1.1 硬件原理图模拟量转换为数字量电压比较器霍尔传感器单片机数码管显示电机驱动电路计数脉冲输入非电量转换为模拟电量声光报警系统原理图如下: 3.1.2 硬件电路设计总图系统硬件电路图如下:3.2 测控系统子模块简介 3.2.1传感器原理及转换电路分析由霍尔效应知,霍尔电势的大小取决于:Rh为霍尔常数,它与半导体材质有关;I为霍尔元件的偏置电流;B为磁场强度;d为半导体材料的厚度。对于一个给定的霍尔器件,当偏置电流 I 固定时,UH将完全取决于被测的磁场强度B。一个霍尔元件一般有四个引出端子,其中两根是霍尔元件的偏置电流 I 的输入端,另两根是霍尔电压的输出端。如果两输出端构成外回路,就会产生霍尔电流。在半导体薄片两端通以控制电流I,并在薄片的垂直方向施加磁感应强度为B的匀强磁场,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压。 霍尔效应原理图 以上为alldatasheet网站关于3144的数据 外部接口 本系统采用开关型霍尔传感器A3144以及磁钢,由它们来检测电机的转速。工作方式为:将磁钢安装在电机的转轴上,而霍尔传感器则放在转轴的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感器时,霍尔传感器的工作原理知,此时将输出一个低电平信号;而当磁钢离开霍尔传感器后,又将输出一个高电平。这样通过高低电平的转换,将其送入单片机后就可以测量它的转速。 由于由霍尔传感器输出的电平未经特殊处理,且存在干扰,故不是完整的脉冲电平,在后续电路中进行改进,这里我们用到电压比较电路,选用常用的LM393双电压比较集成芯片,下图是ALLDATASHEET数据,电路中只用到4、8、1、2、3脚。电路图也在此给出: 3.2.2 报警模块报警模块可选用无源蜂鸣器或者有源蜂鸣器,有源蜂鸣器由于内部有震荡元件,故通电后就可以报警,由于硬件设备的限制,我们选用无源蜂鸣器,但编程上需要花点心思。 3.2.3 LED数码管显示电路采用LED数码管动态显示,LED(Light-Emitting Diode)是一种外加电压从而渡过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。七段发光数码管结构共阴极数码管的发光二极管阴极必须接低电平,当某发光二极管的阳极为高电平时(一般为+5V)时,此二极管点亮;共阳极数码管的发光二极管是阳极接到高电平,对于需要点亮的发光二极管使其阴极接低电平(一般为地)即可。根据LED显示器可知,如果希望显示“8”字,那么除了“dp”管不要点亮以外,其余管全部点亮。同理如果要显示“1”,只需bc两个发光二极管点亮,其余均布点亮。通常将控制发光二极管的8位数据称为段选码,共阴极和共阳极的段选码互为补码。LED显示器的段选码如下表所示: LED数码管段选码 显示部分电路图如下,这里出于成本简便考虑,用到的是现有的单片机开发板,实际试验中只需用到四位数码管,且未加入单个发光二极管。 值得注意的是由于数码管功耗比较高,故在前面加入了74HC573锁存器芯片用做驱动数码管,但这里用到的并不是锁存功能。 3.2.4 STC90C51单片机90单片机是国内八位高性能单片机,选用的单片机带16K字节闪烁可编程可擦除只读存贮器,STC的90C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.P0口:P0口是一组8位漏极开路型双向I0口,也即地址数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路。P1口:Pl是一个带内部上拉电阻的8位双向IO口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流.P2口:P2是一个带有内部上拉电阻的8位双向IO口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流P3口:P3口是一组带有内部上拉电阻的8位双向I0口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL).P3口除了作为一般的I0口线外,更重要的用途是它的第二功能,上面表已给出。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效PSEN信号。XTALl:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出 第四部分 软件设计 4.1 程序设计步骤第一步分析问题,明确任务要求,还要将解决的问题抽象成数学化。第二部确定算法,根据实际问题和指令系统的特点确定完成这一任务必须经历的步骤。第三部选择所选择的算法,确定内存单元的分配:确定解决问题的步骤和顺序,画出程序的流程图。第四部根据流程图,编写源程序。第五部上机对源程序进行编译、调试。4.2 程序流程图测量过程是测量转速的传感器和电机同轴连接。电机每转过一圈产生一个脉冲。经电压比较器整形后成为单片机计数器的输入脉冲,控制计数的时间就可以得到相应的转速,然后确定是否在所需量程以内,在则送数码管显示,不在则启动报警器。电机计算转速的公式为: n=60*m/(N1*T*N) (r/min)其中:n为电机转速,N为栅格数,即磁钢的个数。N1为中断次数,m为在规定时间内测得的脉冲数,T为T0的溢出时间。 外部脉冲通过单片机定时/计数器T1进行计数,内部采用定时,定时为10MS,即溢出100次则记满1秒,在本例磁钢数为1 ,N1*T设定为一秒,故转速即为n=60m (r/min) 4.2.1 主程序设计 开 始初始化定时计数器定时刷新数码管显示否计数器是否循环100次是计算转速是否超速是 报 警否 返 回数码管显示4.2.2 中断服务程序设计开T0中段是否中断 100次否中断返回记电机转速转存至缓存区是T0中断入口置初始值开T0中段是否中断 100次否是中断返回记电机转速转存至缓存区是 第五部分 软件调试与仿真5.1 KEIL软件进行程序调试1首先创建项目。保存2. 创建c文件,保存,加入到项目中,这里为了便于编程,采用c语言。3. 无错误,生成hex文件。5.2 PROTEUS软件仿真1. 首先根据原理图,画出仿真图,这里单片机默认为12MHZ .2. 由于这里没有霍尔元件,以此用555电路与脉冲产生器组合使用,产生脉冲 。3. 加入hex文件,启动仿真。4. 不同时刻,显示效果如下图:设置脉冲频率为20HZ。则转换转速为1200r/min由于我们设定高于6000低于400转则报警,上图可以看出,当转速为60时,P3.7口位低电平,驱动有源蜂鸣器报警。5.3 硬件软件联合调试 5.3.1 硬件电路的焊接与搭建需要物品 电阻 有源蜂鸣器 单片机开发板 发光二极管 洞洞板 5.3.2搭接检查步骤1.打开单片机电源,接上通讯线2. 确认无误烧录程序 第六部分 结 论通过本次课程设计,深刻体会到,传感器在工业控制,检测方面发挥着巨大的作用,传感器可以将各种非电量装换为电量,但这并不能用来检测,控制,还需要通过一系列的测控电路,将信号进一步放大,滤波,整形等操作,以得到有用的信号,再对对相应的信号做出处理。此外在电路搭建过程中,发现,好的软件设计能使电路大大简化,所以在以后进行测控电路设计,一定要有软硬件兼顾的思想。参考文献 1 蒋清明. C语言程序设计. 中国矿业大学出版社, 2011 2 来清明.传感器与单片接口及实例.北京航空航天大学出版社,2008 3 李朝青.单片机原理及接口技术.北京航空航天大学出版社,2008 4 张国雄.测控电路.机械工业出版社,2014 5 唐文彦.传感器,机械工业出版社,2015附录 程序代码#include <REG52.H>#define uchar unsigned char #define uint unsigned int #define ulong unsigned long#define LED_DAT P1sbit LED_SEG0 = P23;sbit LED_SEG1 = P22;sbit LED_SEG2 = P21;sbit LED_SEG3 = P20;sbit Beep = P37;#define K 1 /校准系数unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar data len4;/ 显示缓冲区 uint Tcounter = 0; /时间计数器bit Flag_Fresh = 0; / 刷新标志 bit Flag_clac = 0; /计算转速标志 void beep();void DisplayFresh(); /显示函数void count(); /计算转速函数void init_timer0();/初始化定时器T0void init_timer1();/初始化定时器T1void Delay(uint ms);/延时函数void it_timer0() interrupt 1 TF0 = 0; /d定时器 T0用于数码管的动态刷新 TH0 = 0xD8; TL0 = 0xF0; Flag_Fresh = 1; Tcounter+; if(Tcounter>100)/12M晶振,定时器10ms 中断一次 我们1秒计算一次转速 / 1000ms/10ms = 100 Flag_clac = 1;/周期到,该重新计算转速了 void init_timer1() /初始化定时器T1TMOD &= 0x0F; TMOD |= 0x50; TH1 = 0x00; /设置初值。TL1 = 0x00; ET1=1; EA=1; TR1=1; void main(void)len0 = 8; /开机时,初始化为8888len1 = 8; len2 = 8;len3 = 8;init_timer0();init_timer1();while(1) if(Flag_Fresh) Flag_Fresh = 0; DisplayFresh(); / 定时刷新数码管显示 if(Flag_clac) Flag_clac = 0; count(); /计算转速,并把结果放入数码管缓冲区 Tcounter = 0;/周期定时 清零 TH1=TL1 = 0x00;/脉冲计数清零 /可以加报警程序 void DisplayFresh() /显示函数P2 |= 0x0F;LED_SEG0 = 0; /数码管位选千位LED_DAT = tablelen0; /显示千位Delay(1);P2 |= 0x0F;LED_SEG1 = 0; /数码管位选百位LED_DAT = tablelen1; /显示百位Delay(1);P2 |= 0x0F;LED_SEG2 = 0;LED_DAT = tablelen2;Delay(1);P2 |= 0x0F;LED_SEG3 = 0;LED_DAT = tablelen3;Delay(1);P2 |= 0x0F;void count() /计算转速函数,存入Disbufuint speed ; uint num;num = TH1*256 + TL1;speed = K*num*60;/K是校准系数,如速度不准,调节K的大小len0 = (speed/1000)%10; /千位len1 = (speed/100)%10; /百位len2 = (speed/10)%10; /十位len3 = speed%10; /个位if(speed>6000|speed<100)Beep = 0; /启动报警elseBeep = 1; void init_timer0() /初始化定时器TMOD &= 0xf0; /* Timer 0 mode 1 with software gate */TMOD |= 0x01; /* GATE0=0; C/T0#=0; M10=0; M00=1; */TH0 = 0xD8; /定时10毫秒 TL0 = 0xF0; ET0=1; EA=1; TR0=1; void Delay(uint ms) /延时函数 uchar i;while(ms-) for(i=0;i<100;i+);第 25 页