最新基于霍尔传感器的转速测量电路的设计.docx
《最新基于霍尔传感器的转速测量电路的设计.docx》由会员分享,可在线阅读,更多相关《最新基于霍尔传感器的转速测量电路的设计.docx(21页珍藏版)》请在冰豆网上搜索。
最新基于霍尔传感器的转速测量电路的设计
电子技术课程设计
应用霍尔集成传感器测量转速电路设计
院(系)名称信息工程学院
专业班级11电信一班
学号1103020018
姓名王琳琳
指导教师杨全玖
2015年5月15日
摘要
介绍了一种基于单片机平台,采用霍尔传感器实施电机转速测量的方法,硬件系统包括脉冲信号产生,脉冲信号处理和显示模块,重点分析,脉冲信号处理电路,采用c语言编程,通过实验检测电路信号。
关键词:
霍尔传感器;转速测量;单片机
1绪论3
1.1课题描述3
1.2基本工作原理及框图3
2相关芯片及硬件电路设计3
2.1系统的主控电路3
2.2STC89C52单片机介绍4
2.2.1STC89C52芯片管脚介绍5
2.2.2时钟电路6
2.3单片机复位电路7
2.4霍尔传感器电机采样电路7
2.4.1A3144霍尔开关的工作原理及应用说明8
2.4.2霍尔传感器测量原理9
2.5电机驱动电路10
2.6显示电路10
3软件系统设计11
3.1软件流程图11
3.2系统初始化12
3.3定时获取脉冲数据13
3.4数据处理及显示14
3.5C语言程序15
总结18
致谢19
参考文献20
1绪论
1.1课题描述
在工农业生产和工程实践中,经常会遇到各种需要测量转速的场合,测量转速的方法分为模拟式和数字式两种。
模拟式采用测速发电机为检测元件,得到的信号是模拟量,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难。
数字式通常采用光电编码器、圆光栅、霍尔元件等为检测元件,得到的信号是脉冲信号。
单片机技术的日新月异,特别是高性能价格比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法,使得许多控制功能及算法可以采用软件技术来完成。
采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。
本课题,是要利用霍尔传感器来测量转速。
由磁场的变化来使霍尔传感器产生脉冲,由单片机计数,经过数据计算转化成所测转速,再由数码管显示出来。
1.2基本工作原理及框图
本课程设计的电机采用直流电机,然后利用霍尔传感A3144对电机的转速进行采样从而输出脉冲信号。
主控芯片采用STC89C52单片机,对脉冲个数进行计数并经过数据处理以后得到单位时间内电机转过的转数机电机的转速,再通过显示电路将电机转速显示出来。
基本工作原理框图如图1所示。
图1基本工作原理框图
2相关芯片及硬件电路设计
2.1系统的主控电路
图2是该系统的主控单元的电路图。
J2、J3、J4、J5是单片机的I/O端口的扩展,预留接口用于调试等。
主控芯片采用STC89C52单片机,该系统中采用定时器0作为定时器,定时器的时间为1S。
定时器1作为计数器,对P35引脚采集到的脉冲信号进行计数操作,单片机然后对数据进行处理,计算出1S内计数脉冲的个数,即电机转速。
然后通过显示电路将电机转速显示出来,从而实现整个系统的功能。
图2单片机主控电路
2.2STC89C52单片机介绍
国芯微电子公司生产的STC89C52单片机是为一个8位通用的微处理器[2],采用工业标准的51内核,工作电压为5V,在低端的微控制器领域,这个单片机的性能非常好。
采用CHMOS制作工艺制作,功耗很低。
芯片内部集成了一个可反复擦写10万次的只读存储器ROM和一个升具有256个字节的随机存储器RAM。
随机存储器(RAM器件)采用标准MCS-52指令系统并且兼容MCS-51指令系统。
单片机片内部还集成了一个通用的8位中央处理器与一个FLASH存储单元,还有定时器、串口中断、外部中断等外设资源。
AT89C52单片机这些优点使其得大多数设计者的青睐,为许多嵌入式控制电路提供了一种灵活、实用、经济实惠的设计模式。
其引脚图,如下图3所示:
图3单片机引脚图
2.2.1STC89C52芯片管脚介绍
1引脚至8引脚为单片机端口的输入/输出脚。
9引脚:
是单片机的复位引脚。
当单片机上电以后,时钟电路开始工作,如果复位引脚出现高电平的时间超过两个机器周期以上,单片机将进入复位状态。
10引脚至17引脚是单片机P3端口的输入/输出引脚,P3口与P2很相似,不同的是P3口有很多第二功能,比如说定时器、外部中断、串口中断、串口通信等功能,在实际应用中,我们对P3口的第二功能应用的是比较多的。
18、19引脚分别是时钟电路的输出端、输入端,一般通过22pF的瓷片电容接地,为单片机提供时钟新信号,相当于这个系统的心脏。
29引脚一般用于扩展单片机存储器空间。
当次引脚输出低电平的时候,选通外部程序存储器。
如果输出高电平,则不选择外部存储器,即没有选择存储器扩展功能。
单片机上电默认高电平。
30引脚跟29引脚差不多,也是单片机的存储空间不足的时候用于,通过使用外部的存储器,来扩展单片机自身存储空间的不足,从而改善单片机存储空间的问题。
31引脚也是跟程序存储器相关的控制端口,在开发应用中一般很少用到,因为随着社会的发展,单片的发展非常迅速,单片机内部的存储空间是足够用的,所以这些第二功能是很少用到的,并且现在已经有很多更低功耗的单片机,更大的存储器的单片机已经被生产应用,并逐渐占领低端单片机的市场。
39引脚至32引脚是P0端口的输出输入引脚,其输出端口漏极开漏,与P2口结合可作为16跟地址总线服用端口。
当作为普通的I/O端口的时候,需要上上10K的拉电阻,否则P0端口不能正常工作。
40引脚为VCC,是给芯片供电的引脚,额定电压为5V,并且该引脚旁边要加上滤波电路,防止电压波动很大的时候烧毁芯片。
20引脚为GND,很显然是单片机的接地引脚,为电路各处的电压提供一个基准值。
P1口的部分管脚的第二功能如表4所示:
表4P1口的部分管脚的第二功能
引脚号
第二功能
P1.0
T定时器2的复用引脚,或者输出一个时钟脉冲
P1.1
T2/C2的控制输入引脚
P1.5
MOSI即主出从入,用于SPI通信
P1.6
MISO即主入从出,用于SPI通信
P1.7
SCK时钟信号,用于SPI通信
P3口的部分管脚的第二功能如表5所示:
表5P3口的部分管脚的第二功能
引脚号
第二功能
引脚号
第二功能
P3.0
RXD串口接收
P3.4
T0的外部计数器输入
P3.1
TXD串口输出
P3.5
T1外部计数器输入
P3.2
外部中断0
P3.6
允许外部写入引脚
P3.3
外部中断1
P3.7
允许外部读取引脚
2.2.2时钟电路
图5为单片机的时钟单元电路,晶振采用12MHz,C1和C2均为22pF的陶瓷电容。
51单片机会对时钟电路进行12分频,给单片机提供机器时钟。
时钟电路是单片机的心脏,它控制着单片机的工作节奏。
单片机就是通过复杂的时序电路完成不同的指令功能的。
图5时钟电路
2.3单片机复位电路
图6是系统复位电路[3],C3为10UF的电解电容,R2是10K的电阻,REST是低位按键。
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
单片机的复位引脚保持高电平2个机器周期以上,就会进入复位状态。
图6复位电路
2.4霍尔传感器电机采样电路
霍尔传感器分为线型霍尔传感器和开关型霍尔传感器两种。
本系统采用开关型霍尔传感器型号为A3144。
其内部集成了信号放大电路、整形电路、输出电路。
当霍尔传感器采集到外部脉冲信号以后,通过内部集成小信号放大器电路把信号放大,然后经过一个施密特触发器整形,最后通过一个集电极开漏的三极管输出。
该传感器为开关型霍尔传感器,所以输出为数字信号。
由于集电极开漏,所以在应用的电路中,需要加一个10K左右的上拉电阻R1。
1引脚为VCC,2引脚为GND,3引脚为信号输出端。
霍尔传感器A3144电路
2.4.1A3144霍尔开关的工作原理及应用说明
根据霍尔效应,人们用半导体材料制成的元件叫霍尔元件[4]。
它具有对磁场敏感、结构简单、体积小、频率响应宽、输出电压变化大和使用寿命长等优点,因此,在测量、自动化、计算机和信息技术等领域得到广泛的应用。
霍尔传感器A3144是AllegroMicroSystems公司生产的宽温、开关型霍尔效应传感器,其工作温度范围可达-40℃~150℃。
它由电压调整电路、反相电源保护电路、霍尔元件、温度补偿电路、微信号放大器、施密特触发器和OC门输出极构成,通过使用上拉电阻可以将其输出接入CMOS逻辑电路。
该芯片具有尺寸小、稳定性好、灵敏度高等特点,有两种封装形式,一种是3脚贴片微小型封装,后缀为“LH”;另一种是3脚直插式封装,后缀为“UA”[5]。
A3144E系列单极高温霍尔效应集成传感器是由稳压电源,霍尔电压发生器,差分放大器,施密特触发器和输出放大器组成的磁敏传感电路,其输入为磁感应强度,输出是一个数字电压讯号。
它是一种单磁极工作的磁敏电路,适用于矩形或者柱形磁体下工作。
可应用于汽车工业和军事工程中。
霍尔传感器的外形图和与磁场的作用关系如图3.6所示。
磁场由磁钢提供,所以霍尔传感器和磁钢需要配对使用。
(a)霍尔元件和磁钢(b)管脚图
图2.4.1霍尔传感器的外形图
2.4.2霍尔传感器测量原理
测量电机转速的第一步就是要将电机的转速表示为单片机可以识别的脉冲信号,从而进行脉冲计数。
霍尔器件作为一种转速测量系统的传感器,它有结构牢固、体积小、重量轻、寿命长、安装方便等优点,因此选用霍尔传感器检测脉冲信号,其基本的测量原理如图3.7所示,当电机转动时,带动传感器运动,产生对应频率的脉冲信号,经过信号处理后输出到计数器或其他的脉冲计数装置,进行转速的测量[6]。
图2.4.2霍尔器件测速原理
2.5电机驱动电路
本系统采用型号为RF-300FA的直流电机,额定供电电压为5.9V,在本系统中采用5V供电。
由于电机直接由电源供电,不是采用单片机单片机端口驱动,所以无需在添加驱动电路,即可适用于系统应用。
J6是直流电机接口,电位器PR3为10K,通过调节电位器可改变通过电机的电流,从而控制电机的转速,实现无极调速。
图2.5电机驱动电路
2.6显示电路
显示电路采用四位一体数码管,电路设计为横流驱动方式,使数码管亮度均匀。
Q1、Q2、Q3、Q4均为PNP型三极管,型号为8550。
PR1为阻值为2.2K的4P8排阻,具有限流作用,防止三极管击穿。
(a)
(b)
图3.0显示电路
3软件系统设计
3.1软件流程图
图4.1所示是软件流程图,首先进行软件初始化,然后主函数进行数据处理,定时器函数设置定时时间是否到达1S,达到1秒就更新电机转速变量。
没有达到1S则不进行数据更新处理。
数据处理以后,通过数码管显示。
计数器中断函数,通过外部脉冲计算脉冲个数,定时器在更新电机转速变量的时候,会读取TH0、TL0寄存器,并清空寄存器。
(b)定时器中断函数
图3.1软件流程图
3.2系统初始化
系统初始化函数主要是对系统的配置进行初始化,在这里使用到的定时器0和计数器1,所以只需要对定时器0和计数器1进行初始化即可。
下面是初始换函数:
//定时器初始化,定时器0定时,计数器1计数
voidTimer_Init()
{
TMOD=0x51;//定时器1:
16位定时器负责定时;定时器0:
:
16位计数器负责计数
//定时器0配置
TH0=0xDC;//10ms定时初值
TL0=0x00;
ET0=1;//使能定时器0中断
TR0=1;//允许定时器0计数
//计数器1配置
TH1=0x00;//计数器初值
TL1=0x00;
TR1=1;//允许计数器1计数
EA=1;//使能总中断
}
3.3定时获取脉冲数据
根据本系统的测速原理,可以知道,单片机通过P3.5将来自动累计外部脉冲的个数,将其保存到TH1,TL1寄存器中。
然后通过定时器中断服务函数,定时读取这两个寄存器中数据,并将其清空为0,以便计数器重新开始计数。
以下是代码分析:
/*------------------------------------------------------------------------------------
函数:
uint16Get_DC_MotorSpeedCounterValue(void)
输入参数:
无
返回参数:
计数器所记的数值
-------------------------------------------------------------------------------------*/
uint16Get_DC_MotorSpeedCounterValue(void)
{
uint8temp1=0,temp2=0;//两个临时变量,分别用来保存TH1和TL1的数值
uint16Temp_DC_MotorSpeedCounter=0;
temp1=TH1;
temp2=TL1;
//uint8类型强制转换为uint16类型然后移位,计算计数脉冲数
Temp_DC_MotorSpeedCounter=((uint16)temp1<<8)+(uint16)temp2;
TH1=0;
TL1=0;
returnTemp_DC_MotorSpeedCounter;//检测到的直流电机旋转的圈数,即计数器的值
}
voidT0_Interrupt()interrupt1
{
staticuint8counter=0;
TH0=0xDC;//10ms定时初值
TL0=0x00;
counter++;
if(counter==100)//10ms*100=1s
{
counter=0;
DC_MotorSpeedCounter=Get_DC_MotorSpeedCounterValue();
}
}
3.4数据处理及显示
获取电机转速以后,需要单片机将数据显示出来。
但是电机转速十一个uint16类型的数据,因此需要吧这个整数的千位、百位、十位和个位分离出来,然后通过各位的数值对应的数码管的段码,将数据正确的显示出来。
以下是数据处理函数:
voidData_Process(uint16x)//将数据的千百十个位分别提取出来,放入缓冲区
{
Disp_Buffer[0]=x/1000;
Disp_Buffer[1]=x%1000/100;
Disp_Buffer[2]=x%100/10;
Disp_Buffer[3]=x%10;
}
以下是主函数,负责系统各个外设的控制:
//==========主函数===========
voidmain()
{
uint8i;
Timer_Init();
while
(1)
{
Data_Process(DC_MotorSpeedCounter);
for(i=0;i<4;i++)
{
P0=Digit_Bits[Disp_Buffer[i]];
P2=Digit_Seg[i];
Delay_Ms
(1);
}
}
}
3.5C语言程序
#include
voidTimer_Init();
uint8Digit_Bits[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint8Digit_Seg[]={0x0e,0x0d,0x0b,0x07};
uint8dispbuf[8]={0,0,0,0,0,0,10,10};
uint8temp[8];
uint8dispcount;
uint16counter;
uint8T1count;
bitflag;
uint16x;
voidmain()
{
uint8i;
Timer_Init();
while
(1)
{
if(flag==1)
{
flag=0;
x=TH1*256+TL1;
for(i=0;i<8;i++)
{
temp[i]=0;
}
i=0;
while(x/10)
{
temp[i]=x%10;
x=x/10;
i++;
}
temp[i]=x;
for(i=0;i<6;i++)
{
dispbuf[i]=temp[i];
}
counter=0;
T1count=0;
TH1=0;
TL1=0;
TR1=1;
}
}
}
voidTimer_Init()
{
TMOD=0x51;//00n00000001010001定时器0:
16位定时器负责定时;定时器1:
16位计数器负责计数
//定时器0配置
TH0=0xDC;//9.216ms定时初值
TL0=0X00;
ET0=1;//使能定时器0中断
TR0=1;//允许定时器0计数
//计数器1配置
TH1=0x00;//计数器初值
TL1=0x00;
ET1=1;//使能计数器1中断
TR1=1;//允许计数器1计数
EA=1;//使能总中断
}
voidt1(void)interrupt3using3
{
T1count++;
}
voidt0(void)interrupt1using1
{
TH0=0xDC;//10ms定时初值
TL0=0x00;
counter++;
if(counter==500)//10ms*100=1s
{TR1=0;
counter=0;
flag=1;
}
P0=Digit_Bits[dispbuf[dispcount]];
P2=Digit_Seg[dispcount];
dispcount++;
if(dispcount==4)
{
dispcount=0;
}
}
总结
课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不少的过程。
”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。
在这次设计过程中,体现出自己单独设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础,在这次课程设计当中我碰到了许多问题,我曾经接触过这方面的书籍和实物,也对其有一些简单的了解。
但是却不知道具体的工作原理,当我拿到课程设计的题名后完全不知道该怎么办好,在杨老师的悉心指导下,我明白了其中的道理,于此同时我通过大量地阅读和查阅相关的资料,最终此次课程设计才得以完成。
通过这次课程设计让我懂得了在以后的学习和工作当中要不断地完善自我、努力上进、刻苦钻研力争在电子信息行业有一个好的发展和结果。
致谢
本课程设计得以完成,要感谢的人实在太多了,首先要感谢杨教授,因为论文是在老师的悉心指导下完成的。
杨老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深深。
在我做毕业设计的每个阶段,从选题到查阅资料,论文提纲的确定,中期的修改,后期格式调整等每一步都是在杨老师的悉心指导下完成的,倾注了老师大量的心血。
杨老师指引我的课程设计的方向和架构,并对初稿进行逐字批阅,指正出其中误谬之处,使我有了思考的方向,在杨老师教导和不拘一格的思路给了我无尽的启迪,老师的严谨细致、一丝不苟的作风,将一直是我工作、学习中的榜样。
杨老师要指导很多同学的课程设计,加上本来就有的教学任务,工作量之大可想而知,但在一次次的回稿中,精确到每一个字的的批改给了我深刻的印象,使我在论文之外明白了做学问所应有的态度。
杨老师一如既往的辅导我们的课程设计,他的精神激励了我们,使我们克服了在课程设计写作过程中的困难。
在此,谨向杨老师表示崇高的敬意和衷心的感谢!
杨老师在我撰写课程设计的过程中给与我的极大地帮助。
同时,课程设计的顺利完成,离不开其他各位老师、同学和朋友的关心和帮助。
在整个的课程设计写作中,各位老师、同学和朋友积极帮助我查资料和提供有利于课程设计写作的建议和意见,在他们的帮助下,课程设计得以不断的完善,最终帮助我完整的写完了整个课程设计。
感谢所有给我帮助的老师和同学,谢谢你们!
参考文献
[1]贾秀美.数字电路实践技术(第一版).中国科学技术出版社,2000.
[2]王毓银.脉冲与数字电路(第三版).高等教育出版社,1999.
[3]路勇.电子电路实践及仿真(第一版).清华大学出版社,2004.
[4]岳怡.数字电路与数字电子技术(第一版).西北工业大学出版社,2001
[5]刘常澍.数字逻辑电路(第一版).国防工业出版社,2002.
[6]萧宝瑾.protel99SE操作指导与电路设计实例(第一版).太原理工大学2004.
[7]赵学良,张国华.电源电路[M].北京:
电子工业出版社,1995.
[8]张义申,陆坤等.电子设计技术[M].西安:
西安电子科技大学出版.1996.
[9]刘君华,智能传感器系统.西安:
西安电子科技大学出版.2000.
[10]纪树赓,自动显示技术与仪表.3板.北京:
机械工业出版社,1996.