categorieën: Microcontroller-circuits
Aantal keer bekeken: 9996
Reacties op het artikel: 0

Temperatuur en vochtigheid meten op Arduino - een selectie van methoden

 

Om een ​​weerstation of thermometer voor thuis te maken, moet u leren hoe u het Arduino-bord en een apparaat voor het meten van temperatuur en vochtigheid koppelt. Temperatuurmeting kan worden gedaan met een thermistor of een digitale sensor DS18B20, maar voor het meten van vochtigheid gebruik meer complexe apparaten - sensoren DHT11 of DHT22. In dit artikel laten we u zien hoe u temperatuur en vochtigheid kunt meten met de Arduino en deze sensoren.

Temperatuur en vochtigheid meten op Arduino - een selectie van methoden

Thermistor meting

De eenvoudigste manier om de temperatuur te bepalen is om te gebruiken thermistor. Dit is een type weerstand waarvan de weerstand afhangt van de omgevingstemperatuur. Er zijn thermistoren met een positieve en negatieve temperatuurcoëfficiënt - respectievelijk PTC (ook posistoren genoemd) en NTC-thermistoren.

In onderstaande grafiek zie je de temperatuurafhankelijkheid van weerstand. De stippellijn toont de afhankelijkheid voor een negatieve TCS-thermistor (NTC) en de ononderbroken lijn voor een positieve TCS-thermistor (PTC).

Temperatuurafhankelijkheid van weerstand

Wat zien we hier? Het eerste dat opvalt, is dat het schema voor de PTC-thermistor is gebroken en het moeilijk of onmogelijk zal zijn om een ​​aantal temperatuurwaarden te meten, maar het schema voor de NTC-thermistor is min of meer uniform, hoewel het duidelijk niet-lineair is. Wat betekent dit Het gebruik van een NTC-thermistor is gemakkelijker om de temperatuur te meten, omdat het gemakkelijker is om de functie te achterhalen waarmee de waarden veranderen.

Om de temperatuur om te zetten in weerstand, kunt u de waarden handmatig verwijderen, maar dit is moeilijk thuis te doen en u hebt een thermometer nodig om de werkelijke waarden van de temperatuur van het medium te bepalen. In de gegevensbladen van sommige componenten wordt een dergelijke tabel bijvoorbeeld gegeven voor een reeks NTC-thermistoren van Vishay.

Datashit Vishay TC Thermistors

Vervolgens kunt u de vertaling organiseren via de vertakkingen met behulp van de functie if ... else of switchcase. Als er echter geen dergelijke tabellen in de gegevensbladen zijn, moet u de functie berekenen waarmee de weerstand verandert bij toenemende temperatuur.

Om deze verandering te beschrijven, bestaat de Steinhart-Hart-vergelijking.

Steinhart-hart vergelijking

waarbij A, B en C de thermistorconstanten zijn die worden bepaald door drie temperaturen te meten met een verschil van ten minste 10 graden Celsius. Tegelijkertijd geven verschillende bronnen aan dat ze voor een typische 10 kΩ NTC-thermistor gelijk zijn aan:

Thermistor constanten

B - beta-coëfficiënt, het wordt berekend op basis van de meting van de weerstand voor twee verschillende temperaturen. Het wordt aangegeven in het gegevensblad (zoals hieronder geïllustreerd) of onafhankelijk berekend.

B - beta-coëfficiënt uit gegevensblad

In dit geval wordt B aangegeven in de vorm:

bèta-verhouding

Dit betekent dat de coëfficiënt is berekend op basis van gegevens die zijn verkregen bij het meten van de weerstand bij temperaturen van 25 en 100 graden Celsius, en dit is de meest voorkomende variant. Vervolgens wordt het berekend met de formule:

B = (ln (R1) - ln (R2)) / (1 / T1 - 1 / T2)

Een typisch verbindingsdiagram van een thermistor op een microcontroller wordt hieronder getoond.

Verbindingsdiagram van de thermistor op de microcontroller

Hier is R1 een constante weerstand, de thermistor is verbonden met de stroombron en de gegevens worden genomen vanuit het midden tussen hen, het diagram geeft voorwaardelijk aan dat het signaal wordt geleverd aan pin A0 - dit analoge ingang Arduino.

Verbindingsdiagram van de thermistor op de microcontroller

Om de weerstand van een thermistor te berekenen, kunt u de volgende formule gebruiken:

R van thermistor = R1⋅ ((Vcc / Voutput) −1)

Om te vertalen naar een taal die begrijpelijk is voor Arduino, moet je onthouden dat de Arduino een 10-bit ADC heeft, dus de maximale digitale waarde van het ingangssignaal (spanning 5V) is 1023. Voorwaardelijk:

  • Dmax = 1023;

  • D is de werkelijke waarde van het signaal.

