Hoe ontwikkelt de temperatuur zich gedurende de dag? Om deze gegevens betrouwbaar te registreren, is een zelfgebouwde datalogger op basis van een microcontroller een goede keuze. In dit project wordt een DS18B20-sensor gebruikt om de temperatuur te meten. De geregistreerde waarden worden met regelmatige tussenpozen in CSV-formaat (Comma Separated Values) op een SD-kaart opgeslagen en kunnen vervolgens worden geëvalueerd.
Hardware
Om de gegevens eenvoudig op te slaan en vervolgens naar de computer over te brengen, is een SD-kaart ideaal. Deze kan worden aangestuurd via de SPI-interface.
Met de volgende hardware is de implementatie, door het gebruik van een shield, heel eenvoudig:
Sensor (bijv. DS18B20)
weerstand 4,7 kΩ (Assortiment weerstanden)
In het voorbeeld gebruiken we de DS18B20-sensor. Deze wordt aangestuurd en uitgelezen via de OneWire-interface. U kunt echter ook andere willekeurige sensoren gebruiken.
Soldeer de sensor als volgt op het shield:

Afbeelding 1: Sensor op het datalogger-shield
Software
Sensor
Om met de sensor te communiceren zijn de volgende externe bibliotheken nodig:
OneWire van Paul Stoffregen
DallasTemperature door jmchippa
Deze kunnen via de opgegeven links van GitHub als .zip worden gedownload en in de Arduino IDE worden toegevoegd onder
Sketch > include Library > Add .zip Library …
.
Als alternatief kunt u de bibliotheek ook installeren via het geïntegreerde bibliotheekbeheer.
Om de sensor en de bovenste opbouw te testen, laadt u het volgende programma op de microcontroller:
| #include |
Uitleg:
Aan het begin van het programma worden de objecten van de bibliotheekklassen aangemaakt. Het oneWire-object regelt de communicatie via de interface. Het sensor-object verzendt de exacte commando's van de sensor via deze interface, die met een pointer wordt doorgegeven.
U kunt het programma hier downloaden.
RTC
Op het shield bevindt zich een Real Time Clock-module(RTC). Deze kan via de I2C-interface worden ingesteld en uitgelezen. Als de tijd eenmaal is geconfigureerd, wordt deze continu bijgewerkt door de kleine batterij, zelfs zonder stroomvoorziening van de microcontroller.
Om met de RTC-module te communiceren, is de volgende externe bibliotheek nodig:
RTClib van Adafruit
Deze kunt u via de opgegeven links van GitHub als .zip downloaden en in de Arduino IDE onder
Sketch > include Library > Add .zip Library …
.
Als alternatief kunt u de bibliotheek ook installeren via het geïntegreerde bibliotheekbeheer.
Het volgende programma kan worden gebruikt om de tijd in te stellen en de functie te testen:
| #include "Wire.h" |
Uitleg:
Na het gebruikelijke integreren van het bibliotheekbestand en het aanmaken van het object, volgt in setup() het starten van de communicatie met de RTC-module en vervolgens optioneel het instellen van de huidige tijd.
Om deze tijd in te stellen, verwijdert u de opmerking en past u de tijd aan. Zorg ervoor dat deze regel daarna weer wordt becommentarieerd, anders wordt de tijd bij elke opstart overschreven.
In loop() worden de tijd en de datum via de seriële interface weergegeven.
U kunt de code hier downloaden.
Werking van de datalogger

Afbeelding 2: Stroomdiagram van het dataloggerprogramma
Dataloggercode
Laad ten slotte het volledige programma naar de microcontroller:
| #include |
Uitleg:
In vergelijking met de twee vorige programma's is alleen de uitvoer naar de SD-kaart toegevoegd. De functie createNewLogFile() maakt daarbij een nieuw bestand aan waarvan de naam automatisch doorlopend wordt genummerd.
Gegevensanalyse
Nadat u een reeks metingen met succes hebt geregistreerd met de datalogger, moeten de waarden nu grafisch worden weergegeven in een spreadsheetprogramma.
In deze tutorial wordt LibreOffice Calc gebruikt, omdat dit programma open source is en gratis beschikbaar is voor alle besturingssystemen. Alle andere programma's zijn echter vergelijkbaar wat betreft de werking en bediening.
1. Kopieer het .txt-bestand dat door de datalogger is gegenereerd van de SD-kaart naar de harde schijf van uw computer. Klik vervolgens met de rechtermuisknop op het bestand en selecteer "hernoemen". Wijzig hier de bestandsextensie van .txt in .csv.
2. Open het csv-bestand met het spreadsheetprogramma. Er wordt een dialoogvenster geopend waarin u de scheidingstekens kunt selecteren. Selecteer hier "komma" en bevestig de import, na controle van het voorbeeld onderaan, met OK.

Afbeelding 3: Importvenster
3. Aangezien de microcontroller de sensorwaarden met een punt als decimaalteken uitvoert, maar het programma een komma verwacht, moet u dit nu vervangen.
Open hiervoor met de toetsencombinatie Ctrl+Alt+F het Zoeken en vervangen . Hier kunt u alle punten vervangen door komma's.
4. Selecteer nu de kolom met de milliseconden en de sensorwaarden door de Ctrl-toets ingedrukt te houden en op de kolomnaam te klikken, en selecteer onder Invoegen, Diagram…
5. In dit venster kunt u nu het diagramtype selecteren. Voor een sensorwaardeverloop wordt hier de XY (spreidingsdiagram) aanbevolen.

Afbeelding 4: Diagramvenster
Hier kunt u nog het weergavetype en het lijntype instellen.

Afbeelding 5: Definitief diagram met meetwaarden
Conclusie
De datalogger kan nog worden uitgebreid met een knop en een LED om statusweergaven en eenvoudige besturingsfuncties zoals starten en stoppen mogelijk te maken.
Toepassingsmogelijkheden zijn er vooral in milieumetingen, bij het bewaken van het binnenklimaat of in soortgelijke scenario's waarin sensorwaarden moeten worden geregistreerd.
Met de getoonde stappen hebt u kennisgemaakt met een voordelige en flexibele basis waarop u eenvoudig uw eigen projecten kunt bouwen.
Veel plezier met het namaken :)






