Bouw zelf een weerstation - Luchtdruk
Moderne techniek biedt heel veel mogelijkheden die de klassieke meettechnieken niet hebben. Dat is, meestal, een groot voordeel. Maar als ik met een BMP180-boardje van ongeveer 1½ bij 2 centimeter in mijn hand sta voor mijn prachtige barograaf is het toch wel even slikken. Een minuscuul stukje elektronica tegenover een prachtig ambachtelijk precisie-meetinstrument. Waar is de romantiek gebleven?
Maar goed, dit verhaal zou je over heel veel dingen kunnen schrijven. Ik kom oorspronkelijk uit het drukkersvak. Ben ooit nog begonnen met losse loden letters op een handdegeltje. Als je dan 1000 druks per uur maakte kreeg je van je leermeester een schouderklopje. Toen ik twintig jaar later docent druktechniek werd stond ik de dag ervoor nog aan een machine die vijftienduizend ( jawel 15000 ) grootformaat vellen in full color uit de machine gooide. Er zat boven de uitlegstapel een stroboscoop. Anders kon je niet eens zien wat er gebeurde. Hoezo romantiek. Zo zal het in de meteorologie ook wel gegaan zijn neem ik aan. Van prachtige instrumenten naar elektronica en computers.
Meten luchtdruk
Maar die elektronica en computers maakt wel veel meer mogelijk. Dus maken we er dankbaar gebruik van. Zo ook bij het meten van luchtdruk.
Voor het meten van luchtdruk maak ik gebruik van een Bosch BMP180 boardje. Er is al weer en nieuwe uitvoering, de BMP280. Maar erg veel extra biedt dat boardje niet echt. Bovendien is het al lastig genoeg om een BMP180 aan de praat te krijgen op een LaunchPad, dat komt onder andere door het protocol waarmee gewerkt moet worden.
Zoals op de foto te zien is heeft het boardje 5 aansluitingen. Vcc is voor een voedingspanning groter dan 3.3 Volt. Voor gebruik met een LaunchPad kunnen we die dus negeren.
GND is voor de - of massa-aansluiting. Dan volgt SCL en daaronder SDA. Dit zijn de aansluitingen voor de gegevensuitwisseling volgens het I2C-protocol. Daaronder zit de 3.3 Volt-aansluiting die wij gebruiken.
Bij het I2C-protocol heeft elk boardje dat aangesloten is een eigen code. Die code zit ingebakken in de chip in dit geval de BMP180-sensor. Dat maakt het mogelijk om een groot aantal boardjes op 2 in- en uitgangen van de MCU aan te sluiten. Het enige dat we moeten doen is met het versturen van de juiste code de juiste sensor activeren, dat gaat met nog al wat binaire codes gepaard.
Om dat makkelijker te maken heb ik een speciale bibliotheek geschreven. Je hoeft dan in je programma alleen maar te zeggen dat je de luchtdruk wilt weten. De bibliotheek neemt dan rest voor zijn rekening.
Die bibliotheek neemt ook de timing van de gegevensuitwisseling voor zijn rekening. Wel zo makkelijk. Die timing is behoorlijk kritisch. Ik zou u dan ook willen adviseren om alleen maar iets te veranderen in de bibliotheek als u echt goed weet wat u aan het doen bent.
Maar schrik niet. Het gebruik is op zich, dankzij de bibliotheek, eigenlijk best simpel.
Aansluiten
De voedingspanning van 3.3 Volt nemen we af van de LaunchPad. De BMP180 gebruikt zo weinig stroom dat we dat makkelijk kunnen doen.
De SDA-aansluiting gaat aan pin 10 ( P2.2 ) van de LaunchPad. De SCL-aansluiting aan pin 9 ( P2.1 ). Deze aansluitingen kunnen niet worden veranderd. Het I2C maakt standaard gebruik van deze twee pinnen, dat is in de compiler van het Energia IDE vastgelegd. Wel even een waarschuwing. Als u gebruik maakt van Energia 16 of eerder dan zit SDA op P1.7 en SCL op P1.6. Maar ik zou u aanraden om te upgraden naar versie 17. Pin 9 en 10 zijn de nieuwe standaard. Alle uitbreidingen die Texas Instruments uitbrengt maken gebruik van 9 en 10, dat maakt de pinnen 14 en 15 vrij voor weer een ander protocol, maar daarover later meer.
Code
De begin-programmacode is eigenlijk vrij standaard voor dit soort situaties.
#include <Wire.h> // I2C bibliotheek
#include <SWTBMP180.h> // BMP180 bibliotheek
SWTBMP180 pressure;
void setup()
{
Serial.begin(9600); // Start seriele communicatie
start();
}
Als eerste wordt in de regel : #include <Wire.h> de I2C bibliotheek aan het programma toegevoegd.
Met : #include <SWTBMP180.h> gebeurd het zelfde met de speciale bibliotheek voor de BMP180. Daarna wordt een nieuw object aangemaakt : SWTBMP180 pressure;
In Setup() wordt de communicatiesnelheid bepaald en het programma opgestart:
void setup()
{
Serial.begin(9600); // Start seriele communicatie
start();
In start() wordt de verbinding met de BMP180 gelegd en gecontroleerd.
In loop() wordt om de tien seconden een nieuwe waarde opgehaald en naar de seriële monitor gestuurd. Deze waarde kunt u naar behoefte aanpassen. Maar neem deze tijd niet kleiner dan 1 seconde ( delay(1000); ), in verband met de timing van de gegevens uitwisseling.
De sensor heeft zelf ook tijd nodig om een meting te doen. Als hij daarmee klaar is stuurt hij het signaal dat we een nieuwe waarde kunnen krijgen. De regel : status = pressure.startTemperature(); maakt daar gebruik van.
Ik heb zoveel mogelijk commentaar opgenomen in het programma om het een en ander duidelijk te maken. Veel van deze commentaartekst is in het Engels. Deze code is namelijk afkomstig uit een programma dat ik heb gemaakt voor een hoogtemeter. Zoals u ongetwijfeld bekend is neemt de luchtdruk af bij een grotere hoogte. Daar kunnen we dus dankbaar gebruik van maken voor het maken van een hoogtemeter. Vliegtuigen, en in mijn geval raketten, maken daar gebruik van. Maar we hebben het hier over een luchtdrukmeter en niet over een hoogtemeter. Mochten er toch mensen zijn die belangstelling hebben in een hoogtemeter, dan moet u mij dat maar even laten weten. Graag een mailtje op vwk@swtcomp.com.
Afronden
Op het moment dat ik dit zit te schrijven, op mijn zolderkamer, geeft de seriële monitor een luchtdruk aan van 1014.6 hPa. Op dit moment geeft De Bilt, hier hemelsbreed een paar kilometer vandaan, een luchtdruk van 1014.2 en Cabauw, een paar kilometer verder weg, de andere kant op, 1014.6. Gezien het verschil in hoogte van de meting, de BMP180 staat hier bij mij op het bureau, lijkt me dat helemaal niet slecht.
Afijn dat was het dan weer voor deze keer. Volgende aflevering zal waarschijnlijk gaan over het meten van luchtvochtigheid.
Terug naar de Zelfbouwpagina.
© Copyright / Kopijrechten 2016 Henk Siewert
Alle rechten voorbehouden.
Overname alleen toegestaan na uitdrukkelijk en schriftelijke toestemming van de auteur.