Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Analoge Sensoren am Raspberry Pi ohne nativen ADC auslesen – Step-Response Methode

Hintergrund

Dem Raspberry Pi fehlen eingebaute Analogeingänge, doch das hindert nicht am Auslesen analoger Sensoren. Mit wenigen Widerständen und einem Kondensator lässt sich eine einfache Step-Response-Technik nutzen, um Widerstandswerte zu ermitteln – ideal für Potentiometer, Fotowiderstände, Thermistoren und mehr.

Dieser Ansatz, populär gemacht durch Adafruit-Tutorials und adaptiert im Raspberry Pi Cookbook, misst die Zeit, die ein Kondensator braucht, um über einen Schwellwert zu laden. Die GPIO-Pins des Raspberry Pi erkennen den Moment, in dem die Spannung ~1,65 V übersteigt, sodass man den Widerstand des angeschlossenen variablen Widerstands ableiten kann.

Benötigte Bauteile

Python-Code

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

# Pin-Belegung
A_PIN = 18  # Kondensator Entladen/Laden Steuerung
B_PIN = 23  # Spannungsschwellwert-Erkennung

def discharge():
    GPIO.setup(A_PIN, GPIO.IN)
    GPIO.setup(B_PIN, GPIO.OUT)
    GPIO.output(B_PIN, False)
    time.sleep(0.005)

def charge_time():
    GPIO.setup(B_PIN, GPIO.IN)
    GPIO.setup(A_PIN, GPIO.OUT)
    count = 0
    GPIO.output(A_PIN, True)
    while not GPIO.input(B_PIN):
        count += 1
    return count

def analog_read():
    discharge()
    return charge_time()

try:
    while True:
        print(analog_read())
        time.sleep(1)
except KeyboardInterrupt:
    GPIO.cleanup()

Die Ausgabe ähnelt:

$ sudo python pot_step.py
101
210
101
623
435
367
728
610
512
314
317
0

Die Werte schwanken zwischen ca. 10 und 170, während man am Potentiometer dreht – sie spiegeln den variablen Widerstand wider.

Funktionsweise

Die Methode nutzt die RC-Ladekurve. Wird der Kondensator an den variablen Widerstand angeschlossen, steigt seine Spannung exponentiell. Der GPIO-Pin registriert ein logisches High, sobald die Kondensatorspannung den Eingangsschwellwert (~1,65 V) übersteigt. Die verstrichene Zeit – gezählt in Schleifendurchläufen – korreliert direkt mit dem Widerstand: geringerer Widerstand bedeutet schnelleres Laden, also kleinerer Zählerwert.

Da der Pi keinen Analog-Digital-Wandler besitzt, umgeht diese Timing-Methode diese Einschränkung und bietet eine kostengünstige, zuverlässige Möglichkeit, eine breite Palette analoger Sensoren auszulesen.

Herstellungsprozess

  1. Professionelle Temperaturüberwachung mit Raspberry Pi und DS18B20
  2. Kompakter DHT Temperatur- & Feuchtigkeits-Breakout für Raspberry Pi – ATtiny85 & DHT22/DHT11
  3. DS1820 One-Wire Temperatursensor an Raspberry Pi GPIO anschließen
  4. Sensordaten in Raspberry Pi integrieren: GPS & MPU-9150 Hands-On Guide
  5. HC-SR04 Ultraschallsensor an Raspberry Pi 3 anschließen – Komplettanleitung
  6. Analoge Sensoren am Raspberry Pi mit nur einem GPIO-Pin auslesen
  7. Raspberry Pi Lichtsensor mit Logging & Alert – Kostengünstiger Fotowiderstand mit Python
  8. IoT mit Java ME 8 auf Raspberry Pi: Teil 1 – GPIO Sensor-Integration
  9. Linearen Hall-Sensor mit Raspberry Pi auslesen: Java-Anleitung & ADC0832 Einblicke
  10. Tastendruck per GPIO am Raspberry Pi auslesen – Schritt-für-Schritt-Anleitung