基于单片机的霍尔测速报警系统解读Word下载.docx
- 文档编号:3119398
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:26
- 大小:843.06KB
基于单片机的霍尔测速报警系统解读Word下载.docx
《基于单片机的霍尔测速报警系统解读Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的霍尔测速报警系统解读Word下载.docx(26页珍藏版)》请在冰点文库上搜索。
第三部分测控系统的总体设计
3.1测控系统的总体设计———————————————4
3.1.1硬件原理图———————————————————4
3.1.2硬件电路设计总图————————————————5
3.2测控系统子模块简介———————————————5
3.2.1传感器原理及分电路析——————————————5
3.2.2报警模块————————————————————7
3.2.3LED数码管———————————————————8
3.2.4STC90C51单片机——————————————————10
第四部分软件设计
4.1程序设计步骤———————————————————12
4.2程序流程图————————————————————13
4.2.1主程序设计—————————————————————14
4.2.2中断服务程序设计——————————————————15
第五部分软件调试与仿真
5.1KEIL软件进行程序调试———————————————15
5.2PROTEUS软件仿真————————————————16
5.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,与普通磁钢配套使用,体积小,灵敏度高,价格在1—2元左右,基本可以满足本课题的要求
2.1.2报警模块的论证与选择
方案一:
采用蜂鸣器与LED发光二极管为主要报警系统,该系统成本低,电路容易实现,编程容易。
方案二:
采用音乐语言报警,更人性化,但设计难度大,成本高。
基于现有设备器件,选用方案一。
2.1.3显示模块的论证与选择
这里课题已要求使用数码管显示,由于测量转速适中,我们采用四位位选数码管完全能满足要求。
基于现有器件选用共阴极接法,但由于数码管功耗较高,故需要加入驱动芯片,在这里我们使用51单片机开发板上现有的锁存芯片74HC573
2.1.2单片机模块的论证与选择
此系统十分简单,数据处理不大,采用8位单片机完全能满足需要,基于国内8位单片机领导厂商宏晶公司生产的STC系列单片机的低价格,高性能的优势,我选用了STC系类90C51八位单片机,编程和使用与一般80c51单片机一样。
2.4小结
通过本小计,对本设计的基本模块进行了选择,确定了显示,报警,计数,传感器,单片机选择的可行性。
并在实现仪器功能的基础上充分考虑了成本问题。
第三部分测控系统的总体设计
3.1测控系统的总体设计
3.1.1硬件原理图
系统原理图如下:
3.1.2硬件电路设计总图
系统硬件电路图如下:
3.2测控系统子模块简介
3.2.1传感器原理及转换电路分析
由霍尔效应知,霍尔电势的大小取决于:
Rh为霍尔常数,它与半导体材质有关;
I为霍尔元件的偏置电流;
B为磁场强度;
d为半导体材料的厚度。
对于一个给定的霍尔器件,当偏置电流
I
固定时,UH将完全取决于被测的磁场强度B。
一个霍尔元件一般有四个引出端子,其中两根是霍尔元件的偏置电流
的输入端,另两根是霍尔电压的输出端。
如果两输出端构成外回路,就会产生霍尔电流。
在半导体薄片两端通以控制电流I,并在薄片的垂直方向施加磁感应强度为B的匀强磁场,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压。
霍尔效应原理图
以上为alldatasheet网站关于3144的数据
外部接口
本系统采用开关型霍尔传感器A3144以及磁钢,由它们来检测电机的转速。
工作方式为:
将磁钢安装在电机的转轴上,而霍尔传感器则放在转轴的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感器时,霍尔传感器的工作原理知,此时将输出一个低电平信号;
而当磁钢离开霍尔传感器后,又将输出一个高电平。
这样通过高低电平的转换,将其送入单片机后就可以测量它的转速。
由于由霍尔传感器输出的电平未经特殊处理,且存在干扰,故不是完整的脉冲电平,在后续电路中进行改进,这里我们用到电压比较电路,选用常用的LM393双电压比较集成芯片,下图是ALLDATASHEET数据,电路中只用到4、8、1、2、3脚。
电路图也在此给出:
L
3.2.2报警模块
报警模块可选用无源蜂鸣器或者有源蜂鸣器,有源蜂鸣器由于内部有震荡元件,故通电后就可以报警,由于硬件设备的限制,我们选用无源蜂鸣器,但编程上需要花点心思。
3.2.3LED数码管
显示电路采用LED数码管动态显示,LED(Light-EmittingDiode)是一种外加电压从而渡过电流并发出可见光的器件。
LED是属于电流控制器件,使用时必须加限流电阻。
LED有单个LED和八段LED之分,也有共阴和共阳两种。
七段发光数码管结构
共阴极数码管的发光二极管阴极必须接低电平,当某发光二极管的阳极为高电平时(一般为+5V)时,此二极管点亮;
共阳极数码管的发光二极管是阳极接到高电平,对于需要点亮的发光二极管使其阴极接低电平(一般为地)即可。
根据LED显示器可知,如果希望显示“8”字,那么除了“dp”管不要点亮以外,其余管全部点亮。
同理如果要显示“1”,只需bc两个发光二极管点亮,其余均布点亮。
通常将控制发光二极管的8位数据称为段选码,共阴极和共阳极的段选码互为补码。
LED显示器的段选码如下表所示:
LED数码管段选码
显示部分电路图如下,这里出于成本简便考虑,用到的是现有的单片机开发板,实际试验中只需用到四位数码管,且未加入单个发光二极管。
值得注意的是由于数码管功耗比较高,故在前面加入了74HC573锁存器芯片用做驱动数码管,但这里用到的并不是锁存功能。
3.2.4STC90C51单片机
STC90C51单片机是国内八位高性能单片机,选用的单片机带16K字节闪烁可编程可擦除只读存贮器,,STC的90CC51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.
P0口:
P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路。
P1口:
Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流.
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流
P3口:
P3口是一组带有内部上拉电阻的8位双向I/0口。
P3
口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的
P3口将用上拉电阻输出电流(IIL).
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,上面表已给出。
RST复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的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进行计数,内部采用T0定时,TO定时为10MS,即溢出100次则记满1秒,
在本例磁钢数为1,N1*T设定为一秒,故转速即为n=60m(r/min)
4.2.1主程序设计
否
是
4.2.2中断服务程序设计
第五部分软件调试与仿真
5.1KEIL软件进行程序调试
1首先创建项目。
保存
2.创建c文件,保存,加入到项目中,这里为了便于编程,采用c语言。
3.无错误,生成hex文件。
5.2PROTEUS软件仿真
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>
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
#defineLED_DATP1
sbitLED_SEG0=P2^3;
sbitLED_SEG1=P2^2;
sbitLED_SEG2=P2^1;
sbitLED_SEG3=P2^0;
sbitBeep=P3^7;
#defineK1//校准系数
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchardatalen[4];
//显示缓冲区
uintTcounter=0;
//时间计数器
bitFlag_Fresh=0;
//刷新标志
bitFlag_clac=0;
//计算转速标志
voidbeep();
voidDisplayFresh();
//显示函数
voidcount();
//计算转速函数
voidinit_timer0();
//初始化定时器T0
voidinit_timer1();
//初始化定时器T1
voidDelay(uintms);
//延时函数
voidit_timer0()interrupt1
{
TF0=0;
//d定时器T0用于数码管的动态刷新
TH0=0xD8;
TL0=0xF0;
Flag_Fresh=1;
Tcounter++;
if(Tcounter>
100)//12M晶振,定时器10ms中断一次我们1秒计算一次转速//1000ms/10ms=100
{Flag_clac=1;
//周期到,该重新计算转速了
}
voidinit_timer1()//初始化定时器T1
TMOD&
=0x0F;
TMOD|=0x50;
TH1=0x00;
//设置初值。
TL1=0x00;
ET1=1;
EA=1;
TR1=1;
voidmain(void)
len[0]=8;
//开机时,初始化为8888
len[1]=8;
len[2]=8;
len[3]=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;
//脉冲计数清零
//可以加报警程序
}
voidDisplayFresh()//显示函数
P2|=0x0F;
LED_SEG0=0;
//数码管位选千位
LED_DAT=table[len[0]];
//显示千位
Delay
(1);
LED_SEG1=0;
//数码管位选百位
LED_DAT=table[len[1]];
//显示百位
LED_SEG2=0;
LED_DAT=table[len[2]];
LED_SEG3=0;
LED_DAT=table[len[3]];
voidcount()//计算转速函数,存入Disbuf[]
uintspeed;
uintnum;
num=TH1*256+TL1;
speed=K*num*60;
//K是校准系数,如速度不准,调节K的大小
len[0]=(speed/1000)%10;
//千位
len[1]=(speed/100)%10;
//百位
len[2]=(speed/10)%10;
//十位
len[3]=speed%10;
//个位
if(speed>
6000||speed<
100)
Beep=0;
//启动报警
else
Beep=1;
voidinit_timer0()//初始化定时器
=0xf0;
/*Timer0mode1withsoftwaregate*/
TMOD|=0x01;
/*GATE0=0;
C/T0#=0;
M10=0;
M00=1;
*/
//定时10毫秒
ET0=1;
TR0=1;
voidDelay(uintms)//延时函数
uchari;
while(ms--)
for(i=0;
i<
100;
i++);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 霍尔 测速 报警 系统 解读