Hi,
Voor een aantal meetinstrumentjes heb ik temperatuur sensing nodig.
En ik ben aan het worstelen hoe ik dit zal doen met verschillende sensoren.
Display
Om nu ook een aantal zaken te leren door het veel te doen, heb ik diverse sensoren tegelijk weergegeven op een 20x4 display.
Dat was het eerste probleem, daar beeld uit zien te krijgen, naturulijk weer veel tijd verspilt met halfbakken of geen uitleg,
van mensen die zaken op het internet verspreiden...
Maar ik mag niet klagen, het is gratis *grin*
Dan heb ik het over het configureren van de LCD display drivers, met geeft dan geen of "verkeerde" pinnummers op.
Tweede probleem was het aansturen van het display, om aansluitpennen te besparen maak ik gebruik van de handige i2c printjes voor het displays.
Blijkt het driver ICtje er in twee versie te zijn, de Chinesen hebben het er niet over als ze deze verkopen en ze leveren dit rustig door elkaar heen.
Het is iets te moeilijk om er bij te zetten, of het de PCF8574 of de PCF8574A driver IC betreft.
Door deze vele variabelen zoals ook het aantal regels van het display en voor somminge functies moeten zowel de LCD.h als de LiquidCrystal_I2C.h library geladen worden,
gaat het heel veel tijd kosten voor je ook maar iets op het display hebt.
Boeie, ik heb nu deze ervaring en gaat op het mentale lijstje als het dissplay niet wil werken.
Variabelen.
Gebruik je zoals ik nu vier verschillende temp sensoren, dan krijg je als je code van het Internet ript dat er meerdere keren de zelfde variabele wordt gebruikt.
Daar heb ik gelukking direct op gelet en dit is eigenlijk geen groot probeel geweest, meer mijn typefouten bij het aanpassen van de namen.
Dan het Library worstelen.
Dit trad het meest op bij de DS3231 klok IC en de TSIC 506F temp sensor.
Wat betreft het klok IC DS3231, daar zijn vrij veel librarys voor en niet allemaal is het makkelijk de temperatuur er uit te krijgen.
Met de DS3231RTC.h die ik nu gebruik gaat dit goed, deze library is ook goed bruikbaar voor zijn nieuwe zusje de DS3232, deze heeft geen xtal maar een resonator in de chip.
Mijn metingen geven een iets kleinere jitter aan en het lijkt er op dat hij over het temperatuur bereik hier in het LAB, ook iets stabieler is.
Er is ook een voordeel bij de DS3232 dat hij bijna iedere seconde een correctie doet voor de temperatuur invloeden waar het IC aan onderhevig is.
Bij de DS3231 is dit corrigeren 1x per 64 seconden.
TMP37
Dit is een analoge sensor met 20mv/C output.
Om nauwkeurig te kunnen meten voor mijn gekozen temperatuur bereik, heb ik de referentie ingang van de Nano op intern gezet.
c code:
analogReference(INTERNAL);
Voor het berekenen van de code heb ik de referentie spanning van mijn Nano gemeten en dit verrekend met de bitwaarde van de 10bit AD van de Nano
c code:
sensorValue = analogRead(0);
volts = sensorValue * 0.001042; // convert AD units to volts
// convert volts to celsius
celsius = (sensorValue * 0.001042) // voltsPerDegree;
Dus de 0.001042 is de referentie spanning van de door mij gebruikte Nano gedeeld door 1024.
Ik heb geen middeling gebruikt, een weerstand en een condensator is voldoende om de ruis te beheersen.
Ik ga die middeling nog wel een keer testen, maar dat is voor later.
Door deze manier van gebruik van de TMP37 sensor met de lage referentie spanning van net meer dan 1V,
Krijg ik een hoge resolutie temperatuur meting, de maximale temperatuur is in deze opset gaat maar tot 53,3C.
Daar ik de sensor opset wil gebruiken voor ovens rond de 42C is dit geen enkel probleem.
Voordeel is vrij nauwkeurig, en met een klein beetje inzet zoals ik hier aangaf een hoge resolutie en als je wil zeer snel.
De LM75
Dit IC is weinig speciaal maar wel makkelijk toe te passen via de i2c bus .
De resolutie is niet hoog met zijn 0,5C en verder ook niet heel nauwkeurig met +-2C.
Voordeel is dus de aansluitbus en de redelijk korte conversie tijd van 0,1Sec en de lage kosten, 10 stuks voor dacht rond de twee euro in China.
DS3231 of DS3232
De temp meting van dit IC is bijzaak, de temperatuur nauwkerigheid is -+3C maar kan handig zijn als het voor handen is en je geen sensor wilt toepassen.
Ik kwam met een aantal printjes meeatal uit binnen +-1,5C
Tsic 506F
De fabrikant moet eens goed de oren worden gewassen, mooie producten, slechte documentatie,
onduidelijke Arduino voorbeelden, type nummer op de datasheet heeft geen enkele binding met IC opdruk, dit is geen plaats probleem, enz.
Deze sensor is van de fabriek beter dan de beste PT100 sensor die je kan kopen binnen 5 tot 45C en typical binnen 0,07C.
Nadeel is de prijs voor dit gegarandeerde IC van 0,1C, bij Farnell is hij ex btw net geen 11 Euro...
De resolutie van de TSIC 506F is 0,03C
Voordeel, zeer nauwkeurig, duur t.o.v de andere sensoren, maar betaalbare 0,1C nauwkeurigheid en redelijk snel.
Dit is een plaatje van mijn Nano die vier sensoren uitleest.
De sensoren zitten niet tegen elkaar geplakt en hangen ook niet in een oliebad,
hierdoor zullen ze altijd een andere waarde aangeven ook al zijn ze perfect gelijk, door ondermeer verschillende plekken van het meten van de temperatuur,
Thermische massa enz.
Vooralsnog heel wat ervaring opgedaan met deze testen en misschien voor andederen wat intressante info.
Gegroet,
Blackdog