Måling af temperaturer i drivhuset med thermistorer

En thermistor er en elektrisk modstand, der ændrer værdi med temperaturen. De er billige, omkring 10 kr stykket, men der er en del arbejde før det fungerer. det kræver også en Arduino eller lignende.

Der findes mange gode måder til at måle temperaturer i drivhus, men vil man styre ud fra resultatet er det nødvendigt at bruge en form for processor.

De mest almindelige thermistorer er af NTC-typen, Negative Temperature Coefficient hvilket vil sige, at den elektriske modstand bliver mindre, når temperaturen stiger. Det er faktisk modsat af det normale, men det lader vi lige ligge….

Thermistorer er ikke lineære, dvs at de reagerer ikke lige kraftigt på forskellige temperaturer. Man må derfor vælge en thermistor, der passer til det temperaturområde, der skal måles i. I områder 0 – 30 grader C har jeg valgt 10K thermistorer (10 kilo ohm) og i området op til 100 grader en 100K.

Hver thermistor sættes i serie med en modstand af samme værdi, og der måles midt mellem de 2 og til analog input på Arduinoen – der er masser af vejledning på nettet.

Der findes flere komplicerede formler til at beregne temperaturen ud fra spændingsfaldet over thermistoren, men mange års erfaringer fra gartnerier har vist, at hver sensor har sine egne karakteristika – de er til gengæld stabile, så hvis man indretter sig efter det får man et godt resultat.

Kalibrering

Jeg brugte en DS18B20 til at måle den nøjagtige temperatur med en opløselighed på 0,06 grader.

IMG_7493

Kredsløbet til 4 Thermistorer blev lavet på en strimmel Veroboard, thermistorerne blev loddet på ca. en meter ledning og den uisolerede del dyppet i 2-komponentlim, så de fik et isolerende lag.

Alle sensorer blev dyppet i en spand vand, der havde stået ude natten over, der blev hældt en sjat varmt vand i spanden efter hver måling og aflæst igen når temperaturen var stabil.

Kode til Arduino

Koden læser værdien af 4 thermistorer over A0 – A3 og skriver resultatet på PC. Jeg venter 50 millisekunder mellem hver læsning, måske er det ikke nødvendigt, men der er jo tid nok.

void setup() {

Serial.begin(9600);
}

void loop() {

int sensorValue0 = analogRead(A0);
delay(50);
int sensorValue1 = analogRead(A1);
delay(50);
int sensorValue2 = analogRead(A2);
delay(50);
int sensorValue3 = analogRead(A3);
delay(50);

Serial.println(sensorValue0);
Serial.println(sensorValue1);
Serial.println(sensorValue2);
Serial.println(sensorValue3);
Serial.println(” “);
delay(2000);
}

Resultater

Thermistorernes værdier ved forskellige temperaturer ses i tabellen. I det undersøgte temperaturinterval er thermistorerne meget tæt på at være lineære, så jeg har lavet en regression for hver enkelt thermistor, den kan så sættes ind i programmet og dermed får man temperaturen. Der findes steder på nettet, hvor man kan lave regressioner.

Man kan ikke lave tabeller direkte på en hjemmeside, de laves i et plugin og sættes ind via et link, så det kan være lidt svært at have kontrol med, hvordan det ser ud.

Temperatur A0 A1 A2 A3
2.56 480 501 513 494
10.13 536 556 569 555
19.12 600 616 626 622
23.19 629 644 656 654
28.25 650 666 677 680
Beregninger

Thermistorernes regressioner viser tydeligt, at man kan ikke bruge en standardformel til beregning af massefabrikerede produkter. Men ved at kalibrere og beregne hver thermistor for sig får man meget nøjagtige målinger.

TempA0 = -68.222 + 0.147x

TempA1 = -74.169 + 0.152x

TempA2 = -76.662 + 0.153x

TempA3 = -64.743 + 0.135x