Arduino - Temperatuursensor - Relay

Deze tutorial laat zien hoe u een Arduino en een DS18B20 temperatuursensor gebruikt om een relay aan te sturen. De Arduino wordt geprogrammeerd om continu de temperatuur te meten met de DS18B20 sensor. De relay wordt vervolgens geregeld volgens de volgende regels:

De relay kan dan een ventilator, verwarmingselement, koelelement of andere apparaten aansturen.

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×Relais
1×DC Stroomconnector
1×Jumperdraden
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 Relay en Temperatuursensor

Als u nog niet bekend bent met de relay en temperatuursensor (pinout, werking, programmering...), bekijk dan eerst deze tutorials:

Bedradingsschema

  • Bedradingsschema met breadboard (experimenteerprint)
arduino temperature sensor relay wiring diagram

This image is created using Fritzing. Click to enlarge image

  • Bedradingsschema met adapter (aanbevolen)
arduino DS18B20 temperature sensor relay wiring diagram

This image is created using Fritzing. Click to enlarge image

Wij adviseren om een DS18B20 sensor met een bedradingadapter aan te schaffen voor een eenvoudige aansluiting. De adapter bevat een ingebouwde weerstand, waardoor een aparte weerstand in de bedrading niet nodig is.

Arduino Code - Temperatuursensor stuurt Relay aan

/* * 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-temperature-sensor-relay */ #include <OneWire.h> #include <DallasTemperature.h> const int RELAY_PIN = A5; // Arduino pin connected to the relay's pin const int SENSOR_PIN = 2; // Arduino pin connected to DS18B20 sensor's DATA pin const float TEMPERATURE_THRESHOLD = 20; // °C OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature sensor(&oneWire); // pass oneWire to DallasTemperature library float temperature; int relay_state; void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_PIN, OUTPUT); sensor.begin(); // initialize the sensor } void loop() { sensor.requestTemperatures(); // send the command to get temperatures temperature = sensor.getTempCByIndex(0); // read temperature in Celsius if (temperature > TEMPERATURE_THRESHOLD) relay_state = HIGH; // set relay_state to HIGH else relay_state = LOW; // set relay_state to LOW digitalWrite(RELAY_PIN, relay_state); // control the relay // print to serial Serial.print("Temperature: "); Serial.print(temperature); Serial.print("°C => relay's state: "); Serial.println(relay_state); }

Snel aan de slag

  • Maak de verbindingen volgens het bovenstaande schema tussen Arduino, temperatuursensor en relay
  • Verbind de Arduino via de USB-kabel met de pc
  • Open de Arduino IDE, selecteer het juiste board en poort
  • Klik op het icoon Libraries aan de linkerkant van de Arduino IDE
  • Zoek naar “DallasTemperature” en vind de DallasTemperature bibliotheek van Miles Burton
  • Klik op de knop Installeren om de DallasTemperature library te installeren
Arduino Dallas Temperature library
  • U krijgt een melding om de afhankelijkheid te installeren
  • Klik op Alles installeren om de OneWire bibliotheek te installeren
Arduino onewire library
  • Kopieer de bovenstaande code en open deze met de Arduino IDE
  • Klik op de Upload knop om de code naar de Arduino te uploaden
  • Verander de temperatuur rond de temperatuursensor
  • Observeer de verandering van de relay
  • Bekijk het resultaat in de Seriële Monitor, dit ziet er bijvoorbeeld zo uit:
COM6
Send
Temperature: 19.1°C => relay's state: 0 Temperature: 19.3°C => relay's state: 0 Temperature: 19.7°C => relay's state: 0 Temperature: 19.8°C => relay's state: 0 Temperature: 20.1°C => relay's state: 1 Temperature: 20.6°C => relay's state: 1 Temperature: 21.4°C => relay's state: 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Arduino Code - Temperatuursensor stuurt Relay met Tolerantie

Tijdens het gebruik kan de temperatuur fluctueren net boven of onder de ingestelde drempel, wat kan leiden tot frequente en plotselinge schakelbewerkingen van de relay. Dit kan onverwachte problemen veroorzaken in de werking. Om dit te voorkomen, kan er een tolerantiemarge (hysterese) worden toegevoegd aan de drempel. De onderstaande code laat zien hoe u dit implementeert:

/* * 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-temperature-sensor-relay */ #include <OneWire.h> #include <DallasTemperature.h> const int RELAY_PIN = A5; // Arduino pin connected to the relay's pin const int SENSOR_PIN = 2; // Arduino pin connected to DS18B20 sensor's DATA pin const float TEMPERATURE_THRESHOLD = 20; // °C const float TOLERANCE = 0.5; // °C OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature sensor(&oneWire); // pass oneWire to DallasTemperature library float temperature; int relay_state; void setup() { Serial.begin(9600); // initialize serial pinMode(RELAY_PIN, OUTPUT); sensor.begin(); // initialize the sensor } void loop() { sensor.requestTemperatures(); // send the command to get temperatures temperature = sensor.getTempCByIndex(0); // read temperature in Celsius if (temperature > (TEMPERATURE_THRESHOLD + TOLERANCE)) relay_state = HIGH; // set relay_state to HIGH else if (temperature < (TEMPERATURE_THRESHOLD - TOLERANCE)) relay_state = LOW; // set relay_state to LOW digitalWrite(RELAY_PIN, relay_state); // control the relay // print to serial Serial.print("Temperature: "); Serial.print(temperature); Serial.print("°C => relay's state: "); Serial.println(relay_state); }

De bovenste code gebruikt een drempel van 20°C en een tolerantie van 0,5°C. Dit betekent:

  • Als de temperatuur lager is dan 19,5°C, wordt de relay uitgeschakeld.
  • Als de temperatuur hoger is dan 20,5°C, wordt de relay ingeschakeld.
  • Als de temperatuur tussen 19,5°C en 20,5°C ligt, blijft de staat van de relay ongewijzigd.

Opmerkingen

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