霍尔传感器、磁性传感器原理图PCB图及例程
- 格式:doc
- 大小:1.28 MB
- 文档页数:26
霍尔传感器使用说明书简要说明:一、长尺寸:32mm X宽11mm X高20mm二、主要芯片:LM393、3144霍尔传感器三、工作电压:直流5伏四、特点:1、具有信号输出指示。
2、单路信号输出。
3、输出有效信号为低电平。
4、灵敏度可调(精调)。
5、有磁场切割就有信号输出6、电路板输出开关量!(可直接接单片机)7、可用于电机测速/位置检测等场合适用场合:单片机学习、电子竞赛、产品开发、毕业设计。
【图片展示】【与单片机连接测试程序】/********************************************************************汇诚科技实现功能:此版配套测试程序使用芯片:AT89S52晶振:11.0592MHZ波特率:9600编译环境:Keil作者:zhangxinchun淘宝店:汇诚科技【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!*********************************************************************/ /******************************************************************** 说明:1、当测量浓度大于设定浓度时,单片机IO口输出低电平*********************************************************************/ #include<reg52.h> //库文件#define uchar unsigned char//宏定义无符号字符型#define uint unsigned int //宏定义无符号整型/********************************************************************I/O定义*********************************************************************/ sbit LED=P1^0; //定义单片机P1口的第1位(即P1.0)为指示端sbit DOUT=P2^0; //定义单片机P2口的第1位(即P2.0)为传感器的输入端/********************************************************************延时函数*********************************************************************/ void delay()//延时程序{uchar m,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}/********************************************************************主函数*********************************************************************/ void main(){while(1) //无限循环{LED=1; //熄灭P1.0口灯if(DOUT==0)//当浓度高于设定值时,执行条件函数{delay();//延时抗干扰if(DOUT==0)//确定浓度高于设定值时,执行条件函数{LED=0; //点亮P1.0口灯}}}}/********************************************************************结束*********************************************************************/【与单片机连接测速参考程序】/********************************************************************汇诚科技实现功能: 电机转速表设计使用芯片:AT89S52晶振:11.0592MHZ波特率:9600编译环境:Keil作者:zhangxinchun【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!#include<reg52.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚unsigned char code digit[ ]={"0123456789"}; //定义字符数组显示数字unsigned int v; //储存电机转速unsigned char count; //储存定时器T0中断次数bit flag; //计满1秒钟标志位/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/void delay(unsigned char n){unsigned char i;for(i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。
霍尔传感器、磁传感器原理图PCB图及例程————————————————————————————————作者:————————————————————————————————日期:霍尔传感器使用说明书简要说明:一、长尺寸:32mm X宽11mm X高20mm二、主要芯片:LM393、3144霍尔传感器三、工作电压:直流5伏四、特点:1、具有信号输出指示。
2、单路信号输出。
3、输出有效信号为低电平。
4、灵敏度可调(精调)。
5、有磁场切割就有信号输出6、电路板输出开关量!(可直接接单片机)7、可用于电机测速/位置检测等场合适用场合:单片机学习、电子竞赛、产品开发、毕业设计。
【图片展示】【与单片机连接测试程序】/********************************************************************汇诚科技实现功能:此版配套测试程序使用芯片:AT89S52晶振:11.0592MHZ波特率:9600编译环境:Keil作者:zhangxinchun淘宝店:汇诚科技【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!*********************************************************************/ /******************************************************************** 说明:1、当测量浓度大于设定浓度时,单片机IO口输出低电平*********************************************************************/ #include<reg52.h> //库文件#define uchar unsigned char//宏定义无符号字符型#define uint unsigned int //宏定义无符号整型/********************************************************************I/O定义*********************************************************************/ sbit LED=P1^0; //定义单片机P1口的第1位(即P1.0)为指示端sbit DOUT=P2^0; //定义单片机P2口的第1位(即P2.0)为传感器的输入端/********************************************************************延时函数*********************************************************************/ void delay()//延时程序{uchar m,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}/********************************************************************主函数*********************************************************************/ void main(){while(1) //无限循环{LED=1; //熄灭P1.0口灯if(DOUT==0)//当浓度高于设定值时,执行条件函数{delay();//延时抗干扰if(DOUT==0)//确定浓度高于设定值时,执行条件函数{LED=0; //点亮P1.0口灯}}}}/********************************************************************结束*********************************************************************/【与单片机连接测速参考程序】/********************************************************************汇诚科技实现功能: 电机转速表设计使用芯片:AT89S52晶振:11.0592MHZ波特率:9600编译环境:Keil作者:zhangxinchun【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!#include<reg52.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚unsigned char code digit[ ]={"0123456789"}; //定义字符数组显示数字unsigned int v; //储存电机转速unsigned char count; //储存定时器T0中断次数bit flag; //计满1秒钟标志位/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/void delay(unsigned char n){unsigned char i;for(i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。
磁平衡式霍尔电电压传感器工作原理
原边电压Vp通过原边电阻R1转换为原边电流Ip,Ip产生的磁通量与霍尔电压经放大产生的副边电流Is通过副边线圈所产生的磁通量相平衡。
副边电流Is精确地反映原边电压。
磁平衡式霍尔电流传感器工作原理:
原边电流Ip产生的磁通量与霍尔电压经放大产生的副边电流Is通过副边线圈所产生的磁通量相平衡。
副边电流Is精确地反映原边电流。
:
直检式霍尔电流传感器工作原理
如图。
由于磁路与霍尔器件的输出具有良好的线性关系,因此霍尔器件输出的电压讯号U0可以间接反映出被测电流I1的大小,即:I1∝B1∝U0;把U0定标为当被测电流I1为额定值时,U0等于50mV或100mV。
这就制成霍尔直接检测(无放大)电流传感器。
《传感器与检测技术》霍尔传感器采集实验一、实验目的1.了解A3144霍尔元件的工作原理;2.通过STM32采集霍尔元件的输出信号,并通过串口显示在检测范围内是否检测到磁场。
二、实验环境1.硬件:1个霍尔传感器模块、1个ST-Link调试器、2根USB2.0方口线、1根USB3.0数据线、1根RJ11线,1台PC机;2.软件:Windows 7/XP、MDK集成开发环境、串口调试器。
三、实验原理图6-1 霍尔传感器模块1. 霍尔传感器霍尔传感器模块的核心采集部件为A3144霍尔元件,如下图所示。
传感器的内部原理如下图所示。
从标有型号的一面即霍尔面看去,同时使管脚向下,从左到右依次为1脚(VCC)、2脚(GND)、3脚(OUT)。
当霍尔面检测到磁场后,内部三极管导通,输出低电平,平时输出为高电平。
2.电路分析本节实验中,用到了霍尔传感器模块上的Status、RS485-T和User1指示灯,由【配套光盘\01-文档资料\01-原理图\03-传感器模块\13-霍尔传感器】目录中的原理图文件“霍尔传感器.pdf”,可以知道这三个指示灯的控制引脚配置如下表所示。
霍尔元件与STM32的接口电路如下图所示。
当霍尔元件周围无磁场时,输出高电平;当霍尔元件周围有磁场时,输出低电平,并通过PB10输入到STM32中。
3.程序流程四、实验内容1. 将USB3.0数据线的一端连接霍尔传感器模块的USB3.0调试烧写口,另一端连接ST-Link调试器的“Debug”接口。
2. 将第1根15B2.0方口线的一端连接PC机的USB口,另一端连接ST-Link调试器的“UISB-Debug”接口。
3. 将第2根USB2.0方口线的一端连接PC机的USB口,另一端连接ST-Link调试器的“USB-45”接口。
4. 将“RJ11”线的一端连接霍尔传感器的“RJ11”口,另一端连接ST-Link调试器的“RS-485”接口,连接正确后效果如下图所示。
霍尔传感器
第⼋章霍尔传感器图8-1霍尔元件⽰意图
图8-3线性型霍尔集成电路输出特性
图8-4开关型霍尔集成电路
a)外形尺⼨b)内部电路框图
8-5开关型霍尔集成电路的史密特输出特性特斯拉(T)=104⾼斯(Gs)
磁铁从远到近,逐渐靠近图8-5所⽰的开关型霍尔输出翻转?成为什么电平?
图8-8⾓位移测量仪结构⽰意图
1-极靴2-霍尔器件3-励磁线圈
发散性思维:
将图8-8的铁芯⽓隙减⼩到夹紧霍尔IC的
厚度。
则B正⽐于U i,霍尔IC的U o正⽐于B,
可以改造为霍尔电压传感器。
与交流互感器不同的是:可以测量直流电
压,如右图所⽰。
4.霍尔接近开关
在第四章⾥,曾介绍过接近开关的基本概念。
⽤霍尔接近开关也能实现接近开关
图8-12霍尔接近开关应⽤⽰意图
a)外形b)接近式c)滑过式d)分流翼⽚式
1-运动部件2-软铁分流翼⽚
)接近式c)滑过式哪⼀种不易损坏?为什么?
8-12d中,磁铁和霍尔接近开关保持⼀定的间隙、均固定不动。
软铁制作的分流翼⽚与运动部件联动。
当它移动到磁铁与霍尔接近开关之间时,磁⼒线被屏蔽,⽆法到达霍尔接近开关,所以此时霍尔接近开关输出跳变为⾼电平。
改变分流翼⽚的宽度可以改变霍尔接近开关的⾼电平与低电平的占空⽐。
发⽣性思维:电梯“平层”如何利⽤分流翼⽚的原理?
霍尔传感器的其他⽤途:霍尔电压传感器、霍尔电流传感器、霍尔电能表、霍尔⾼斯计、霍尔液位计、霍尔加速度计等。
简介:
当一块通有电流的金属或半导体薄片垂直地放在磁场中时,薄片的两端就会产生电位差,这种现象就称为霍尔效应。
两端具有的电位差值称为霍尔电势U,其表达式为U=K·I·B/d 其中K为霍尔系数,I为薄片中通过的电流,B为外加磁场(洛伦慈力Lorrentz)的磁感应强度,d是薄片的厚度。
由此可见,霍尔效应的灵敏度高低与外加磁场的磁感应强度成正比的关系。
霍尔传感器的外形图和与磁场的作用关系如右图所示。
磁场由磁钢提供,所以霍尔传感器和磁钢需要配对使用。
霍尔传感器检测转速示意图如下。
在非磁材料的圆盘边上粘贴一块磁钢,霍尔传感器固定在圆盘外缘附近。
圆盘每转动一圈,霍尔传感器便输出一个脉冲。
通过单片机测量产生脉冲的频率就可以得出圆盘的转速。
备注:当没有信号产生时,可以改变一下磁钢的方向,霍尔对磁钢方向有要求。
没有磁钢时输出高电平,有磁钢时输出低电平。
接线图:
测速原理图:
产品图片和管脚图:。
霍尔传感器使用说明书简要说明:一、长尺寸:32mm X宽11mm X高20mm二、主要芯片:LM393、3144霍尔传感器三、工作电压:直流5伏四、特点:1、具有信号输出指示。
2、单路信号输出。
3、输出有效信号为低电平。
4、灵敏度可调(精调)。
5、有磁场切割就有信号输出6、电路板输出开关量!(可直接接单片机)7、可用于电机测速/位置检测等场合适用场合:单片机学习、电子竞赛、产品开发、毕业设计。
【图片展示】【与单片机连接测试程序】/********************************************************************汇诚科技实现功能:此版配套测试程序使用芯片:AT89S52晶振:11.0592MHZ波特率:9600编译环境:Keil作者:zhangxinchun淘宝店:汇诚科技【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!*********************************************************************/ /******************************************************************** 说明:1、当测量浓度大于设定浓度时,单片机IO口输出低电平*********************************************************************/ #include<reg52.h> //库文件#define uchar unsigned char//宏定义无符号字符型#define uint unsigned int //宏定义无符号整型/********************************************************************I/O定义*********************************************************************/ sbit LED=P1^0; //定义单片机P1口的第1位(即P1.0)为指示端sbit DOUT=P2^0; //定义单片机P2口的第1位(即P2.0)为传感器的输入端/********************************************************************延时函数*********************************************************************/ void delay()//延时程序{uchar m,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}/********************************************************************主函数*********************************************************************/ void main(){while(1) //无限循环{LED=1; //熄灭P1.0口灯if(DOUT==0)//当浓度高于设定值时,执行条件函数{delay();//延时抗干扰if(DOUT==0)//确定浓度高于设定值时,执行条件函数{LED=0; //点亮P1.0口灯}}}}/********************************************************************结束*********************************************************************/【与单片机连接测速参考程序】/********************************************************************汇诚科技实现功能: 电机转速表设计使用芯片:AT89S52晶振:11.0592MHZ波特率:9600编译环境:Keil作者:zhangxinchun【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!#include<reg52.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚unsigned char code digit[ ]={"0123456789"}; //定义字符数组显示数字unsigned int v; //储存电机转速unsigned char count; //储存定时器T0中断次数bit flag; //计满1秒钟标志位/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/void delay(unsigned char n){unsigned char i;for(i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。
result=1,忙碌;result=0,不忙***************************************************/ unsigned char BusyTest(void){bit result;RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1; //E=1,才允许读写_nop_(); //空操作_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间result=BF; //将忙碌标志电平赋给resultE=0; //将E恢复低电平return result;}/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate***************************************************/void WriteInstruction (unsigned char dictate){while(BusyTest()==1); //如果忙就等待RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲,// 就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_(); //空操作两个机器周期,给硬件反应时间P0=dictate; //将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:指定字符显示的实际地址入口参数:x***************************************************/void WriteAddress(unsigned char x){WriteInstruction(x|0x80); //显示位置的确定方法规定为"80H+地址码x"}/*****************************************************函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)***************************************************/void WriteData(unsigned char y){while(BusyTest()==1);RS=1; //RS为高电平,RW为低电平时,可以写入数据RW=0;E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲,// 就是让E从0到1发生正跳变,所以应先置"0"P0=y; //将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:对LCD的显示模式进行初始化设置***************************************************/void LcdInitiate(void){delay(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间WriteInstruction(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口delay(5); //延时5ms,给硬件一点反应时间WriteInstruction(0x38);delay(5);WriteInstruction(0x38); //连续三次,确保初始化成功delay(5);WriteInstruction(0x0c); //显示模式设置:显示开,无光标,光标不闪烁delay(5);WriteInstruction(0x06); //显示模式设置:光标右移,字符不移delay(5);WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除delay(5);}/******************************************************************************函数功能:显示速度提示符******************************************************************************/ void display_sym(void){WriteAddress(0x00); //写显示地址,将在第1行第1列开始显示WriteData('v'); //将字符常量v写入LCDWriteData('='); //将字符常量=写入LCD}/****************************************************************************** 函数功能:显示速度数值******************************************************************************/ void display_val(unsigned int x){unsigned char i,j,k,l; //j,k,l分别储存温度的百位、十位和个位i=x/1000; //取千位j=(x%1000)/100; //取百位k=(x%100)/10; //取十位l=x%10; //取个位WriteAddress(0x02); //写显示地址,将在第1行第3列开始显示WriteData(digit[i]); //将千位数字的字符常量写入LCDWriteData(digit[j]); //将百位数字的字符常量写入LCDWriteData(digit[k]); //将十位数字的字符常量写入LCDWriteData(digit[l]); //将个位数字的字符常量写入LCD}/*******************************************************函数功能:显示速度单位“r/min”********************************************************/void display_unit(void){WriteAddress(0x06); //写显示地址,将在第2行第7列开始显示WriteData('r'); //将字符常量r写入LCDWriteData('/'); //将字符常量/写入LCDWriteData('m'); //将字符常量m写入LCDWriteData('i'); //将字符常量i写入LCDWriteData('n'); //将字符常量n写入LCD}/*******************************************************函数功能:主函数********************************************************/void main(void){LcdInitiate(); //调用LCD初始化函数TMOD=0x51; //定时器T1工作于计数模式1,定时器T0工作于计时模式1;TH0=(65536-46083)/256; //定时器T0的高8位设置初值,每50ms产生一次中断TL0=(65536-46083)%256; //定时器T0的低8位设置初值,每50ms产生一次中断EA=1; //开总中断ET0=1; //定时器T0中断允许TR0=1; //启动定时器T0count=0; //将T0中断次数初始化为0display_sym(); //显示速度提示符display_val(0000); //显示器工作正常标志display_unit(); //显示速度单位while(1) //无限循环{TR1=1; //定时器T1启动TH1=0; //定时器T1高8位赋初值0TL1=0; //定时器T1低8位赋初值0flag=0; //时间还未满1分钟while(flag==0) //时间未满等待;v=(TH1*256+TL1)*60/16; //计算速度,每周产生16个脉冲display_val(v); //显示速度}}/*******************************************************函数功能:定时器T0的中断服务函数********************************************************/void Time0(void ) interrupt 1 using 1 //定时器T0的中断编号为1,使用第1组工作寄存器{count++; //T0每中断1次,count加1if(count==20) //若累计满20次,即计满1秒钟{flag=1; //计满1秒钟标志位置1count=0; //清0,重新统计中断次数}TH0=(65536-46083)/256; //定时器T0高8位重新赋初值TL0=(65536-46083)%256; //定时器T0低8位重新赋初值}/********************************************************************结束*********************************************************************//********************************************************************汇诚科技实现功能:传感器判断程序使用芯片:AT89S52晶振:11.0592MHZ波特率:9600编译环境:Keil作者:zhangxinchun*********************************************************************//*********************************************************************************************程序说明************************************1、VCC接电源正极2、GND接电源负极3、OUT接单片机P2.0口功能简介:当传感器接收到信号时,传感器输出低电平,单片机IO口P2.0检测到信号后,单片机IO口P1.0输出低电平*********************************************************************/#include<reg52.h> //库文件#define uchar unsigned char//宏定义无符号字符型#define uint unsigned int //宏定义无符号整型/********************************************************************I/O定义*********************************************************************/sbit LED=P1^0; //定义单片机P1口的第1位(即P1.0)为指示端sbit OUT=P2^0; //定义单片机P2口的第1位(即P2.0)为传感器输出信号的输入端/********************************************************************主函数*********************************************************************/void main(){while(1) //无限循环{LED=1; //熄灭P1.0口灯if(OUT==0)//当传感器检测到磁场时,执行条件函数{LED=0; //点亮P1.0口灯while(!OUT);}}}/********************************************************************结束*********************************************************************//******************************************************************** 实现功能:霍尔传感器计数应用仿真程序使用芯片:AT89S52晶振:11.0592MHZ波特率:9600编译环境:Keil作者:zhangxinchun*********************************************************************/ /*********************************************************************************************程序说明************************************1、VCC接电源正极2、GND接电源负极3、OUT接单片机P3.2口4、共阳数码管功能简介:当传感器检测到磁场信号时,传感器输出信号由高电平跳变到低电平输出,单片机IO口P3.2检测到信号后,数码管显示P3.2口输入的计数。