使用Arduino中断功能检测霍尔传感器附近磁铁的教程

在本教程中,我们将使用 arduino 的中断功能来检测霍尔传感器附近的磁铁并发光 led。大多数情况下,霍尔传感器将仅与中断一起使用,因为它们的应用需要高读取和执行速度,因此让我们在本教程中也使用中断。
所需材料:
霍尔效应传感器(a3144 或任何其他数字版本)
arduino (任何版本)
10k 欧姆和 1k 欧姆电阻器
发光二极管
连接线
霍尔效应传感器:
在我们深入研究连接之前,您应该了解一些关于霍尔效应传感器的重要事项。实际上,有两种不同类型的霍尔传感器,一种是数字霍尔传感器,另一种是模拟霍尔传感器。数字霍尔传感器只能检测磁铁是否存在(0 或 1),但模拟霍尔传感器的输出根据磁铁周围的磁场而变化,它可以检测磁铁的强度或距离。在本项目中,将仅针对数字霍尔传感器,因为它们是最常用的传感器。
顾名思义,霍尔效应传感器的工作原理是“霍尔效应”。根据该定律,“当垂直于磁场引入具有沿一个方向流动的电流的导体或半导体时,可以以与电流路径成直角的方式测量电压”。使用这种技术,霍尔传感器将能够检测到其周围是否存在磁铁。理论够了,让我们进入硬件。
arduino霍尔效应传感器电路连接及说明:
霍尔传感器与 arduino 接口的完整电路图如下。
如您所见,霍尔效应传感器 arduino 电路图非常简单。但是,我们经常犯错误的地方是弄清楚霍尔传感器的引脚数。将读数面向您,左侧的第一个引脚分别是 vcc,然后是接地和信号。
我们将如前所述使用中断,因此霍尔传感器的输出引脚连接到 arduino 的引脚 2。引脚连接到 led,当检测到磁铁时,该 led 将打开。我只是在面包板上进行了连接,完成后看起来有点像这样。
arduino 霍尔效应传感器代码:
完整的arduino代码只有几行,它可以在这个页面的底部找到,可以直接上传到你的arduino板。如果您想知道该程序的工作原理,请进一步阅读。
我们有一个输入,即传感器,一个输出是led。传感器必须作为中断输入连接。因此,在我们的设置函数中,我们初始化这些引脚,并使引脚 2 作为中断工作。这里的引脚 2 称为 hall_sensor,引脚 3 称为 led。
void setup() {
pinmode(led, output); //led is a output pin
pinmode(hall_sensor, input_pullup); //hall sensor is input pin
attachinterrupt(digitalpintointerrupt(hall_sensor), toggle, change); //pin two is interrupt pin which will call toggle function
}
当检测到中断时,将如上行所述调用切换函数。有许多中断参数,如切换、变化、上升、下降等,但在本教程中,我们将检测霍尔传感器输出的变化。
现在在切换函数中,我们使用一个名为“state”的变量,如果已经是 1,它只会将其状态更改为 0,如果已经为零,则更改为 1。这样,我们可以使 led 打开或关闭。
void toggle() {
state = !state;
}
最后,在我们的循环功能中,我们只需要控制led。每次检测到磁铁时,可变状态都会改变,因此我们使用它来确定 led 应该保持亮起还是熄灭。
void loop() {
digitalwrite(led, state);
}
arduino霍尔效应传感器工作:
准备好硬件和代码后,只需将代码上传到arduino即可。我使用9v电池为整个设置供电,您可以使用任何更好的电源。现在将磁铁靠近传感器,您的 led 会发光,如果您将其拿走,它将熄灭。
注意:霍尔传感器对极点敏感,这意味着传感器的一侧只能检测北极或仅检测南极,而不能同时检测两者。因此,如果您将南极靠近北感应表面,您的 led 将不会发光。
内部实际发生的事情是,当我们把磁铁靠近传感器时,传感器会改变其状态。这种变化是由中断引脚感应到的,中断引脚将调用切换函数,我们将变量“状态”从 0 更改为 1。因此,led 将亮起。现在,当我们将磁铁从传感器上移开时,传感器的输出将再次发生变化。我们的中断语句再次注意到了这种变化,因此变量“state”将从 1 更改为 0。因此,如果 led 熄灭。每次将磁铁靠近传感器时,都会重复相同的情况。
const byte ledpin = 13;
const byte interruptpin = 2;
volatile byte state = low;
int val=0;
void setup() {
pinmode(ledpin, output);
pinmode(interruptpin, input_pullup);
attachinterrupt(digitalpintointerrupt(interruptpin), test, change);
serial.begin(9600);
}
void loop() {
digitalwrite(ledpin, state);
serial.println(val/2);
}
void test() {
state = !state;
val++;
}

Three Group宣布与思科Jasper合作
晶电持葳天科技近三成股权 积极扩产MiniLED
高通与爱立信、AT&T开展5G NR试验
英伟达的GPU销量增长29.53%,远超AMD和英特尔
南京锻造机器人课程即将开课
使用Arduino中断功能检测霍尔传感器附近磁铁的教程
精密电流源电路原理及应用,安泰ATS程控标准微安级微电流源
企业这样做才能有效参展
TYPE-C充电连接器凭什么“登顶称王”?
Corei9-9900KS处理器将于10月上市 号称迄今为止地表最快的游戏处理器
智能分析摄像机为我市平安菜篮子建设保驾护航
CAN总线经过多年的调整,增加了本地互连网络以处理膨胀的通信负荷
[ 互感器技术 ] CT、PT互感器综合测试仪有哪些新功能
【泰克芯高度,视界大不同】开发未来,泰克为不同行业提供100种应用功能免费试用
关于粮食谷物重金属快速检测仪的功能说明
人工智能(AI)在供应链管理中的潜力
红米7及红米Note7Pro官方高清图赏
佳能申请消费级无人机专利,能否改变大疆垄断市场的局面
在发展半导体产业漫长道路上,艰难地挺过低潮期 具有全球竞争力的IC
优必达与晨星共创数字电视云游戏市场