Analoge Sensoren Meten op Raspberry Pi Zonder Native ADC
De Raspberry Pi mist ingebouwde analoge ingangen, toch hoeft dat het uitlezen van analoge sensoren niet te verhinderen. Door een paar weerstanden en een condensator te combineren, kunt u een simpele stap-respons-techniek gebruiken om weerstand te bepalen – ideaal voor potentiometers, fotoweerstanden, thermistoren, en meer.
Achtergrond
Deze aanpak, gepopulariseerd door Adafruit's tutorials en aangepast in de Raspberry Pi Cookbook, meet de tijd die een condensator nodig heeft om op te laden boven een drempel. De GPIO-pins van de Raspberry Pi kunnen het moment detecteren dat de spanning ~1,65 V overschrijdt, zodat u de weerstand van een aangesloten variabele weerstand kunt afleiden.
Wat u nodig hebt
- Standaard breadboard en draadbrugjes
- 10 kΩ trimmer (potentiometer)
- 2 × 1 kΩ weerstanden
- 220 nF condensator
Python-code
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) # Pin-toewijzingen A_PIN = 18 # Condensator ontladen/laden controle B_PIN = 23 # Spanning-drempel detectie 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()
Het uitvoeren van het script produceert output vergelijkbaar met:
$ sudo python pot_step.py 101 210 101 623 435 367 728 610 512 314 317 0
De metingen fluctueren tussen ongeveer 10 en 170 als u de potentiometer-knop draait, wat de variabele weerstand weerspiegelt.
Hoe het Werkt
De techniek berust op de RC-oplaadcurve. Wanneer de condensator verbonden is met de variabele weerstand, stijgt de spanning exponentieel. De GPIO-pin registreert een logische high zodra de condensatorspanning de invoer-drempel (~1,65 V) overschrijdt. De verstreken tijd – geteld in lusiteraties – correleert direct met de weerstand: lagere weerstand betekent snellere lading, wat een kleinere telling oplevert.
Omdat de Pi geen analoge-naar-digitale converter heeft, omzeilt deze timing-methode die beperking, en biedt een kosteneffectieve en betrouwbare manier om een breed scala aan analoge sensoren uit te lezen.
Productieproces
- Professionele temperatuurbewaking met Raspberry Pi en DS18B20
- Compacte DHT temperatuur- en vochtigheidsbreakout voor Raspberry Pi – ATtiny85 & DHT22/DHT11
- Hoe een DS1820 One-Wire temperatuursensor aan te sluiten op een Raspberry Pi via GPIO
- Sensordata integreren in een Raspberry Pi: Een praktische gids
- HC-SR04 ultrasoon-sensor aansluiten op Raspberry Pi 3 – Complete gids
- Analoge Sensoren Meten op de Raspberry Pi met een Enkele GPIO-pin
- Raspberry Pi Fotocel Logging & Alert Systeem – Een Laag-energie Lichtsensor Bouwen met Python
- IoT Bouwen met Java ME 8 op Raspberry Pi: Deel 1 – GPIO-sensorintegratie
- Een Lineaire Hall-sensor Uitlezen met Raspberry Pi: Java-handleiding & ADC0832-inzichten
- Knopindrukken Uitlezen via GPIO op Raspberry Pi: Een Stapsgewijze Handleiding
- Analoge Sensoren Uitlezen met Raspberry Pi en Zabbix: Een Stapsgewijze Handleiding