Arduino上进行使用传感器的开发,非常轻松!搭载8种传感器的罗姆传感器评估套件用后感

转载自 Device Plus,获得了相关许可,特此声明

霍尔传感器

1-DSC_0562

通过以前的连载,大家对ROHM传感器评估套件的各种传感器的使用方法已经有所了解了吧!根据传感器的组合及想法,无论什么样的元器件应该都可以制作出来。此次,我们将对刚开始从事电子工程作业时不常听说的"霍尔传感器"的使用方法及原理进行学习!

 

此次的电子工程配方

完成为止的大致时间标准:60分钟
必要零件

※罗姆传感器评估套件可通过以下网站购买!
AMEYA360
RightIC

目 录

  1. 什么是霍尔传感器?
  2. 霍尔传感器的使用方法
  3. 霍尔传感器的样本程序
  4. 总结

1.什么是霍尔传感器?

此次我们使用的霍尔传感器的工作原理是什么呢?经过各种查询我们得知,利用霍尔效应这种性质制作的、可以检测磁性的传感器就叫做霍尔传感器。

霍尔效应 – wikipedia
霍尔效应(英: Hall effect)是指向通电的物体施加垂直于电流方向的磁场时,垂直于电流和磁场的方向会产生电动势的现象。这种效应主要应用于半导体元件。由于是美国物理学家霍尔(英:Edwin Herbert Hall, 1855-1938)于1879年发现的,因此被称为霍尔效应。

 

霍尔传感器的用途

霍尔传感器是一种非接触型传感器,无须接触传感器即可进行传感器的开关。

  • 识别PC及智能手机的开关
  • 测量电机等的转速

……等等。用于电子工程中时,与其他传感器相比给人简单质朴的印象,但除了上述案例,霍尔传感器还被广泛应用于日常的各种机器中。

传感器评估套件中附带的霍尔传感器的型号为"BD7411G",下面我们来实际试用一下这种传感器。

照片1 霍尔传感器BD7411G

照片1 霍尔传感器BD7411G

 

2.霍尔传感器的使用方法

看过以前连载内容的用户对传感器评估套件的使用方法已经有所了解了吧?同样,这次我们首先确认连接传感器的位置。

 

图1 传感器扩展板的连接方法说明

图1 传感器扩展板的连接方法说明

 

霍尔传感器连接在图1所示的GPIO I/F区域,应如照片2所示进行安装。电源电压设置为5V。传感器评估套件上有4个针孔,而霍尔传感器上可能只有3个,容易搞错,因此应沿着套件上的虚线进行排列安装。

 

 
照片2 霍尔传感器的安装

照片2 霍尔传感器的安装

 

 

安装完成后,和以前一样,为了通过Arduino从霍尔传感器获取数据,应进行程序设定。

 

3.霍尔传感器的程序

霍尔传感器的库请从下述官方网站下载。从下载到安装的流程已在第4回第3回第2回第1回的内容中详细介绍,初次使用传感器套件的用户请参阅上述内容。

从上述网站的页面下方下载传感器用软件后,打开Arduino IDE,通过添加库分别选择下载的文件,完成库的安装。

图2 添加库

图2 添加库

 

库安装完成后,请从sketch示例中打开气压传感器及温度传感器的样本,写入Arduino,检查能否正常运行。

  • 霍尔传感器的样本:"文件"-"sketch示例"-"BD7411G"-"example"-"BD7411"

此样本程序是在传感器作出反应时,向串行监视器输出"BD7411G Magnet field Detect!"显示的程序。通过写入Arduino,可以确认磁铁靠近传感器时显示的情形。
※将使用BD7411G的程序写入Arduino时,在笔者使用的环境中,若为连接传感器的状态则上传会失败。出现类似情况时,请试着暂时卸下BD7411G传感器进行上传,等上传正常完成后再安装传感器。

 

霍尔传感器的样本程序

							/***************************************************************************

								BD7411.ino
							


							 Copyright (c) 2016 ROHM Co.,Ltd.
							


							 Permission is hereby granted, free of charge, to any person obtaining a copy

							 of this software and associated documentation files (the "Software"), to deal

							 in the Software without restriction, including without limitation the rights

							 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

							 copies of the Software, and to permit persons to whom the Software is

							 furnished to do so, subject to the following conditions:
							


							 The above copyright notice and this permission notice shall be included in

							 all copies or substantial portions of the Software.
							


							 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

							 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

							 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

							 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

							 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

							 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

							 THE SOFTWARE.

							****************************************************************************/

							#include <BD7411.h>
							


							int hallout_pin = 0; // use D0 pin
							


							BD7411 bd7411;
							


							void setup() {
							


								Serial.begin(9600);

								while (!Serial);
							


								bd7411.init(hallout_pin);
							


								Serial.println("BD7411G Sample");

							}
							


							void loop() {
							


								int hallout;
							


								hallout = bd7411.readoutpin();

								if (hallout == 0) {

									Serial.println("BD7411G Magnet field Detect!");

								} else {

									Serial.println();

								}
							


								delay(500);

							}
图3 霍尔传感器的输出结果

图3 霍尔传感器的输出结果

创建测量转速的程序

请将磁铁安装在电机上测量转速。该程序在串联两节五号电池时计算转速。我们已将齿轮安装在电机上,并在齿轮的局部贴上了四方形的磁铁。为了使磁铁和霍尔传感器间保持2~3mm的距离,制作了一个基座。
这里,我们设定delay(30),若电机转速较快,设为30时可能无法追上一圈,从而无法正确获得数据,这种情况下请缩短delay值,设定为5或10等进行尝试。

							#include <BD7411.h>
							


							


							int hallout_pin = 0; // use D0 pin

							int _cnt = 0;

							bool _flg = false;

							BD7411 bd7411;
							


							void setup() {

								Serial.begin(9600);

								while (!Serial);

								bd7411.init(hallout_pin);

								Serial.println("BD7411G Sample");

							}
							


							void loop() {

								int hallout;

								hallout = bd7411.readoutpin();

								if (hallout == 0 && _flg == false) {

									Serial.print("BD7411G Magnet field Detect! - ");

									_flg  = true;

									_cnt++;

									Serial.println(_cnt);

								} else {

									_flg  = false;

								}
							


								delay(30);

							}

 

照片3 转速测量测试机

照片3 转速测量测试机

图4 转速显示结果

图4 转速显示结果

大家可以看见,样本程序信息显示之后显示了当前的旋转计数!

 

总结

现在我们已经了解了霍尔传感器的简单使用方法,下次我们将实际使用此传感器评估套件的霍尔传感器来挑战自行车速度仪的制作。