友情提示:380元/半年,儿童学编程,就上码丁实验室。
玩数据采集当然要了解霍尔传感器。
Introduction
霍尔传感器通常用于近距离切换、定位、速度检测和电流传感应用。在霍尔效应的基础上,一个霍尔传感器是根据磁场对其输出电压的不同而变化的。
霍尔传感器可以分为线性(模拟)霍尔传感器和开关霍尔传感器。开关霍尔传感器由电压调整器、霍尔元件、差动放大器、施密特触发器和输出终端组成,并输出数字值。线性霍尔传感器由一个霍尔元件、线性放大器和发射极输出器组成,输出模拟值。
线性霍尔传感器,输出模拟信号(以两种形式),以及开关霍尔传感器,输出数字信号。如果你将一个比较器添加到线性霍尔传感器,它将能够输出模拟信号和数字信号。

霍尔效应
霍尔效应是一种电磁效应。这是埃德温霍尔在1879年发现的,当时他正在研究金属的导电机理。当导体通过一个均匀的磁场时,就会产生这种效应。电荷载体的自然电子漂移导致磁场作用于Lorentz的力量(在电磁场中对带电粒子施加的力),这些电荷载体。结果是电荷分离,底部或顶部的正电荷或负电荷聚集在一起。

霍尔传感器
霍尔传感器是一种基于它的磁场传感器。
通过导体产生的电流会产生一个与电流不同的磁场,而一个霍尔传感器可以用来测量电流,而不会打断电路。通常,传感器被集成在环绕导体周围的缠绕核心或永久磁铁上。
What you will need
- 树莓派
- 网线
- 线性霍尔传感器模块
- 双彩色共阴极二极管组件
- 开关模块
What you will do
对于开关霍尔的传感器:
1:构建电路
将树莓派的GPIO0连接到交换机模块的模块
将树莓派的GPIO1连接到双色LED模块上
将树莓派的GND连接到开关霍尔模块的GND和双色LED模块的GND。
连接pin 3.3 V的树莓派到pin+的开关霍尔模块和双颜色LED模块的pin+
2:编辑并测试代码
将一块磁铁靠近传感器。
#!/usr/bin/env python
import RPi.GPIO as GPIO
#Hall sensor is connected to pin 11 (BOARD-Layout!)
HALL = 11
#LED is connected to pin 12 (BOARD-Layout!)
LED = 12
#Set pin-layout to BOARD
GPIO.setmode(GPIO.BOARD)
#Avoid error messages if GPIO was not shut down correctly before
GPIO.setwarnings(False)
#Set HALL-pin to input, use internal pull-up-resistor
GPIO.setup(HALL,GPIO.IN, pull_up_down=GPIO.PUD_UP)
#Set LED-pin to output. A resistor should be used here!
GPIO.setup(LED, GPIO.OUT)
#Turn LED off
GPIO.output(LED, GPIO.LOW)
#This function will be called if a change is detected
def change_detected(channel):
if GPIO.input(HALL) == GPIO.LOW:
print 'Magnetic material detected: LED on'
GPIO.output(LED, GPIO.HIGH) #LED on
else:
print 'No magnetic material: LED off'
GPIO.output(LED, GPIO.LOW) # LED off
# Register event-listener on falling and raising
# edge on HALL-sensor input. Call "change_detected" as
# callback
GPIO.add_event_detect(HALL, GPIO.BOTH, change_detected, bouncetime=25)
# The main-loop does nothing. All is done by the event-listener
try:
while True:
pass
# Quit on Ctrl-c
except KeyboardInterrupt:
print "Ctrl-C - quit"
# Cleanup GPIO
finally:
GPIO.cleanup()
对于线性霍尔传感器,采取以下步骤。
1:构建电路

线性霍尔传感器的连接针连接到ADC0832的CH0上
2:编辑并测试代码
将一块磁铁靠近传感器。
#!/usr/bin/env python
import ADC0832
import time
def init():
ADC0832.setup()
def loop():
while True:
res = ADC0832.getResult()
print 'res = %d' % res
time.sleep(0.2)
if __name__ == '__main__':
init()
try:
loop()
except KeyboardInterrupt:
ADC0832.destroy()
print 'The end !'