Arduino - Verwarmingssysteem

In deze tutorial gaan we de kamertemperatuur regelen met behulp van een verwarmingselement en een DS18B20 temperatuursensor. Wanneer de temperatuur te laag is, wordt het verwarmingselement ingeschakeld. Wanneer de temperatuur warm genoeg is, schakelt het verwarmingselement uit. U kunt de code ook aanpassen voor andere temperatuursensoren zoals de DHT11, DHT22 of LM35 in plaats van de DS18B20 sensor.

Hardware benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×DS18B20 temperatuursensor (MET adapter)
1×DS18B20 temperatuursensor (ZONDER adapter)
1×4,7 kΩ weerstand
1×relais
1×verwarmingselement
1×12V voedingadapter
1×DC power jack
1×jumper wires (verbindingsdraden)
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

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 verwarmingselement dat in deze tutorial wordt gebruikt, werkt op een 12V voedingsspanning. Wanneer het verwarmingselement van stroom wordt voorzien, genereert het warmte. Om het verwarmingselement te kunnen aansturen met een Arduino, gebruiken we een relais als schakelaar ertussen.

Als u nog niet bekend bent met temperatuursensoren en verwarmingselementen (pinout, werking, programmeren, enz.), kunt u hierover leren in de volgende tutorials:

Bedradingsschema

  • Bedradingsschema met breadboard (experimenteerprint)
Arduino verwarmingssysteem bedradingsschema

This image is created using Fritzing. Click to enlarge image

  • Bedradingsschema met adapter (aanbevolen)
Arduino temperatuursensor bestuurt verwarmingssysteem bedradingsschema

This image is created using Fritzing. Click to enlarge image

Hoe het Systeem Werkt

  • De Arduino leest de temperatuur uit de temperatuursensor uit
  • Als de temperatuur onder een lagere drempelwaarde zakt, schakelt de Arduino het verwarmingselement in
  • Als de temperatuur boven een hogere drempelwaarde uitkomt, schakelt de Arduino het verwarmingselement uit

Dit proces wordt continu herhaald in de loop.

Arduino Code voor Verwarmingssysteem met DS18B20 sensor

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-heating-system */ #include <OneWire.h> #include <DallasTemperature.h> #define SENSOR_PIN 2 // Arduino pin connected to DS18B20 sensor's DQ pin #define RELAY_PIN A5 // Arduino pin connected to relay which connected to heating element const int TEMP_THRESHOLD_UPPER = 20; // upper threshold of temperature, change to your desire value const int TEMP_THRESHOLD_LOWER = 15; // lower threshold of temperature, change to your desire value OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature sensors(&oneWire); // pass oneWire to DallasTemperature library float temperature; // temperature in Celsius void setup() { Serial.begin(9600); // initialize serial sensors.begin(); // initialize the sensor pinMode(RELAY_PIN, OUTPUT); // initialize digital pin as an output } void loop() { sensors.requestTemperatures(); // send the command to get temperatures temperature = sensors.getTempCByIndex(0); // read temperature in Celsius if(temperature > TEMP_THRESHOLD_UPPER) { Serial.println("The heating element is turned off"); digitalWrite(RELAY_PIN, LOW); // turn off } else if(temperature < TEMP_THRESHOLD_LOWER){ Serial.println("The heating element is turned on"); digitalWrite(RELAY_PIN, HIGH); // turn on } delay(500); }

In bovenstaande code schakelt de Arduino het verwarmingselement in wanneer de temperatuur onder 15°C daalt, en houdt het verwarmingselement ingeschakeld totdat de temperatuur boven de 20°C komt.

Snelle Stappen

  • Verbind de Arduino via de USB-kabel met uw pc
  • Open de Arduino IDE, selecteer het juiste bord en de juiste poort
  • Navigeer in de linkerzijbalk van de Arduino IDE naar het icoon Libraries
  • Zoek op “DallasTemperature” en vind de DallasTemperature bibliotheek van Miles Burton
  • Klik op de Installeren knop om de DallasTemperature bibliotheek te installeren
Arduino Dallas Temperature bibliotheek
  • U wordt gevraagd om de bijbehorende afhankelijkheid te installeren
  • Klik op de knop Alle installeren om de OneWire bibliotheek te installeren
Arduino onewire bibliotheek
  • Kopieer bovenstaande code en open deze met de Arduino IDE
  • Klik op de knop Uploaden in de Arduino IDE om de code naar de Arduino te uploaden
  • Maak de omgeving rond de sensor warmer of kouder
  • Controleer de temperatuur van het verwarmingselement en de kamertemperatuur

Gevorderde Kennis

De hierboven beschreven regelmethode is een aan-uit regelaar, ook wel bekend als een signaalschakelaar of "bang-bang" regelaar. Deze methode is heel eenvoudig te implementeren.

Er is een alternatief genaamd de PID-regelaar. Met de PID-regelaar is de gewenste temperatuur stabieler, maar deze is erg moeilijk te begrijpen en te implementeren. Daarom is de PID-regelaar minder populair voor temperatuurregeling.

※ 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!