Inhoudsopgave:

Kalibratie van DS18B20-sensor met Arduino UNO - Ajarnpa
Kalibratie van DS18B20-sensor met Arduino UNO - Ajarnpa

Video: Kalibratie van DS18B20-sensor met Arduino UNO - Ajarnpa

Video: Kalibratie van DS18B20-sensor met Arduino UNO - Ajarnpa
Video: Stuurautomaat met Arduino nunchuck en testen 2024, Juli-
Anonim
Kalibratie van DS18B20-sensor met Arduino UNO
Kalibratie van DS18B20-sensor met Arduino UNO
Kalibratie van DS18B20-sensor met Arduino UNO
Kalibratie van DS18B20-sensor met Arduino UNO
Kalibratie van DS18B20-sensor met Arduino UNO
Kalibratie van DS18B20-sensor met Arduino UNO

VRIJWARING:

Het apparaat dat u op de foto's ziet, wordt in een ander project gebruikt als thermostaat voor het filmontwikkelingsproces. Dat project vind je hier. Om een sensor, of meer dan één, te kalibreren, heb je precies nodig wat je in dit project vindt, niets meer, en het is ook vrij eenvoudig! Laten we gaan!

Stap 1: Bereid uw apparaat voor

Bereid uw apparaat voor
Bereid uw apparaat voor

Hier is een lijst van wat je nodig hebt:

  1. Arduino UNO (of MEGA)
  2. DS18B20 sensor(en)
  3. 4kOhm - 5kOhm weerstand (ik gebruikte een 5k1Ohm)
  4. LCD-scherm om waarden af te lezen (u kunt ook een laptop gebruiken en ze gewoon op een seriële monitor aflezen)
  5. Een schets die de sensor gebruikt en op de een of andere manier de waarden laat zien

Allereerst moet je je modules en sensor aansluiten op je controller. Ik laat het gecompliceerde deel van het LCD-scherm aan u over om op internet te zoeken, en ik zal u alleen vertellen hoe u de sensor aansluit.

Meestal worden die sensoren geleverd met drie gekleurde draden: zwart, rood, geel. De eerste twee zijn voor energie en de derde is voor de data. Sluit de zwarte aan op GNN, de rode op Vcc (5V) en de gele op een analoge ingang, laten we zeggen A0.

Verbind nu de weerstand tussen de gele en de rode om de verbindingen te voltooien.

Sluit ook het LCD-scherm aan (ik raad een eenvoudig 16x2 LCD-scherm met i2c-verbinding aan om in totaal slechts 4 draden te gebruiken) en u bent klaar met draden en kabels.

Nu de schets die supereenvoudig is:

#include "OneWire.h"

#include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1(ONE_WIRE_BUS_1); DallasTemperatuursensor1(&ourWire1); #include "LiquidCrystal_I2C.h"

LiquidCrystal_I2C lcd (0x27, 16, 2); zweven RawValue = 0;

void setup(){ lcd.init(); lcd.achtergrondverlichting(); sensor1.begin(); sensor1.setResolution (11); } void loop(){ sensor1.requestTemperatures(); float RawValue = sensor1.getTempCByIndex(0); lcd.setCursor(0, 0); lcd.print("Sens. 1 "); lcd.print(RawValue, 1); }

Zoals je ziet gebruiken we de Dallas Temperature bibliotheek en een LCD scherm met i2c aansluiting.

In de setup starten we LCD en sensor en in de lus vragen we eenvoudig de temperatuur op en slaan de waarde op in de variabele RawValue om deze op het LCD-scherm weer te geven.

Als u het eenvoudiger wilt houden, gebruikt u gewoon de seriële monitor met de volgende schets:

#include "Wire.h"#include "OneWire.h" #include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1(ONE_WIRE_BUS_1); DallasTemperatuursensor1(&ourWire1);

zweven RawValue = 0;

ongeldige setup(){

vertraging (1000); Serieel.begin(9600); sensor1.begin(); sensor1.setResolution (11);

}

void loop(){ sensor1.requestTemperatures(); float RawValue = sensor1.getTempCByIndex(0); Serial.print("Sens. 1 "); Serial.println(RawValue, 1); }

Volg me nu in de kern van het project om de sensor te kalibreren.

Stap 2: Tweepuntskalibratie

