Indholdsfortegnelse:
- Trin 1: Forbered din enhed
- Trin 2: To -punktskalibrering
- Trin 3: Brug de værdier, du får på den rigtige måde
Video: Kalibrering af DS18B20 -sensor med Arduino UNO: 3 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
ANSVARSFRASKRIVELSE:
Enheden, du ser på billederne, bruges i et andet projekt som en termostat til filmudviklingsproces. Du kan finde det projekt her. For at kalibrere en sensor, eller mere end en, skal du bruge lige det, du finder i dette projekt, ikke mere, og det er også ret grundlæggende! Lad os gå!
Trin 1: Forbered din enhed
Her er en liste over, hvad du har brug for:
- Arduino UNO (eller MEGA)
- DS18B20 sensor (er)
- 4kOhm - 5kOhm modstand (jeg brugte en 5k1Ohm)
- LCD -skærm til aflæsning af værdier (du kan også bruge en bærbar computer og bare læse dem på en seriel skærm)
- En skitse, der bruger sensoren og på en eller anden måde viser værdierne
Først og fremmest skal du forbinde dine moduler og sensor til din controller. Jeg lader den komplicerede del af LCD'et stå til dig for at søge på nettet, og jeg vil bare fortælle dig, hvordan du tilslutter sensoren.
Normalt leveres disse sensorer med tre farvede ledninger: Sort, rød, gul. De to første er til energi, og den tredje er til data. Tilslut den sorte til GNN, den røde til Vcc (5V) og den gule på en analog indgang, lad os sige A0.
Tilslut nu modstanden mellem den gule og den røde for at fuldføre forbindelserne.
Tilslut også LCD'en (jeg foreslår en simpel 16x2 LCD med i2c -forbindelse til kun at bruge 4 ledninger i alt), og du er færdig med ledninger og kabler.
Nu er skitsen, der er super enkel:
#include "OneWire.h"
#inkludere "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1 (ONE_WIRE_BUS_1); DallasTemperatursensor1 (& ourWire1); #include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd (0x27, 16, 2); float RawValue = 0;
ugyldig opsætning () {lcd.init (); lcd.backlight (); sensor1.begynd (); sensor1.setResolution (11); } void loop () {sensor1.requestTemperatures (); float RawValue = sensor1.getTempCByIndex (0); lcd.setCursor (0, 0); lcd.print ("Sens. 1"); lcd.print (RawValue, 1); }
Som du kan se, bruger vi Dallas Temperature -biblioteket og en LCD -skærm med i2c -forbindelse.
I opsætningen undersøger vi LCD og sensor, og i sløjfen anmoder vi ganske enkelt om temperaturen og gemmer værdien inde i variablen RawValue for at vise den på LCD'et.
Hvis du vil holde det mere enkelt, skal du bare bruge den serielle skærm med følgende skitse
#include "Wire.h" #include "OneWire.h" #include "DallasTemperature.h" #define ONE_WIRE_BUS_1 A0 OneWire ourWire1 (ONE_WIRE_BUS_1); DallasTemperatursensor1 (& ourWire1);
float RawValue = 0;
ugyldig opsætning () {
forsinkelse (1000); Serial.begin (9600); sensor1.begynd (); sensor1.setResolution (11);
}
void loop () {sensor1.requestTemperatures (); float RawValue = sensor1.getTempCByIndex (0); Serial.print ("Sens. 1"); Serial.println (RawValue, 1); }
Følg mig nu i kernen af projektet for at kalibrere sensoren.
Trin 2: To -punktskalibrering
Noget at vide først
For at kalibrere en termosensor skal du måle noget, som du kender temperaturen af. Den enkle måde at gøre det hjemme på er ved at bruge kogende vand og et bad med smeltende is, også kaldet et "triple-point" bad. I disse tilfælde ved vi, at vand koger ved 100 ° C på havets overflade. Husk, at for at foretage en præcis måling skal du kende din højde og beregne den korrekte kogetemperatur der.
Du kan tjekke det her!
For at være ærlig bør du kontrollere atmosfæretrykket og ikke højden. Men den måde er præcis nok.
Dobbeltpunktsbadet eller isbadet er den temperatur, ved hvilken der findes vand i de tre tilstande fast, flydende og gas, denne temperatur er 0, 01 ° C. Vi vil bruge, for at forenkle, 0 ° C.
Ved at kende værdien, som sensoren læste, og den værdi, der skulle være, kan vi ændre DS18B20s råværdi til noget mere korrekt.
BEMÆRK: du kan også bruge mere temperatur til at kalibrere sensoren ved blot at sætte den i et andet stof, som du kender kogepunktet som Ether (35 ° C), Pentan (36, 1 ° C), Acetone (56 ° C) eller Ethanol (78, 37 ° C), men de kogende stoffer producerer meget brandfarlige gasser! Så gør det ikke!
Kogende vand:
Kom lidt vand i en gryde og varm det op, indtil det koger (gasbobler udvikler sig, og vandet omrører sig selv). Dæmp din sensor, hvor den ikke rører ved andet end vand. Vent et par minutter, og læs lcd'en eller den serielle skærm
Temperaturen skal forblive den samme i mindst et minut. Hvis ja, skriv værdien ned. Det er din: RawHigh -værdi.
Triple-point bad:
Tag nu et stort glas (du behøver ikke noget stort eller en gryde) og fyld det til grænsen med isterninger. Prøv at bruge små isterninger. Fyld nu 80% af glasset med koldt vand. Påfyld med is, hvis håndtaget forsøger at gå ned.
Sæt nu din sensor inde i vand/is -tingen, og vent et og et halvt minut. Læs temperaturen, der skal forblive den samme i mindst 30 sekunder. Hvis ja, skriv det ned, at det er din RawLow -værdi.
Trin 3: Brug de værdier, du får på den rigtige måde
Så nu har du nogle vigtige værdier:
- Råhøj
- RawLow
- ReferenceHøj
- Reference Lav
Referenceværdien er naturligvis 99,9 ° C for det kogende vand (i min højde på 22 m) og 0 ° C for det smeltende isbad. Beregn nu intervallerne for disse værdier:
- RawRange = RawHigh - RawLow
- ReferenceRange = ReferenceHigh - ReferenceLow
Nu er du klar til at bruge den sensor i ethvert andet projekt, idet du er sikker på, at den vil give dig en korrekt måling. Hvordan? Ved at bruge den værdi, du fik her i projektet, vil du oprette med den sensor.
I dit fremtidige projekt skal du bruge de værdier, du læser i dette, og jeg foreslår at gøre det ved hjælp af de samme navne, som jeg brugte her.
Deklarér variablerne inden sektionen for tomrumsopsætning () ligesom:
float RawHigh = 99,6; float RawLow = 0,5; float ReferenceHigh = 99,9; float ReferenceLow = 0; float RawRange = RawHigh - RawLow; float ReferenceRange = ReferenceHigh - ReferenceLow;
Hver gang du bruger sensoren, kan du bruge følgende formel til at beregne CorrectedValue:
float CorrectedValue = (((RawValue - RawLow) * ReferenceRange) / RawRange) + ReferenceLow;
RawValue er naturligvis sensorens aflæsning.
Det er det!
Nu ved du, hvordan du kalibrerer din DS18B20 -sensor eller enhver anden sensor, du vil bruge! Hav det sjovt!
Anbefalede:
Jordfugtighedssensor kalibrering: 5 trin
Jordfugtighedssensor kalibrering: Der er mange jordfugtighedsmålere på markedet, der hjælper gartneren med at beslutte, hvornår de skal vandes. Desværre er det lige så pålideligt at gribe en håndfuld jord og kontrollere farven og teksturen som mange af disse gadgets! Nogle sonder registrerer endda
Sådan laver du babyvægtmaskine ved hjælp af Arduino Nano, HX-711 Load Cell og OLED 128X64 -- Kalibrering af HX-711: 5 trin
Sådan laver du babyvægtmaskine ved hjælp af Arduino Nano, HX-711 Load Cell og OLED 128X64 || Kalibrering af HX-711: Hej Instructables, For få dage siden blev jeg far til en sød baby?. Da jeg var på hospitalet, fandt jeg ud af, at babyens vægt er så afgørende for at overvåge babyens vækst. Så jeg har en idé? at lave en babyvægtmaskine af mig selv. i denne instruktive jeg
6-akset sensormodul FSP200 Kalibrering og testning: 6 trin
6-akset sensormodul FSP200 Kalibrering og testning: FSP200 er en 6-akset inertial måleenhedsprocessor, der giver kurs- og retningsudgang. Det udfører en fusion af accelerometer og gyrosensorer for stabil og præcis kurs og retning. FSP200 er velegnet til brug i robotpr
Arduino Rain Gauge Kalibrering: 7 trin
Arduino Rain Gauge Kalibrering: Introduktion: I denne Instructable 'konstruerer' vi en regnmåler med Arduino og kalibrerer den til at rapportere daglig nedbør hver dag og time. Regnopsamleren, jeg bruger, er en omformet regnemåler af typen tipskovl. Det kom fra en beskadiget personlig vi
Let hård og blød jernmagnetometer kalibrering: 6 trin (med billeder)
Let hård og blød jernmagnetometer kalibrering: Hvis din hobby er RC, droner, robotik, elektronik, augment reality eller lignende, vil du før eller siden blive mødt med opgaven med magnetometer kalibrering. Ethvert magnetometermodul skal kalibreres, fordi målingen af magnetfeltets emne