霍尔传感器 测转速
msec++;
if(msec==20) //50*20=1S
{
displaytolcd();
msec=0;
zhuan=z;
z=0;
}
}
a
16
/*----------------------端口初始化-----------------------*/ void int_all() { warning=0; //关蜂鸣器 z=0; //初始化z的值 count=0; //初始化count的值 zhuan=0; //初始化转的值 rw=0; //选择LCD写数据指令 delay(15); //延时15ms write_command(0x38); //向LCD1602写命令38H delay(5); //延时5ms write_command(0x08); //向LCD1602写命令0EH delay(5); //延时5ms write_command(0x06); delay(5); write_command(0x0c);
a
7
a
8
HAL3144高灵敏度单极性霍尔开关
• HAL3144E是一款采用 双极性工艺技术的单 极性霍尔效应传感器 IC,响应速度快,灵 敏度高,具有略高的 工作温度范围及可靠 性,它由反向电压器 、电压调整器、霍尔 电压发生器、信号放 大器、施密特触发器 和集电极开路的输出 级组成。
a
9
HAL3144霍尔开关的接口图
a
15
/*------------------------LCD显示------------------------*/
void displaytolcd()
{
write_command(0x80); //向LCD1602写命令80H
for (i=0;i<sizeof(display)-1;i++) //循环要传输的字符个数次,每一次传输一个字符
警。总体硬件电路图和PCB图如下图所示
:
a
5
a
6
2、系统各部分电路
(1)传感器部分
霍尔传感器由电压调整电路、反相电源保护 电路、霍尔元件、温度补偿电路、微信号放大器、 施密特触发器和OC门构成,通过上拉电阻可以将 其输出接入CMOS逻辑电路。该传感器具有尺寸小 、稳定性好、灵敏度高等特点。其在电路中的作用 是利用霍尔传感器将电机转速转化为脉冲信号。其 封装和连线如下图所示:
; //延时第二循环 } /*-------------------------------------------------------*/
/*--------------------向LCD1602写命令--------------------*/ void write_command(uchar command) { rs=0; //选择写命令 rw=0; P0=command; //向LCD写命令 lcdcs=1; //信号使能端高电平 lcdcs=0; //信号使能端低电平 } /*-------------------------------------------------------*/
TMOD=0x01; //内部中断定时器选择 TH0=(65536-50000)/256; //50ms定时 TL0=(65536-50000)%256;
a
17
EA=1; //开中断总开关 ET0=1; //开内部中断0 TR0=1; //计时器开始工作 IT0=1; //外部中断0为下降沿触发 EX0=1; //开外部中断0 } /*-------------------------------------------------------*/
装一个小磁铁,机轴每转一圈,与霍尔传
感器就接触一次,霍尔传感器感应磁场的
变化通过上拉电阻在输出口会产生一个低
电平,并送给单片机,相应的发光二极管
就会发亮,单片机IO口检测到下降沿触发 中断,通过控制计数的时间,即可实现计
数器的计数值对应机轴的转速值。单片机
将该值处理后,在液晶显示器显示出来。
一旦超速,单片机就会同过蜂鸣器发出报
/*------------------------主函数-------------------------*/ void main() { int_all(); //全局初始化 while(1) { disp_count(); //数据处理 warning_speed(); //速警告 displaytolcd(); //LCD显示 } } /*-------------------------------------------------------*/
a
12
霍尔测转速的应用
•
日常生活中,我
们可以用在测量自行
车、转轮等各种运动
的速度大小。利用
V=2RN
• 即可得出结果。 其中
R为自行车轮子的半径
,N为所测转速的大小
。
a
13
附录
void delay(uint ms) { uint i,j; //为延时引入i,j两参数 for (j=0;j<ms;j++) //延时第一循环 for (i=0;i<120;i++)
/*--------------------向LCD1602写数据----------a----------*/
14
void write_data(uchar data0) { rs=1; //选着写数据 rw=0; P0=data0; //向LCD写数据 lcdcs=1; //信号使能端高电平 lcdcs=0; //信号使能端低电平 } /*-------------------------------------------------------*/
/*-------------------转速过高警告程序--------------------*/ void warning_speed() {
if(zhuan>120) //高于200转打开警告
a
18
{ warning=0; delay(100); } } /*-------------------------------------------------------*/
{
write_data(display[i]);
delay(5);
}
}
/*-----------------内部中断0计时计数程序-----------------*/rrupt 1
{
TH0=(65536-50000)/256; //50ms定时
TL0=(65536-50000)%256;
a
10
液晶显示部分: 显示部分有两个功能,在正常情况下,通过液晶 显示当前转速值,当电机的转速超过设定值通过
蜂鸣器进行报警。其硬件和连线显示图如下图:
a
11
(3)处理器部分 处理器采用的是单片机,对霍尔传感器
的脉冲进行处理,并将结果送给显示器。 其程序如附录。 (4)报警部分
报警部分采用蜂鸣器,当电机转速超过 设定值时,处理器就会将蜂鸣器驱动发出 警报。
霍尔传感器测速
a
1
实拍视频演示
a
2
一、霍尔传感器测速电路总体设计
1、总体硬件设计
使用单片机测量电机转速原理框图如 下图2-1所示
电机
霍尔传感 器
液晶 显示 转速
单片机
STC89S52
超速 报警
电源
a
3
霍尔传感器测a 速原理图
4
其测量过程大致是:测量转速的霍尔
传感器和电机轴同轴相连,并在机轴上安
/*-----------------------数据处理------------------------*/ void disp_count() { display[7]=(zhuan/1000+'0'); //转换转速的千位 display[8]=(zhuan/100%10+'0'); //转换转速的百位 display[9]=(zhuan/10%10+'0'); //转换转速的十位 display[10]=(zhuan%10+'0'); //转换转速的个位 } /*-------------------------------------------------------*/
/*-------------------外部中断0计数程序-------------------*/ void counter(void) interrupt 0 { EX1=0; //关外部中断 count++; //转圈计数加1 z++; //计数+1 EX1=1; //开外部中断0 return; } /*-------------------------------------------------------*/
a
19