Tweepuntskalibratie
Tweepuntskalibratie
Tweepuntskalibratie
Tweepuntskalibratie
Tweepuntskalibratie
Tweepuntskalibratie

Eerst iets om te weten

Om een thermosensor te kalibreren, moet je iets meten waarvan je de temperatuur weet. De eenvoudige manier om het thuis te doen, is door kokend water en een bad van smeltend ijs te gebruiken, ook wel een 'triple-point'-bad genoemd. In die gevallen weten we dat water kookt bij 100°C op zeeniveau. Houd er rekening mee dat u voor een nauwkeurige meting uw hoogte moet kennen en daar de juiste kooktemperatuur moet berekenen.

Je kunt het hier checken!

Om eerlijk te zijn moet je de atmosferische druk controleren en niet de hoogte. Maar die manier is nauwkeurig genoeg.

Het tripelpuntbad, of ijsbad, is de temperatuur waarbij water bestaat in de drie toestanden vast, vloeibaar en gas, die temperatuur is 0,01°C. We zullen, om het te vereenvoudigen, 0°C gebruiken.

Als we de waarde kennen die de sensor afleest en de waarde die zou moeten zijn, kunnen we de onbewerkte waarde van de DS18B20 wijzigen in iets dat correcter is.

OPMERKING: u kunt ook meer temperatuur gebruiken om de sensor te kalibreren door hem in een andere substantie te plaatsen waarvan u het kookpunt kent, zoals ether (35°C), pentaan (36, 1°C), aceton (56°C) of Ethanol (78, 37°C), maar die kokende stoffen produceren licht ontvlambare gassen! Dus niet doen!

Kokend water:

Doe wat water in een pan en verwarm het tot het kookt (gasbellen ontwikkelen zich en het water schudt zichzelf). Dompel uw sensor onder waar deze niets anders dan water aanraakt. Wacht een paar minuten en lees het lcd-scherm of de seriële monitor af

De temperatuur moet minstens een minuut hetzelfde blijven. Schrijf die waarde dan op. Dat is jouw: RawHigh-waarde.

Driepuntsbad:

Neem nu een groot glas (je hebt niets groots of een pot nodig) en vul het tot aan de rand met ijsblokjes. Probeer kleine ijsblokjes te gebruiken. Vul nu 80% van het glas met koud water. Vul met ijs als de hendel naar beneden probeert te gaan.

Plaats nu je sensor in het water/ijs ding en wacht anderhalve minuut. Lees de temperatuur af die minimaal 30 seconden hetzelfde moet blijven. Als dat zo is, schrijf het dan op, dat het uw RawLow-waarde is.

Stap 3: Gebruik de waarden die u krijgt op de juiste manier

Dus nu heb je een aantal belangrijke waarden:

  • RauwHoog
  • RawLaag
  • ReferentieHoog
  • ReferentieLaag

De referentiewaarde is duidelijk 99,9°C voor het kokende water (op mijn hoogte van 22m) en 0°C voor het smeltende ijsbad. Bereken nu de bereiken van die waarden:

  • RawRange = RawHigh - RawLow
  • ReferenceRange = ReferenceHigh - ReferenceLow

Nu ben je helemaal klaar om die sensor in elk ander project te gebruiken, zodat je zeker weet dat het je een juiste meting geeft. Hoe? Gebruikmakend van de waarde die je hier in het project hebt gekregen, ga je met die sensor creëren.

In je toekomstige project moet je de waarden gebruiken die je in deze leest en ik raad aan om het met dezelfde namen te doen die ik hier heb gebruikt.

Declareer de variabelen voor de void setup() sectie op de volgende manier:

float RawHigh = 99,6;float RawLow = 0,5;float ReferenceHigh = 99,9;float ReferenceLow = 0;float RawRange = RawHigh - RawLow;float ReferenceRange = ReferenceHigh - ReferenceLow;

Elke keer dat u de sensor gebruikt, kunt u de volgende formule gebruiken om de CorrectedValue te berekenen:

float CorrectedValue = (((RawValue - RawLow) * ReferenceRange) / RawRange) + ReferenceLow;

RawValue is uiteraard het uitlezen van de sensor.

Dat is het!

Nu weet u hoe u uw DS18B20-sensor of een andere sensor die u gaat gebruiken, moet kalibreren! Veel plezier!

Aanbevolen: