RPI with Hall Sensor  树莓派霍尔传感器

玩数据采集当然要了解霍尔传感器。

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 !'

发表评论