Raspberry Pi - Verwarmingssysteem

Deze handleiding leert u hoe u een Raspberry Pi, een verwarmingselement en een DS18B20 temperatuursensor gebruikt om de kamertemperatuur te regelen.

Daarnaast kan de code worden aangepast voor andere temperatuursensoren zoals DHT11, DHT22 of LM35 in plaats van de DS18B20-sensor.

Hardware vereist

1×Raspberry Pi 5
1×DS18B20 temperatuursensor (MET adapter)
1×DS18B20 temperatuursensor (ZONDER adapter)
1×4,7 kΩ weerstand
1×relais
1×verwarmingselement
1×12V voeding adapter
1×DC power jack
1×jumper wires (verbindingsdraden)
1×(Aanbevolen) Schroefklem Block Shield voor Raspberry Pi
1×(Aanbevolen) Raspberry Pi Prototyping Basisplaat & Breadboard Kit
1×(Aanbevolen) HDMI-Touchscreen-Monitor voor Raspberry Pi

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Aankoopadvies: Veel DS18B20-sensoren op de markt zijn van lage kwaliteit. We raden u ten zeerste aan de sensor van het merk DIYables te kopen via de bovenstaande link. We hebben het getest en het werkte goed.

Over het verwarmingselement en de DS18B20 temperatuursensor

Het gebruikte verwarmingselement in deze handleiding vereist een 12V voedingsspanning. Wanneer er stroom wordt geleverd aan het verwarmingselement, genereert dit warmte. Om het verwarmingselement met een Raspberry Pi te kunnen aansturen, moet er een relais tussen worden geplaatst.

Als u niet bekend bent met temperatuursensoren en verwarmingselementen (pinouts, werking, programmering, etc.), kunnen de volgende handleidingen nuttig zijn:

Bedradingsschema

Raspberry Pi verwarmingssysteem bedrading schema

This image is created using Fritzing. Click to enlarge image

Hoe werkt het systeem

  • De Raspberry Pi leest de temperatuur uit de temperatuursensor af.
  • Daalt de temperatuur onder een ingestelde ondergrens, dan schakelt de Raspberry Pi het verwarmingselement in.
  • Stijgt de temperatuur boven een ingestelde bovengrens, dan schakelt de Raspberry Pi het verwarmingselement uit.

Deze lus wordt continu herhaald.

Raspberry Pi code voor verwarmingssysteem met DS18B20 sensor

In bovenstaande code schakelt de Raspberry Pi het verwarmingselement in zodra de temperatuur onder 15°C daalt. Het element blijft actief totdat de temperatuur boven de 20°C uitkomt.

Snelle stappen

  • Zorg ervoor dat u Raspbian of een andere Raspberry Pi-compatibele besturingssysteem op uw Pi heeft geïnstalleerd.
  • Controleer of uw Raspberry Pi is verbonden met hetzelfde lokale netwerk als uw pc.
  • Zorg dat uw Raspberry Pi internettoegang heeft als u bibliotheken moet installeren.
  • Gebruikt u Raspberry Pi voor het eerst? Bekijk dan onze Raspberry Pi Aan de slag gids om eerst de basis te leren.
  • Verbind uw pc via SSH met de Raspberry Pi, gebruik daarvoor de ingebouwde SSH-client op Linux en macOS, of PuTTY op Windows. Zie hoe u uw pc via SSH met Raspberry Pi verbindt.
  • Controleer of de RPi.GPIO library is geïnstalleerd. Is dat niet het geval, installeer deze dan via de volgende opdracht:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Voordat u de DS18B20 temperatuursensor gaat gebruiken met de Raspberry Pi, moet u de 1-Wire interface inschakelen op de Pi. Zie Hoe u de 1-Wire interface inschakelt op Raspberry Pi
  • Installeer de library voor de DS18B20 temperatuursensor met de volgende opdracht:
pip install w1thermsensor
  • Maak een Python-scriptbestand met de naam heating.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-heating-system from w1thermsensor import W1ThermSensor import RPi.GPIO as GPIO import time # Constants THRESHOLD_OFF = 20 # Upper threshold of temperature, change to your desired value THRESHOLD_ON = 15 # Lower threshold of temperature, change to your desired value RELAY_PIN = 21 # GPIO pin connected to the relay module, change to your desired GPIO pin # Setup GPIO.setmode(GPIO.BCM) GPIO.setup(RELAY_PIN, GPIO.OUT) def find_ds18b20_sensor(): for sensor in W1ThermSensor.get_available_sensors(): if sensor.type == W1ThermSensor.THERM_SENSOR_DS18B20: return sensor return None def read_temperature(sensor): try: temperature_celsius = sensor.get_temperature() return temperature_celsius except Exception as e: print(f"Error reading temperature: {e}") return None # Find DS18B20 sensor ds18b20_sensor = find_ds18b20_sensor() if ds18b20_sensor is not None: print(f"DS18B20 Sensor found: {ds18b20_sensor.id}") try: while True: temperature = read_temperature(ds18b20_sensor) if temperature is not None: if temperature > THRESHOLD_OFF: print("The heating element is turned off") GPIO.output(RELAY_PIN, GPIO.LOW) # turn off elif temperature < THRESHOLD_ON: print("The heating element is turned on") GPIO.output(RELAY_PIN, GPIO.HIGH) # turn on time.sleep(0.5) except KeyboardInterrupt: pass finally: GPIO.cleanup() else: print("DS18B20 Sensor not found.")
  • Sla het bestand op en voer het script uit via de terminal met de volgende opdracht:
python3 heating.py

Het script draait in een oneindige lus tot u Ctrl + C indrukt in de terminal.

  • Verander de temperatuur in de omgeving van de sensor.
  • Controleer de temperatuur van het verwarmingselement en de ruimte.

Gevorderde kennis

Bovenstaande techniek voor temperatuurregulatie wordt een aan-uit regelaar genoemd, ook wel een signaalregelaar of "bang-bang controller". Deze methode is eenvoudig in de praktijk toe te passen.

Er bestaat ook een alternatieve aanpak, de zogenaamde PID-regelaar. Deze methode biedt stabielere temperatuurregeling, maar is complexer en minder gebruikelijk. Daarom is de PID-regelaar geen populaire keuze voor het regelen van temperatuur in dit soort eenvoudige toepassingen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!