电话微信
020-123456789
首页电流电压传感器其他传感器、敏感元件温度传感器水分湿度传感器新闻资讯公司简介
新闻资讯
NEWS INFORMATION
当前位置:
首页>产品中心
霍尔传感器文末福利打造自行车速度计
2024-05-16 07:37:43

本篇文章使用霍尔效应传感器来检测磁铁是传感否存在。每当磁铁移过该传感器时,器文它就能检测到它。末福这种传感器可以用来做很多不同的利打事情。例如,造自如果我们需要检测门关闭;然后我们只需要将磁铁连接到门上,行车将霍尔传感器连接到门框上。速度无论何时门关闭,传感磁铁都放置在霍尔效应传感器附近,器文我们能够检测到门已经关闭。末福

类似地,利打该相同原理可用于制造用于自行车或任何其他车辆的造自速度计。如果磁铁安装在车轮上并且霍尔效应传感器放置在自行车车架的行车某个位置,则可以测量车轮完成一次旋转所需的速度时间,并且通过更多的传感数学计算,我们可以检测到自行车的运动速度!

霍尔效应传感器基于霍尔效应的原理工作,其表明无论何时在垂直于导体中的电流流动的方向上施加磁场,都会引起电位差。该电压可用于检测传感器是否在磁铁附近。Arduino可通过其中断引脚检测此电压变化,并确定磁铁是否靠近传感器。Arduino霍尔效应传感器的基本工作原理如下图所示。

Arduino霍尔效应传感器工作原理

有许多类型的霍尔效应传感器,某些类型对于某些应用更好。对于检测速度并不重要的应用,可以使用普通的霍尔效应传感器,如44E。但是,对于涉及高速检测的应用,例如速度计,应使用US5881或US1881等高频霍尔效应传感器。霍尔效应传感器有两种主要类型:锁存和非锁存。

US1881是一个锁存霍尔效应传感器。只要磁铁的北极靠近它,传感器就会发出输出高(5V)电压。即使移除磁铁,传感器仍会输出高电压,并且不会变为低电平(0V),直到磁铁的南极接近它。这些锁定在特定状态的传感器称为锁存霍尔效应传感器。

产品参数

工作电压:DC5V

接口类型:数字

输出信号:平时输出低电平,检测到磁性时输出高电平。部分批次显示相反。使用前先调节电位器,至板载LED灯灭,再用磁铁测试。

重量:5g

该模块为霍尔磁力传感器,可以理解为磁感应开关。

引脚定义

地(GND)

电源(VCC)

信号输出(OUT)

intledPin=13;//定义13号引脚为LED引脚intinputPin=2;//2号引脚用来连接霍尔传感器intval=0;//设置一个变量voidsetup(){pinMode(ledPin,OUTPUT);//设置LED引脚为输出模式pinMode(inputPin,INPUT);//设置传感器引脚输入模式}voidloop(){val=digitalRead(inputPin);//读取传感器的变化if(val==HIGH){//检查是否为高电平digitalWrite(ledPin,LOW);//如果是的话就关闭LED}else{digitalWrite(ledPin,HIGH);//否则打开LED}}

这个程序比较简单,我们把这个程序改改就可以用来测速、用来记录行驶距离了

福利来了

材料清单:

Arduinonano×1

磁铁×1

A3144霍尔效应传感器×1

20k电阻×1

0.96英寸的OLED×1

LED灯带×若干

移动电源×1

迷你USB电缆×1

热熔胶×1

螺母×若干

螺栓×若干

轮胎上放置一个磁铁并在框架上添加一个霍尔效应传感器。这样每次磁铁穿过传感器时,Arduino可以计算速度和距离。

该项目使用的是经典款传感器——A3144霍尔效应传感器。当特定的磁面向正确方向时,传感器的输出就会拉的很低。方向非常重要,因为外磁场不会影响输出。

如图显示正确方向。霍尔效应传感器需要一个10k的上拉电阻。在该项目中使用Arduino中的20k上拉电阻代替。

