基于51单片机和霍尔开关传感器的转速测量仪Word文档格式.docx
《基于51单片机和霍尔开关传感器的转速测量仪Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机和霍尔开关传感器的转速测量仪Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
图1-1系统框图
系统框图原理如图1-1所示,系统由传感器、信号处理、数码管显示、蜂鸣器超速报警和系统软件等部分组成。
传感器采用霍尔开关传感器(JK8002C),负责将转速转化为脉冲信号。
信号处理电路反相器74LS14)包含待测信号波形变换、波形整形等部分,波形变换和波形整形电路实现把正负交变的信号波形变换成可被单片机接受的TTL/CMOS兼容信号。
处理器采用51单片机,显示器采用8位LED数码管动态显示。
1.2霍尔传感器测转速原理及特性霍尔传感器是对磁敏感的传感元件,由磁钢、霍耳元件等组成。
测量系统的转速传感器选用SiKO的jk8002c的霍尔传感器,其响应频率为100KHz,额定电压为5-30(V)、检测距离为10(mm)。
其在大电流磁场或磁钢磁场的作用下,能测量高频、工频、直流等各种波形电流。
该传感器具有测量精度高、电压范宽、功耗小、输出功率大等优点,广泛应用在高速计数、测频率、测转速等领域。
输出电压4~25V,直流电源要有足够的滤波电容,测量极性为N极。
安装时将一非磁性圆盘固定在电动机的转轴上,将磁钢粘贴在圆盘边缘,磁钢采用永久磁铁,其磁力较强,霍尔元件固定在距圆盘1-10mm处。
当磁钢与霍尔元件相对位置发生变化时,通过霍尔元件感磁面的磁场强度就会发生变化。
圆盘转动,磁钢靠近霍尔元件,穿过霍尔元件的磁场较强,霍尔元件输出低电平;
当磁场减弱时,输出高电平,从而使得在圆盘转动过程中,霍尔元件输出连续脉冲信号。
这种传感器不怕灰尘、油污,在工业现场应用广泛。
1.3转速测量原理霍尔器件是由半导体材料制成的一种薄片,器件的长、宽、高分别为l、b、d。
若
在垂直于薄片平面(沿厚度d)方向施加外磁场B,在沿l方向的两个端面加一外电场,则有一定的电流流过。
由于电子在磁场中运动,所以将受到一个洛仑磁力,其大小为:
fqVB
式中:
f—洛仑磁力,q—载流子电荷,V—载流子运动速度,B—磁感应强度。
这样使电子的运动轨迹发生偏移,在霍尔元器件薄片的两个侧面分别产生电子积聚或电荷过剩,形成霍尔电场,霍尔元器件两个侧面间的电位差UH称为霍尔电压。
霍尔电压大小为:
UHRHIB/d(mV)
RH—霍尔常数,d—元件厚度,B—磁感应强度,I—控制电流
设KHRH/d,则UH=KHIB/d(mV)
KH为霍尔器件的灵敏系数(mV/mA/T),它表示该霍尔元件在单位磁感应强度和单位控制电流下输出霍尔电动势的大小。
应注意,当电磁感应强度B反向时,霍尔电动势也反向。
图2为霍耳元件的原理结构图。
图1-2霍尔元件的原理结构图
1.4反相器74LS14介绍
74LS14是六反相施密特触发器。
不存在放大的功能。
是施密特触发电路功能。
当
输入电压由低向高变化时,若电压超过正向阈值电压Vt+,输出为低电平。
当输入电压由高向低变化时,输入电压要低于另一个阈值电压Vt-时,输出为高电平。
管脚定义如下:
A端为输入端,Y端为输出端,一片芯片一共6路,即1,3,5,9,11,13为输入端,2,4,6,8,10,12为输出端,输出结果与输入结果反向。
74LS14管脚图
即如果输入端为高电平,那么输出为低电平。
如果输入低
电平,输出为高电平
2.软件部分概述
2.1软件基本功能介绍设计软件主要为主程序、数据处理显示程序、定时器中断服务程序和蜂鸣器报警四个部分。
(1)主程序主要完成初始化功能,包括LED显示的初始化,中断的初始化,定时器的初始化,寄存器、标志位的初始化等。
主程序流程图如图5所示。
(2)数据处理显示模块程序。
此模块中单片机对在10秒内的计数值进行处理,转换成r/min送显示缓存以便显示。
具体算法如下:
设单片机每秒计数到n个值,即n(r/s)(圆盘贴两个磁钢)。
则n(r/s)=6n(r/min)。
即只要将计数值乘以6便可得到每分钟电机的转速。
程序流程图如下图所示。
50ms,进行定时中
3.制作调试
3.1硬件调试霍尔传感器探头要对准转盘上的磁钢位置,安装距离要在10mm以内才可灵敏的
感应磁场变化。
在磁场增强时霍尔传感器输出低电平,指示灯亮;
磁场减弱时输出高电平,指示灯熄灭。
当电机转动时,感应电压指示灯高频闪烁,所以视觉上指示灯不会有多大的闪烁感。
当给JK8002c型霍尔传感器施加5V电压时其输出端可以输出3V的感应电压。
输出幅值为3V的矩形脉冲信号。
3.2软件调试
测量系统与PC机连接时一定要先连接串行通信电缆,然后再将其电源线插入USB接口;
拆除时先断开其电源,再断开串行通信电缆,否则极易损坏PC机的串口。
采用AT单片机下载相应的软件,将其下载到实验板的单片机中。
下载软件的最后一步:
点击软件界面中的[下载]按钮,在点击前一定要保持实验板的串行通信线及电源线与PC机连接良好,并且实验板的电源开关处于关闭状态,然后点击[下载]按钮,再打开实验板电源开关,此时软件将自动完成程序下载。
最后将硬件和软件结合起来整体调试实现系统的测速功能。
4.测试结果分析设计基本完成题目中的各项要求,其中转速的测量比较精确,与实际转速相差10转/分左右,精度在全量程范围内优于10转/分,存在一定的误差,经分析主要是由以下原因造成:
1)由于转盘是直接采用磁铁旋转而成,手动旋转时容易打飘不稳,导致获得的脉冲信号频率与实际转速有一定的误差。
2)中断处理的进入和中断处理程序都会有一定时间的误差,从而导致定时时间的误差,这也是造成测量误差的一个因素。
3)在固定装置时,由于是手动操作,从而导致初始获得信号有一定的时差。
5.结论
霍尔传感器具有不怕灰尘、油污,安装简易,不易损坏等优点,在工业现场得到了广泛应用。
利用霍尔传感器设计的转速测量系统以单片机AT89C51为数据处理核心,采用定时器定时中断的方法实现计数,对测量数据进行计算得到转速数据,并将结果送数码管显示。
整个测量系统硬件电路简单,容易调试,软件部分编程采用C51,
有较高的编程效率。
测试结果表明对电动机转速的测量精度较高,基本能够满足实际的测试需要,有一定的实际应用价值。
6.心得体会
本此设计,主要进行了以下几方面的工作:
首先,复习了上学期所学的传感器,在其中着重学习并理解霍尔传感器的工作原理;
其次,根据老师所提供的传感器,查找搜集其特性,制作设计方案;
然后,完成测转速系统的硬件选型和电路设计;
最后,完成系统的软件流程图设计。
根据我们所选的题目,编出了实验的程序。
总体来讲,此次设计的题目比较简单通过这次的设计,又查阅了相关资料,与老师所讲的结合,基本上掌握了数码管动态显示的原理。
在单片机上演示成功后,结合所发的板子修改了程序,但是在将程序考到开发板上之后偶遇到了一些问题。
显示的结果与与预想的不同,经过反复试验最终搞清楚的其中的原理。
对于定时器、计数器的中断,有了深入认识。
怎么算初值,怎么申请中断,怎么响应,返回到什么位置等更深层次的应用并学为己有。
并且学会了有多个等待多个中断返回时,怎么进行合理利用,使他们每个都能返回到该返回的位置,不出现错误。
这一点我觉得很有用。
这次设计,有程序,有硬件,有理论,有实践,通过它们的结合,我所学到的知识形成了一个系统,不再是孤立的,而是硬件与软件的结合,提高了自己的程序运用能力,对于编程的思路有了更进一步的悟性。
不再是一个机械的运用,而是根据具体情况来编写自己的程序,有了一定的灵活运用能力。
以前实验是只有单片机的程序,这次与传感相结合,不仅使我又一次的加深了对软件编程的理解,还从实际出发,有了一个更整体的认识。
对于霍尔传感器的基本原理更有了进一步的理解。
霍尔传感器具有不怕灰尘、油污,安装简易,不易损坏等优点,在工业现场得到了广泛应用。
测试结果表明对电动机转速的测量精度较高,基本能够满足实际的测试需要,有一定的实际应用价值。
就本课题而言,并末实现真正工业意义上的测转速控制,今后还应在控制的实现上进一步深入的探讨,这类研究将对工业测转速有着深远的影响,是一个值得深入的方向。
在此期间,本组每位同学都在尽自己最大的努力来完成设计任务,都认识到了设计的意义与目的。
指导老师也很辛苦的了,在这里,深表对老师和各组员的感谢!
最终完成图:
附录程序:
#include<
reg52.h>
#defineucharunsignedchar
unsignedlongnum,speed,count;
ucharj,k;
sbitdula=P2^6;
sbitwela=P2^7;
sbitbeep=P2^3;
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
voidinit(void)//定义名为init的初始化子函数
{//init子函数开始,分别赋值
TMOD=0X51;
TH1=0;
//计数器初始值
TL1=0;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
//定时器T0定时50ms
EA=1;
EX0=1;
IT0=1;
ET0=1;
TR1=1;
TR0=1;
ET1=1;
}
voiddelay(uchari)
{
for(j=i;
j>
0;
j--)
for(k=110;
k>
k--);
voiddisplay(ucharbai,ucharshi,ucharge)//显示函数,数码管前三位显示转速{
wela=1;
P0=0xfe;
wela=0;
P0=0xff;
//消影
dula=1;
P0=table[bai];
dula=0;
delay(5);
P0=0xfd;
P0=table[