传感器一直是任何项目中至关重要的组成部分。这些是将实际的实时环境数据转换为数字/可变数据,以便可以由电子设备处理的数据。市场上有许多不同类型的传感器,您可以根据需要选择一种。在这个项目中,我们将学习如何在Arduino上使用霍尔传感器或霍尔效应传感器。该传感器能够检测磁体以及磁体的磁极。
为什么要检测磁铁? 您可能会问。好吧,实际上有许多应用使用霍尔效应传感器,而我们可能从未注意到它们。该传感器的一种常见应用是测量自行车或任何旋转机械中的速度。该传感器还用于BLDC电机中,以感测转子磁铁的位置并相应地触发定子线圈。应用程序无穷无尽,所以让我们学习如何连接霍尔效应传感器Arduino在我们的武器库中添加另一个工具。这是一些带有霍尔传感器的项目:
- 使用Arduino和Processing Android App的DIY车速表
- 使用PIC单片机的数字车速表和里程表电路
- 使用Arduino和处理的虚拟现实
- 使用Arduino进行磁场强度测量
在本教程中,我们将使用Arduino的中断功能来检测霍尔传感器附近的磁铁并点亮LED。由于霍尔传感器的应用要求高读取和执行速度,因此大多数时候霍尔传感器仅与中断一起使用,因此让我们在教程中也使用中断。
所需材料:
- 霍尔效应传感器(任何数字版本)
- Arduino(任何版本)
- 10k ohm和1K ohm电阻
- LED
- 连接线
霍尔效应传感器:
在深入探讨连接之前,您应该了解关于霍尔效应传感器的一些重要知识。实际上,有两种不同类型的霍尔传感器,一种 是数字霍尔传感器,另一种是模拟霍尔传感器。数字霍尔传感器只能检测磁体是否存在(0或1),而模拟霍尔传感器的输出会根据磁体周围的磁场而变化,从而可以检测磁体的强度或强度。在本项目中,仅针对数字霍尔传感器,因为它们是最常用的传感器。
顾名思义,霍尔效应传感器以“霍尔效应”原理工作。根据该定律“当垂直于磁场引入电流沿一个方向流动的导体或半导体时,可以与电流路径成直角测量电压”。使用此技术,霍尔传感器将能够检测其周围是否存在磁体。理论上已经足够,让我们进入硬件。
电路图和说明:
霍尔传感器与Arduino接口的完整电路图可在下面找到。
如您所见,霍尔效应传感器的arduino电路图非常简单。但是,我们通常会犯错误的地方是弄清楚霍尔传感器的引脚号。将读数面对您,左边的第一个针脚是Vcc,然后分别是地和信号。
如前所述,我们将使用中断,因此霍尔传感器的输出引脚连接到Arduino的引脚2。该引脚连接到一个LED,当检测到磁铁时,该LED将打开。我只是简单地在面包板上建立了连接,一旦完成,它看起来就像下面这样。
霍尔效应传感器Arduino代码:
在完整的Arduino代码 只是几行,它可以在这个页面可以直接上传到你的Arduino板的底部。如果您想了解程序的工作原理,请进一步阅读。
我们有一个输入,即传感器,一个输出,即LED。传感器必须作为中断输入连接。因此,在 设置 功能中,我们初始化了这些引脚,并使引脚2用作中断。在这里,引脚2称为 Hall_sensor ,引脚3称为 LED 。
void setup(){pinMode(LED,OUTPUT); // LED是输出引脚pinMode(Hall_sensor,INPUT_PULLUP); //霍尔传感器为输入引脚attachInterrupt(digitalPinToInterrupt(Hall_sensor),toggle,CHANGE); //第二个是中断引脚,它将调用切换功能}
当检测到中断时,将如上一行所述调用切换功能。有许多中断参数,例如 Toggle , Change,Rise,Fall 等。但是在本教程中,我们将检测霍尔传感器的输出变化。
现在,在 切换 函数内部,我们使用一个名为“ state ”的变量,它将仅将其状态更改为0(如果已经为1),然后更改为1(如果已经为零)。这样,我们可以使LED点亮或熄灭。
void toggle(){state =!state; }
最后,在 循环 功能中,我们只需要控制LED。每次检测到磁铁后,可变状态都会改变,因此我们使用它来确定LED是否应保持点亮或熄灭状态。
void loop(){digitalWrite(LED,state); }
Arduino霍尔效应传感器工作:
准备好硬件和代码后,只需将代码上传到Arduino。我使用9V电池为整个设置供电,您可以使用任何理想的电源。现在,将磁铁靠近传感器,您的LED将发光,如果将其取下,它将熄灭。
注意:霍尔传感器对极点敏感,这意味着传感器的一侧只能检测北极或只能检测南极,而不能同时检测到两者。因此,如果将南极靠近北方感应表面,则LED不会发光。
内部实际发生的是,当我们将磁体靠近传感器时,传感器会改变其状态。该变化由中断引脚感测到,该引脚将调用切换功能,在该功能中,我们将变量“状态”从0更改为1。因此,LED将点亮。现在,当我们将磁铁从传感器上移开时,传感器的输出将再次改变。我们的中断语句再次注意到了这一变化,因此变量“状态”将从1更改为0。因此,如果LED熄灭。每次将磁铁靠近传感器时,都会重复同样的步骤。
该项目的完整工作视频可以在下面找到。希望您理解该项目并喜欢构建新的东西。否则,请在下面的评论部分或论坛中寻求帮助。