Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
Lektion 06: Hallsensormodul
Bemerkung
Der Raspberry Pi verfügt nicht über analoge Eingabemöglichkeiten, daher benötigt er ein Modul wie den PCF8591 ADC-DAC-Wandlermodul, um analoge Signale zur Verarbeitung zu lesen.
In dieser Lektion lernen wir, wie man mit einem Raspberry Pi von einem Hallsensormodul liest. Sie lernen, wie man ein Fotowiderstandsmodul an den PCF8591 für die Analog-Digital-Umwandlung anschließt und dessen Ausgang in Echtzeit mit Python überwacht. Außerdem werden Sie erkunden, wie man analoge Werte liest und interpretiert, um das Vorhandensein und die Art von Magnetpolen zu erkennen.
Benötigte Komponenten
In diesem Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ITEMS IN THIS KIT |
LINK |
|---|---|---|
Universal Maker Sensor Kit |
94 |
Sie können sie auch einzeln über die unten stehenden Links kaufen.
Component Introduction |
Purchase Link |
|---|---|
Raspberry Pi 5 |
|
- |
|
Verkabelung
Code
import PCF8591 as ADC # Import PCF8591 module
import time # Import time for delay
ADC.setup(0x48) # Initialize PCF8591 at address 0x48
try:
while True: # Continuously read and print
sensor_value = ADC.read(1) # Read from hall sensor module at AIN1
print(sensor_value,end="") # Print the sensor raw data
# Determine the polarity of the magnet
if sensor_value >= 180:
print(" - South pole detected") # Determined as South pole.
elif sensor_value <= 80:
print(" - North pole detected") # Determined as North pole.
time.sleep(0.2) # Wait for 0.2 seconds before the next read
except KeyboardInterrupt:
print("Exit") # Exit on CTRL+C
Code-Analyse
Bibliotheken importieren:
import PCF8591 as ADC # Import PCF8591 module import time # Import time for delay
Diese Importe sind notwendig.
PCF8591wird zur Interaktion mit dem ADC-Modul verwendet, undtimedient zur Implementierung von Verzögerungen in der Schleife.ADC-Modul initialisieren:
ADC.setup(0x48) # Initialize PCF8591 at address 0x48
Das PCF8591-Modul wird eingerichtet.
0x48ist die I2C-Adresse des PCF8591-Moduls. Diese Zeile bereitet den Raspberry Pi auf die Kommunikation mit dem Modul vor.Hauptschleife zur Sensorabfrage:
try: while True: # Continuously read and print sensor_value = ADC.read(1) # Read from hall sensor module at AIN1 print(sensor_value, end="") # Print the sensor raw data
In dieser Schleife wird
sensor_valuekontinuierlich vom Hallsensor (angeschlossen an AIN1 des PCF8591) gelesen. Dieprint-Anweisung gibt die Rohdaten des Sensors aus.Magnetpolarität bestimmen:
# Determine the polarity of the magnet if sensor_value >= 180: print(" - South pole detected") # Determined as South pole. elif sensor_value <= 80: print(" - North pole detected") # Determined as North pole.
Hier bestimmt der Code die Polarität des Magneten. Wenn
sensor_value180 oder höher ist, wird er als Südpol identifiziert. Wenn er 80 oder niedriger ist, wird er als Nordpol betrachtet. Diese Schwellenwerte sollten basierend auf Ihren tatsächlichen Messergebnissen angepasst werden.Das Hallsensormodul ist mit einem 49E linearen Halleffekt-Sensor ausgestattet, der die Polarität der Magnetfeld-Nord- und Südpole sowie die relative Stärke des Magnetfelds messen kann. Wenn Sie den Südpol eines Magneten in die Nähe der mit 49E gekennzeichneten Seite (die Seite mit der Gravur) bringen, erhöht sich der vom Code gelesene Wert linear proportional zur angelegten Magnetfeldstärke. Umgekehrt sinkt der gelesene Wert linear proportional zur Magnetfeldstärke, wenn Sie einen Nordpol in die Nähe dieser Seite bringen. Weitere Details finden Sie unter Hallsensor-Modul.
Verzögerung und Ausnahmebehandlung:
time.sleep(0.2) # Wait for 0.2 seconds before the next read except KeyboardInterrupt: print("Exit") # Exit on CTRL+C
time.sleep(0.2)erzeugt eine Verzögerung von 0,2 Sekunden zwischen jeder Schleifeniteration, um eine übermäßige Abtastrate zu verhindern. Derexcept-Block fängt eine Tastaturunterbrechung (STRG+C) ab, um das Programm sauber zu beenden.