Goedkope Infrarood Nabijheidssensor voor Raspberry Pi Met Alleen Digitale Pins
Raspberry Pi-borden draaien op de Broadcom BCM2835-processor, die 26 general-purpose input/output (GPIO)-pins biedt. Terwijl Python-bibliotheken zoals RPi.GPIO het besturen van deze pins eenvoudig maken, is een opvallende beperking ten opzichte van Arduino het gebrek aan echte analoge ingangen. GPIO-pins zijn strikt digitaal: een pin ingesteld als output kan slechts 0 V (LOW) of 3,3 V (HIGH) leveren. Wanneer geconfigureerd als input, wordt elke spanning onder 0,8 V geïnterpreteerd als LOW, en elke spanning boven 1,3 V als HIGH.
In veel real-world-toepassingen – temperatuurmonitoring, afstandmeting, lichtintensiteitsmeting – is het onderliggende signaal inherent continu. Te vertrouwen op een binaire "aan/uit"-output is vaak onvoldoende. De typische workaround is een externe analoge-naar-digitale-converter (ADC) toe te voegen zoals de MCP3008, TLC549, of MCP23017, die communiceren via SPI of I²C. Deze chips zijn individueel goedkoop, maar gecombineerd met commerciële sensoren kan de totale kosten oplopen tot $20–$30 en de montage wordt bulkier – een issue voor robotica-projecten die meerdere sensoren vereisen.
Gelukkig bestaat een simpele maar effectieve aanpak die de noodzaak voor een externe ADC elimineert. Door de analoge meting om te zetten in een tijd-gebaseerd signaal, kunnen de digitale pins van de Raspberry Pi indirect continue data samplen. Tijd is een van nature analoge hoeveelheid, en de techniek berust op het klassieke RC (weerstand-condensator)-oopladeprincipe.
DIY Infrarood Nabijheidssensor-ontwerp
Het circuit gebruikt slechts goedkope componenten: een handvol infrarood LEDs, een fototransistor, een 2N3904 NPN-transistor, een 100 nF keramische condensator, en lage-vermogen-weerstanden. De exacte deelnummers zijn uitwisselbaar; de sleutel is het behoud van de juiste elektrische karakteristieken.
Belangrijk componentenotitie: De 100 nF-condensator kan een low-profile keramische of een klasse-1 keramische/film-condensator zijn voor optimale stabiliteit.
Hardware Setup
- Voeding: Verbind de +5 V- en GND-leids met een externe 5 V-voeding. Verbind de GND met de ground van de Raspberry Pi.
- GPIO-toewijzing: Kies één GPIO-pin (bijv.
PIN_A) als trigger-output, en een andere (bijv.PIN_B) als meet-input.
Meetprincipe
Wanneer PIN_A HIGH wordt gedreven, verlichten de infrarood LEDs het doeloppervlak. Gereflecteerd licht activeert de fototransistor, die een stroom produceert evenredig aan de gereflecteerde intensiteit. Deze stroom laadt de condensator via de 2N3904-transistor. De tijd die het duurt voordat de condensatorspanning de digitale drempel van de Raspberry Pi op PIN_B overschrijdt, is omgekeerd evenredig aan de fototransistor-stroom, en dus direct evenredig aan de afstand tot het reflecterende object.
Python-besturingsstroom
# 1. Zorg dat de condensator volledig ontladen is GPIO.setup(PIN_B, GPIO.OUT) GPIO.output(PIN_B, 0) time.sleep(0.01) # 10 ms om 200×RC (≈0,00005 s) te overschrijden # 2. Schakel PIN_B naar input-modus GPIO.setup(PIN_B, GPIO.IN) # 3. Activeer de IR-LEDs GPIO.setup(PIN_A, GPIO.OUT) GPIO.output(PIN_A, 1) # 4. Meet laag-duur op PIN_B counter = 0 start_time = time.time() * 1000 # milliseconden while GPIO.input(PIN_B) == 0 and counter < 1e4: counter += 1 elapsed = time.time() * 1000 - start_time # elapsed (in ms) ≈ k × afstand
Met een 4,3 kΩ-weerstand en een 100 nF-condensator is de RC-tijdconstante 0,43 ms. De 2N3904 versterkt de fototransistor-stroom met ongeveer 150×, zodat de LEDs ongeveer 50 mA trekken tijdens activatie. De resulterende tijdsvertraging, elapsed, schaalt lineair met afstand, wat een simpele analoge-naar-tijd-conversie biedt zonder enige speciale ADC-hardware.
Deze methode biedt een compacte, goedkope alternatief voor conventionele ADC-gebaseerde nabijheidssensoren, ideaal voor embedded robotica, hobbyprojecten, en educatieve demonstraties.
Productieproces
- Meerdere DS18B20 1-Wire Sensoren Aan Een Raspberry Pi Koppelen Voor Nauwkeurige Temperatuurmonitoring
- 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
- Lijnvolgsensor met Raspberry Pi – Simpele KY-033 deur/lijndetector
- Analoge Sensoren Meten op de Raspberry Pi met een Enkele GPIO-pin
- Een DIY Infrarood Bewegingssensor Bouwen voor Raspberry Pi – Stapsgewijze Handleiding
- Analoge Sensoren Meten op Raspberry Pi Zonder Native ADC
- Hoe een DS18B20 One-Wire Digitale Thermometer aan te Sluiten op een Raspberry Pi – Stapsgewijze Handleiding
- Een Lineaire Hall-sensor Uitlezen met Raspberry Pi: Java-handleiding & ADC0832-inzichten
- Een Raspberry Pi Geiger-teller Bouwen – Open-Hardware Stralingssensor Tutorial