vervolgens:

R van thermistor = R1⋅ ((Dmax / D) −1)

Nu gebruiken we dit om de weerstand te berekenen en berekenen we vervolgens de temperatuur van de thermistor met behulp van de beta-vergelijking in een programmeertaal voor Arduino. De schets ziet er zo uit:

schets

DS18B20

Nog populairder voor het meten van temperatuur met.Arduino vond een digitale sensor DS18B20. Het communiceert met de microcontroller via de 1-draads interface, u kunt verschillende sensoren (tot 127) op één draad aansluiten, en om toegang te krijgen moet u de ID van elk van de sensoren achterhalen.

Opmerking: u moet de ID kennen, zelfs als u slechts 1 sensor gebruikt.

DS18B20 Digitale sensor

Het verbindingsdiagram van de ds18b20 sensor naar Arduino ziet er zo uit:

Verbindingsdiagram van de ds18b20 sensor naar Arduino
Verbindingsdiagram van de ds18b20 sensor naar Arduino

Er is ook een parasitaire voedingsmodus - het verbindingsdiagram ziet er zo uit (je hebt twee draden nodig in plaats van drie):

Arduino Sensor Verbindingsdiagram

In deze modus is een correcte werking niet gegarandeerd bij het meten van temperaturen boven 100 graden Celsius.

De digitale temperatuursensor DS18B20 bestaat uit een hele reeks knooppunten, net als elke andere SIMS. U kunt het interne apparaat hieronder bekijken:

Digitale temperatuursensor DS18B20

Om ermee te werken, moet u de Onewire-bibliotheek voor Arduino downloaden, en voor de sensor zelf wordt het aanbevolen om de DallasTemperature-bibliotheek te gebruiken.

schets

Dit codevoorbeeld demonstreert de basisprincipes van het werken met 1 temperatuursensor, het resultaat in graden Celsius wordt na elke uitlezing uitgevoerd via de seriële poort.


DHT11 en DHT22 - vochtigheids- en temperatuursensoren

DHT11 en DHT22 - vochtigheids- en temperatuursensoren

Deze sensoren zijn populair en worden vaak gebruikt om de luchtvochtigheid en omgevingstemperatuur te meten. In onderstaande tabel hebben we hun belangrijkste verschillen aangegeven.

 
DHT11
DHT22
Vochtbepaling in het bereik
20-80%
0-100%
Meetnauwkeurigheid
5%
2-5%
Temperatuur bepaling
0 ° C tot + 50 ° C
-40 ° C tot + 125 ° C
Meetnauwkeurigheid
2,5%
plus of min 0,5 graden Celsius
Polling frequentie
1 keer per seconde
1 keer in 2 seconden
Verbindingsdiagram voor vochtigheidssensor naar Arduino

Het verbindingsdiagram is vrij eenvoudig:

  • 1 conclusie - voeding;

  • 2 conclusie - gegevens;

  • 3 conclusie - niet gebruikt;

  • 4 conclusie - de algemene draad.

Als u een sensor in de vorm van een module heeft, heeft deze drie uitgangen, maar u hebt geen weerstand nodig - deze is al aan het bord gesoldeerd.

Verbindingsdiagram van de vochtigheidssensor in de vorm van een module naar Arduino

Voor werk hebben we de bibliotheek dht.h nodig, deze zit niet in de standaardset, dus deze moet worden gedownload en geïnstalleerd in de map libraries in de map met de arduino IDE. Het ondersteunt alle sensoren in deze familie:

  • DHT 11;

  • DHT 21 (AM2301);

  • DHT 22 (AM2302, AM2321).

Voorbeeld bibliotheekgebruik:

Voorbeeld van bibliotheekgebruik

conclusie

Tegenwoordig is het creëren van je eigen station voor het meten van temperatuur en luchtvochtigheid heel eenvoudig dankzij het Arduino-platform. De kosten van dergelijke projecten zijn 3-4 honderd roebel. Voor de levensduur van de batterij, en niet uitvoer naar een computer, kan worden gebruikt tekenweergave (we hebben ze in een recent artikel beschreven), dan kun je een draagbaar apparaat bouwen voor zowel thuis als in de auto. Schrijf in de reacties wat je nog meer wilt weten over eenvoudige zelfgemaakte ambachten op Arduino!

Zie ook over dit onderwerp:Populaire sensoren voor Arduino - verbinding, diagrammen, schetsen

Zie ook op bgv.electricianexp.com:

  • Meest populaire sensoren voor Arduino
  • Analoge sensoren verbinden met Arduino, sensoren lezen
  • Het gebruik van de Wheatstone-brug voor het meten van niet-elektrische grootheden
  • Temperatuur sensoren. Deel twee thermistors
  • Vochtigheidssensoren - hoe ze zijn gerangschikt en werken

  •