24-V thermostaatevenementen loggen en grafisch weergeven met optokoppelaar en Raspberry Pi
Veel home-automation projecten gaan over het bouwen van een thermostaat vanaf nul, maar wat als u al een programmeerbare thermostaat heeft en alleen wilt registreren wanneer deze aan of uit gaat? Deze handleiding legt uit hoe u een optokoppelaar gebruikt om het 24-V AC HVAC-systeem veilig te isoleren van een Raspberry Pi, logica-niveau signalen vast te leggen, evenementen te loggen en temperatuurgegevens in realtime te plotten.
Stap 1: Onderdelen en gereedschap verzamelen
Benodigde componenten:
- HCPL3700 optokoppelaar (met ingebouwde gelijkrichter)
- 2 × 3,3 kΩ weerstanden, ½ W of hoger
- 10 µF, ≥10 V electrolytische condensator
- 0,1 µF keramische condensator
- 8 kΩ pull-up weerstand (of 3,3 kΩ + 4,7 kΩ in serie)
- Raspberry Pi (elk model met 3,3 V GPIO)
- Twee-adrig geïsoleerde draad, bij voorkeur met quick-disconnect connector
- Basis elektronica benodigdheden: breadboard, jumper wires, etc.
Optionele temperatuursensor toevoeging:
- ADT7410 digitale temperatuursensor
- SOIC breakout board
- Extra 0,1 µF condensator
- 4 × 10 kΩ weerstanden
Optionele PCB-ontwerpgereedschappen:
- Tweepolige schroefklem
- Female header pins voor het SOIC board
- Male header pins of female header pins voor Pi/Arduino connectiviteit
- SMD-versies van de weerstanden om de printgrootte te verkleinen
Gereedschap:
- Multimeter (AC-spanningsmodus)
Vereisten:
- 24 VAC HVAC-systeem
- Python en gerelateerde bibliotheken (bijv.
hipi-i2c) - Optioneel: Plotly-account voor online grafieken
- Optioneel: Eagle (gratis versie) voor PCB-ontwerp
Stap 2: De relay-draden van de thermostaat identificeren
De meeste residentiële HVAC-systemen werken op 24 VAC. Een programmeerbare thermostaat voedt zichzelf meestal via een "power-stealing" circuit en schakelt een relay om de oven of air-handler te energiseren. Om de relay-status te monitoren, zoek het paar draden dat de 24 VAC-voorziening naar de HVAC-eenheid draagt.
Met een multimeter ingesteld op AC-spanning, test elk draadpaar terwijl de HVAC zowel aan als uit staat. Noteer de spanningsmeting; het juiste paar zou ~24 VAC (vaak iets hoger, bijv. 28–30 VAC) moeten tonen wanneer het systeem actief is en 0 VAC wanneer het rust.
Stap 3: Monitoring-leidingen toevoegen
Schakel de HVAC-voeding uit en bevestig met uw multimeter dat geen spanning aanwezig is. Haal de thermostaat voorzichtig van zijn montagebasis om de bedrading bloot te leggen. Bevestig twee extra draden aan het gekozen paar relay-leiders. Gebruik quick-disconnect connectors aan de Pi-kant voor eenvoudig onderhoud.
Stap 4: Isolatieschakeling bouwen
Directe verbinding van 24 VAC met een Raspberry Pi is onmogelijk. Een optokoppelaar zoals de HCPL3700 biedt elektrische isolatie terwijl deze de invoerspanning automatisch gelijkricht.
Belangrijke punten in het schema:
- Twee 3,3 kΩ weerstanden (gewaardeerd ≥½ W) op de AC-ingangspins stellen de triggerdrempel in. Raadpleeg de HCPL3700 datasheet voor exacte berekeningen.
- Een 10 µF, ≥10 V electrolytische condensator over de DC-uitgang van de gelijkrichter gladde het signaal en voorkomt dat de Pi's GPIO flikkert op de netfrequentie.
- Een 0,1 µF keramische condensator over de voedingspinnen van de optokoppelaar vermindert hoogfrequente ruis.
- Omdat de HCPL3700 een open-collector uitgang gebruikt, is een pull-up weerstand vereist. Een 8 kΩ weerstand (of een 3,3 kΩ + 4,7 kΩ serie) trekt de lijn betrouwbaar hoog voor de 3,3 V logica van de Pi.
Verbinden de uitgang van de optokoppelaar met een Pi GPIO-pin (bijv. GPIO23). Gebruik de 3,3 V rail van de Pi om de voedingspinnen van de optokoppelaar te voeden. Verbinden de ground van de Pi en de optokoppelaar.
Eenmaal bedrading kan de Pi een logische laag detecteren wanneer de HVAC-relay geenergiseerd is en een logische hoog wanneer deze gede-energiseerd is.
Voor complete schema's en componentberekeningen, raadpleeg de HCPL3700 applicatienota.
Stap 5: Software installeren en data loggen
Gebruik Python om de GPIO-pin uit te lezen, elke statuswijziging te timestampen en de data naar een CSV-bestand of database te schrijven. Een eenvoudig script kan er zo uitzien:
import RPi.GPIO as GPIO
import time
import csv
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
with open('thermostat_log.csv', 'a') as f:
writer = csv.writer(f)
while True:
state = GPIO.input(23)
timestamp = time.time()
writer.writerow([timestamp, state])
time.sleep(0.5)
Voor realtime grafieken, upload het CSV naar Plotly of gebruik een lichte bibliotheek zoals Matplotlib om lokale grafieken te genereren.
Stap 6: Uitbreiden met een temperatuursensor (optioneel)
Integreer de ADT7410 via I²C om de omgevingstemperatuur te loggen naast de relay-status. Sluit de sensor aan op de Pi's SDA/SCL pinnen, stel het adres in (standaard 0x48), en lees het 16-bit temperatuurregister. Sla de metingen op in hetzelfde logbestand met een aparte kolom.
Wanneer u de temperatuurdata heeft, gebruik Plotly om een dual-as grafiek te maken: HVAC op de primaire as en temperatuur op de secundaire as, zodat u thermostaatactiviteit kunt correleren met omgevingsveranderingen.
Door deze stappen te volgen, kunt u veilig het gedrag van uw bestaande thermostaat monitoren en loggen zonder het apparaat zelf te wijzigen.
Productieproces
- Naadloze MQTT Integratie: NodeMCU DHT22 Sensoren Met Raspberry Pi 3 B+ Als Broker
- Nauwkeurige Raspberry Pi Temperatuurprofielering Met Python, SQLite En LabVIEW
- 24-V thermostaatevenementen loggen en grafisch weergeven met optokoppelaar en Raspberry Pi
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Naadloze temperatuur- en vochtigheidsbewaking op Raspberry Pi met EzTemp
- Externe weerbewaking met Raspberry Pi 3 en PubNub
- TI SensorTag integreren met Blynk via Node-RED op Raspberry Pi Zero
- Raspberry Pi Fotocel Logging & Alert Systeem – Een Laag-energie Lichtsensor Bouwen met Python
- Een LED Besturen met een PIR-bewegingssensor op Raspberry Pi
- Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
- Knopindrukken Uitlezen via GPIO op Raspberry Pi: Een Stapsgewijze Handleiding