Sinds 1974
Vereniging voor Weerkunde en Klimatologie

De laatste weerflitsen

  • 06:36
    Sluis
    7,3°C
    (4/8) Half bewolkt
    Windrichting: W
    Windkracht: 5 = Vrij krachtige wind
  • 21:57
    Eesveen
    9,6°C
    (8/8) Geheel bewolkt




Advertenties
Bakker & Co Het magazine voor weerliefhebbers Weerhuisje

Bouw zelf een weerstation – Temperatuur meten (2)

Het is de bedoeling dat we in dit verhaal de thermistor op de LaunchPad gaan aansluiten, de software maken voor het verwerken van de meetgegevens en het weergeven van de temperatuur op het scherm van de PC.

Plaatje 6: Realtime grafiek van de temperatuur

Aansluiten
Om de thermistor te kunnen aansluiten zullen we gebruik moeten maken van een breadboard of de sensor op een printje moeten solderen. Een breadboard is voor het experimenteren makkelijk maar er kleven ook wat nadelen aan. Bij een breadboard is het risico dat de aansluitingen niet altijd even stabiel zijn. Voor al bij wat oudere breadboard’s kan de ruimte van de insteekgaatjes wel eens wat ruim worden, waardoor een wat instabiel contact kan ontstaan. Maar als je daar rekening mee houd is het voor deze schakeling goed te doen.
Eerst maar eens naar het aansluitschema kijken (plaatje 1).
De thermistor heeft een spanning nodig om te kunnen werken, aangeduid als Vcc. Hiervoor kun je de VCC en GND aansluiting gebruiken rechtsonder op het bordje (plaatje 2).
Voor de 10KΩ weerstand adviseer ik een 1% type. Zelf heb ik uit een twintigtal de beste, die zo dicht mogelijk bij de 10KΩ kwam, uitgezocht.
Het knooppunt van de thermistor en de weerstand gaat naar pin P1.0, dat is een ingang die een analoog signaal naar digitaal kan converteren. We noemen dat een Analoog naar Digitaal Converter (ADC). Deze ADC vertaalt het voltage op de ingang naar nullen en enen waar de computer mee kan werken.
De ADC op deze LaunchPad is een 10 bits type. Naar mensentaal omgezet betekent dit, dat de ADC voltages kan omzetten tot getallen met een maximum van 1023. 0 Volt is dan 0 en het maximum toegestane voltage is dan het getal 1023. In ons geval is het maximum toegestane voltage gelijk aan de voedingspanning van de LaunchPad. Theoretisch is de voedingsspanning 3.3 Volt. Maar als je zelf gaat meten op de Vcc en GND pennen zul je zien dat de voedingsspanning, bij voeding via de USB ingang, meestal in de buurt komt van 3,53 Volt. Dit voltage wordt bepaald door de spanningsregelaar op het bordje. Dat is dan ook de spanning voor de interne referentiespanning, waarmee dingen worden berekend. Het is dus belangrijk om die voedingsspanning te weten.
Als je de thermistor en weerstand op een bordje soldeert kan het geheel er ongeveer uitzien als plaatje 3.
Ik heb op het bordje een LED met voorschakelweerstand toegevoegd om op afstand te kunnen zien of er ook werkelijk spanning op het bordje staat.
Aan het einde van het bordje zitten headers met een 90 graden hoek, maar je kunt natuurlijk ook ‘gewone’ rechte headers gebruiken. De kabeltjes zijn standaard female-female Dupont kabeltjes. Dit soort kabeltjes wordt in de elektronica veel gebruikt voor het experimenteren.

Software
Om de software te kunnen gebruiken moet Energia op de computer geïnstalleerd zijn. Inmiddels is versie 17 uitgekomen, maar als je een eerdere versie hebt kan dat best. Zelf heb ik naast de nieuwste versie ook altijd een oudere versie op de computer staan. De nieuwste versies hebben soms nog wel eens onverwachte bugs. Terwijl de laatste ‘build’ van een oudere versie meestal behoorlijk stabiel is.
Ik ga hier niet de hele ‘listing’ van de broncode afdrukken. De broncode is de downloaden (sponzen voor onze Belgische vrienden) van mijn website. Misschien is het handig om de code bij het verder lezen ook op het scherm te hebben.

Het eerste blok met code, tussen /* en */ is geen programmacode maar commentaar. Ofwel aantekeningen.
Andere aantekeningen zul je aantreffen na // tekens. Ik heb mijn best gedaan om zoveel mogelijk code van commentaar te voorzien, zodat het hopelijk duidelijk is wat de code doet.

