Die is idd wel gaaf, ja. Maar bij mij wordt het toch iets "simpeler". vochtigheid van de grond meten, gebaseerd op uitkomst een bepaalde tijd een klep open en de druppelslang gaat aan. Zoiets. Ooit.
Goed, zoals beloofd:
Als je temperatuur gaat meten, zit je altijd met een een of meerdere onnauwkeurigheden, hoe je het ook wendt of keert.
Stel we hangen een analoge sensor (PT100 oid) aan de Arduino, die heeft een bepaalde weerstand bij een bepaalde temperatuur, en we meten met de ADC het daaruit resulterende voltage. Onzekerheden:
- onnauwkeurigheid van de sensor zelf (of samengestelde sensor)
- onnauwkeurigheid van Vcc en/of
- onnauwkeurigheid van (interne) referentievoltage Arduino
- resolutie van de ADC (zie ADC explanation link onder)
Onnauwkeurigheid van de sensor zelf -- Kunnen we weinig aan doen, behalve een kalibratie-tabel maken. Meten op verschillende punten, wat aannames maken en een correctie factor in de berekening opnemen. Kortom, ijken met bekende waarden. Kokend water etc.
Met samengestelde sensor bedoel ik toegevoegde weerstanden/voltage dividers etc. 5% of 1% weerstand afwijking etc.
Onnauwkeurigheid van Vcc -- De arduino neemt bij een AnalogRead standaard Vcc als referentievoltage. Kwaliteit van Vcc hangt af van je voeding. Zeg dat je voeding niet 5,0 maar 5.1 volt is, gaan je metingen al alle kanten op, maar niet de goeie, en als je voeding ergens varieert tussen de 4.8 en 5.1 volt gaat het ook lekker. Een mooie stabiele voeding helpt, maar zelfs met standaard voltage regulators zit je vaak rond de 1-5% afwijking.
Je kan Vcc berekenen aan de hand van de (zie onder) interne referentie, dat helpt al een heel end. Zie link 2 onder (self-calibrating arduino adc). Heb je wel een goeie multimeter nodig. En je moet het per arduino doen.
Onnauwkeurigheid van interne referentievoltage -- De meeste arduino's beschikken over een intern referentievoltege van 2,65 of 1.1 volt. Nominaal. Met een afwijking van 10 procent, volgens het datasheet. (dus 1.0-1.2 v in totaal). Gaat ook lekker dus.
Resolutie van de ADC -- kunnen we ook weinig aan doen, behalve een andere ADC eraan hangen. Voor uitgebreide uitleg zie arduino ADC explanation link onderaan.
So far analoog.
Stel we hangen er een digitale sensor aan, bijv. de (Maxim) Dallas DS18B20. Onzekerheden:
- de sensor.
(en meer niet, het ding levert gewoon "de temperatuur")
De sensor zelf kan je net als de analoge versie kalibreren. Dallas/Maxim heeft hier zelfs een (vrij makkelijke) app note voor geschreven. De grote vraag is: hoe kom je aan de ijkpunten. Kokend water, ijswater of kokende alcohol, verzin het maar. En dan hopen dat je dat goed geregeld hebt.
Datasheet stelt dat de sensor +/- 0.5 C correct is binnen de gestelde randvoorwaarden (temperatuur, voedingsspanning etc), die nauwkeurigheid heb je al. Verder zijn er een aantal zaken binnen de sensor die de nauwkeurigheid beinvloeden (binnen de gestelde normal operating limits).
-
Aantal metingen: blijhkbaar warmt de sensor zichzelf ietsjes op als je constant metingen aan het doen bent. Te voorkomen door niet iedere seconde, maar bijv. iedere 10 seconden een meting te doen (meting verbruikt stroom, stroom wordt omgezet in warmte, sensor warmt op. (google ds18b20 self heat)
-
Resolutie van de sensor: hoe hogere resolutie je wil, hoe meer stroom gebruikt wordt. Standaard wordt geloof ik 12 bits resolutie gebruikt, dit kan je terugzetten naar 9 bits desgewenst.
Conclusie -- zoals reeds gezegd, een persoonlijke voorkeur.
Ik ben absoluut geen software liefhebber, maar voornamelijk het gemak en de eenvoud waarmee een vrij nauwkeurige sensor (een halve graad is toch al vrij nauwkeurig) lekker makkelijk aan een arduino geprikt kan worden, en eventueel via software nog een beetje gekieteld kan worden, vind ik(persoonlijk) fijn. Fijner dan hopen dat alle afhankelijkheden van de analoge RTC/weerstand gelezen en omgerekend wordt. Geen geknutsel met stabiele voedingen, 0.1% weerstandjes, externe componenten aan je arduino of whatever.
Nu ben ik er wel eentje van kort-door-de-bocht-snel-klaar, mind you Ik weet niet precies hoe nauwkeurig je de het hele stookproces wilt monitoren. Lijkt me dat een graad of 0.2 al heel aardig is, en dat lijkt me nog wel te bereiken met een eventueel met ijs/kokend water danwel een maat met een geijkte (digitale) thermometer.
arduino ADC explanation:
"self-calibrating" the arduino ADC:
http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/