磁铁安放的位置也很重要。将其安放的远一点可能导致读数不一致或旋转丢失数据,将其安放的非常近可能导致磁体接触传感器,效果都会不太理想。

显示屏

显示屏是可选的,但是你需要它来显示速度、里程和实时加速度。本次使用的显示器是0.96英寸的OLED显示器,I2C作为从设备和主设备之间的通信协议。

如下图所示,Arduino自动切换的三种模式。

Arduino刚刚启动并成功启动。

km/hr的速度单位。该模式是在运动时显示,并在运行停止后自动关闭。

以米作为单位显示运动的距离。一旦运动停止,Arduino开关将在3秒内显示里程。

这个系统并不完美。需要在保持运动时,才能显示运动的里程等,有待你的完善。

电源问题

该项目使用的电源比较笨重,如图所示。为了便于充电,使用移动电源作为电源供应,并使用MiniUSB线将移动电源的USB电源线连接到Arduinonano上。

市面上的移动电源在设计上也有些傻瓜式。为了节省电量,如果电流消耗不高于某个阈值,电源组被设计为关闭输出。阈值至少为2300mA。

电路最大电流消耗不超过20mA。因此,一般的移动电源都会自动关闭输出。因此选择了这款支持微小电流消耗的移动电源。

刹车灯(可选)

我决定添加一个刹车灯作为附加功能。问题是我的灯如何自动在刹车的时候亮呢?实验证明,如果制动系统减速(也意味着如果我在计算加速度,其结果为负时),就可以打开刹车灯。只要当我停止蹬车,灯就会亮起。

刹车灯直接从Arduinonano的引脚2取电。

//inm/sdefineOLED_RESET4Adafruit_SSD1306display(OLED_RESET);constintchipSelect=9;intn=0;intcount=0;doubleinstant=0;doubleprevinstant=0;doubleprevprevinstant=0;intwheelcount=0;floatvelocity=0;floataccleration=0;floatdistance=0;inttemp;boolunit1=0;boolunit2=1;boolunit3=0;intunitmillis1=0;intunitmillis2=0;intunitmillis3=0;voidsetup(){pinMode(2,INPUT_PULLUP);pinMode(brakelight,OUTPUT);attachInterrupt(digitalPinToInterrupt(2),cross,FALLING);(SSD1306_SWITCHCAPVCC,0x3C);(WHITE);(3);}voidloop(){if(0accleration){digitalWrite(brakelight,HIGH);}if(0accleration){digitalWrite(brakelight,LOW);}{if(unit1!=1unit2!=1unit3!=1){();(0,0);(velocity*18/5);(2);(67,18);("km/hr");();(3);();}else{();(0,0);(distance);(1);(90,25);if(distance==0){("START");}else{("meters");}();(3);}}if(unitmillis1!=millis()/displaychangeafter+1){unitmillis1=millis()/displaychangeafter+1;unit1=1;}if(unitmillis2!=millis()/displaychangeafter+2){unitmillis2=millis()/displaychangeafter+2;unit2=1;}if(unitmillis3!=millis()/displaychangeafter){unitmillis3=millis()/displaychangeafter;unit3=1;}}voidcross(){prevprevinstant=previnstant;previnstant=instant;instant=micros()/1000.0;wheelcount++;if(wheelcount2){distance=diameter*wheelcount*pi;velocity=diameter/(instant-previnstant)*pi;accleration=2*diameter*pi*(1/(instant-previnstant)-1/(previnstant-prevprevinstant))/(instant-prevprevinstant);velocity=velocity*1000;accleration=accleration*100000000;unit3=0;unit2=0;unit1=0;}}

关于oled屏幕的驱动我们还没有讲到,根据头文件,大家可以知道,OLED屏幕的连接方式是I2C。这个程序大家先烧写上,OLED屏幕的使用后几期会跟大家详细介绍。

联系人:020-123456789
公司地址:联系地址联系地址联系地址
Copyright © 2024 Powered by 济宁华矿机械设备有限公司   sitemap