Het tweede blok met #define’s zet een aantal vaste waarden neer.
Het derde blok is de setup() functie. Deze functie is, net als de loop() functie, verplichte kost in het Energia C++ dialect. Er hoeft in principe niets in de functies te staan, maar ze moeten er wel zijn. Zie ze maar als vervangers van de verplichte main() functie in standaard C, dat is wat ze eigenlijk ook zijn.
In de setup() functie wordt met Serial.begin (9600); de seriële communicatie geopend met een snelheid van 9600 baud per seconde. Meer dan genoeg voor ons doel. Bovendien kan de LaunchPad, in deze uitvoering, niet sneller.
Met pinMode(ThermistorPIN, INPUT); wordt aangegeven op welke pin de thermistor is aangesloten.
analogReference(DEFAULT); geeft aan dat de referentiespanning waarmee gerekend moet worden de interne referentie moet zijn. In dit geval dus de voedingsspanning.
Alle regels daarna zorgen ervoor dat de niet gebruikte in- en uitgangen aan massa (GND0 komen te liggen, dat is om te voorkomen dat eventuele ruis op die ingangen de meting zouden kunnen beïnvloeden.

In loop() wordt de functie getval() aangeroepen. Alles wat ik loop() staat wordt eindeloos herhaald.
Dus als getval() klaar is keert deze terug naar loop() waarna getval() opnieuw wordt gestart.

In getval() wordt de waarde van pin 1.0 binnengehaald.
Dat doet deze functie niet 1 keer maar in een Do…While loop INTERVAL keren.
In deze code is INTERVAL bepaalt op 1000. ( Zie #define INTERVAL 1000 )
De Do…While loop wordt uitgevoerd zolang het verschil in milliseconden ten opzichte van het starten van de loop kleiner is dan 1001. Dat betekend dat gedurende 1 seconde zoveel mogelijk metingen worden gedaan.
Na het beëindigen van de loop wordt de verkregen waarde gedeeld door het aantal metingen. Zo krijgen we een gemiddelde. Deze techniek wordt ook wel ‘over sampling’  genoemd. Er zijn nog andere manieren. Daar komen we later nog wel op terug. Deze techniek geeft een behoorlijk betrouwbare waarde om mee verder te werken.

Na de Do…While loop berekenen we het voltage, de weerstand van de thermistor en de temperatuur.
In de regel:
Temp = 1 / (0.001129148 + (0.000234125 * lnTemp) + (0.0000000876741 * lnTemp * lnTemp * lnTemp));
wordt de temperatuur berekend volgens de Steinhart–Hart formule.
Deze temperatuur is in graden Kelvin en in de volgende regel wordt de temperatuur omgezet naar graden Celsius.

Het blok daarna, met al die Serial.print commando’s, zorgt ervoor dat alle berekende waarden in de seriëlemonitor worden weergegeven. Als na het compileren en in de processorladen van de code alles goed is gegaan krijgen we in de seriëlemonitor het plaatje 4 te zien.
Deze informatie wordt elke seconde ververst, dit is de meest simpele manier om de informatie weer te geven.

Zo, dat was even doorbijten is de ‘droge stof’ van de techniek.
De weergave kan ook anders. Bijvoorbeeld door gebruik te maken van de programmeertaal Processing, dan kan het er als plaatje 6 uit komen te zien.
Hier de weergave van de thermistors van de LaunchPad en de Arduino bij elkaar, die zijn het behoorlijk met elkaar eens… .

Zelfs realtime grafieken zijn mogelijk:
Om wat te kunnen laten zien op de grafiek (plaatje 6) heb ik deze even ‘geholpen’ door er een gasaansteker bij te houden. Vandaar de doorschieter naar boven .… .
Dit programma zorgt ook voor gegevensopslag op de harde schijf van de PC.
We kunnen zelfs de gegevens uitlezen via een ‘oude’ com-poort van een MS-DOS ( of als je echt gek wil doen met een CP/M ) computer om dan de gegevens verder te verwerken in BASIC. In principe kan het met elke computer met een seriële-ingang.
Dus als je nog een oud beestje op zolder hebt staan wordt het nu tijd om het stof van de monitor af te blazen, de spinnen uit het toetsenbord te verjagen en te kijken of de kinderen geen boterhammen in de floppydrive hebben gestopt. Want nu heeft u de kans om van dat oude ding een ‘up to date’ weerstation te maken.
Hoe dat moet ga ik laten zien in de volgende aflevering, dan hebben we het ook over het kalibreren van de thermistor.

De kopie broncode LaunchPad is te downloaden (SWT bestaat niet meer).
Daar staat ook de broncode Arduino en de speciale aanwijzingen voor de Arduino.
Eventuele informatie die belangrijk is en na het verschijnen van dit artikel komt, staat ook op de website.

Terug naar de Zelfbouwpagina.



SWT Meteorologie
© Copyright / Kopijrechten 2016 Henk Siewert
Alle rechten voorbehouden.
Overname alleen toegestaan na uitdrukkelijk en schriftelijke toestemming van de auteur.




30-12-2015 | Achtergrond_Zelfbouw | 1668
  • 21/12 14:04 Pieter:
    Storing wetterzentrale, Geen lange termijn weerkaarten
  • 19/12 14:41 Pieter:
    vanochtend nig boven de 11 C, Nu gezakt naar 4,7 C en een flinke plas regenwater , nu de sneeuw nog !!
  • 19/12 11:16 Marcel:
    Onder weer een grijze dag 4.2mm in Luyksgestel, Actueel 7.6C
  • 18/12 18:53 Theo:
    Vandaag in Edam maximum temperatuur van 13,0 C
  • 17/12 11:51 John:
    Voor het eerst sinds 8 december is hier in Oss de zon weer even te zien.
  • 15/12 21:53 Ted:
    Na 4 minuten vorst van vrijdag, nu (21.40 uur) 11,0 graden. Vandaag was het de 7e zonloze dag op rij. Het is ideaal binnenzit weer.
  • 15/12 10:02 Johan:
    In Ede 10:00 bewolkt 6,1 graden Celsius dauwpunt 5 graden Celsius, luchtvochtigheid 95%, nbt 5,5g graden Celsius
Bekijk het archief
Zo 22 december 2024
Bezoekers online
Er zijn 2 gasten en 1 lid aanwezig: Theo
Inloggen