Wetterstation DIY: Temperatur und Druck mit PIC16 messen

Eine Wetterstation DIY: Temperatur und Druck mit PIC16 messen ist ein ideales Embedded-Projekt, weil es gleich mehrere Grundlagen sauber verbindet: Sensorik (Temperatur- und Luftdrucksensor), digitale Kommunikation (I²C oder SPI), präzise Messwertaufbereitung (Filter, Mittelwert, Kalibrierung) und eine robuste Firmwarestruktur, die auch im Dauerbetrieb stabil läuft. Mit einem PIC16 können Sie eine erstaunlich professionelle Messstation aufbauen – vorausgesetzt, Sie planen die Bausteine richtig: Spannungsversorgung, saubere Masseführung, Entkopplung, Sensorplatzierung und eine durchdachte Abtastrate sind bei Wetterdaten wichtiger als „möglichst viele Messungen pro Sekunde“. Gerade Luftdruckmessungen reagieren empfindlich auf Rauschen, Temperaturdrift und Gehäuseeffekte. Gleichzeitig ist das Projekt sehr skalierbar: Sie können mit einem einfachen Display beginnen, später Daten per UART/USB an den PC senden oder die Messwerte per Funk (z. B. LoRa/433 MHz/WLAN über externes Modul) weitergeben. Dieser Artikel führt Sie praxisnah durch die Umsetzung: Welche Sensoren sich für Temperatur und Luftdruck bewährt haben, wie Sie einen PIC16 passend auswählen, wie I²C/SPI sauber verdrahtet wird und wie Sie aus Rohdaten stabile, vergleichbare Wetterwerte erzeugen.

Projektziel und Anforderungen: Was soll die Wetterstation leisten?

Bevor Sie Sensoren kaufen, definieren Sie die Zielwerte. Eine klare Spezifikation verhindert späteres Umbauen, wenn z. B. ein Sensor doch nicht im gewünschten Temperaturbereich arbeitet oder ein Display zu wenig Zeichen bietet.

  • Messgrößen: Temperatur (°C) und Luftdruck (hPa), optional Höhe (m) als abgeleiteter Wert
  • Messintervall: z. B. alle 1–10 Sekunden (Anzeige), Mittelwerte pro Minute (Logging)
  • Ausgabe: LCD (16×2/20×4) oder OLED; alternativ UART-Textausgabe
  • Stromversorgung: USB/5 V oder Batterie (dann Low-Power-Strategie beachten)
  • Robustheit: stabile Messwerte trotz Störungen, Neustartfestigkeit, optional Watchdog

Geeignete Sensoren für Temperatur und Luftdruck

Für eine DIY-Wetterstation ist die Wahl des Sensors entscheidend. Sie benötigen nicht zwingend „den teuersten“ Sensor, sondern einen, der stabile Daten liefert, gut dokumentiert ist und mit PIC16-typischen Spannungen und Interfaces kompatibel bleibt.

Luftdrucksensoren: BMP280/BME280, BMP388 & Co.

Sehr verbreitet sind digitale Barometer aus der Bosch-Familie. BMP280 misst Druck (und Temperatur intern zur Kompensation), BME280 misst zusätzlich Feuchte. Für reine Temperatur + Druck reicht ein BMP-Sensor; wenn Sie später erweitern möchten, ist ein BME280 attraktiv. Als Einstieg helfen die Herstellerdokumente und Übersichten:

Wichtig: Diese Sensoren liefern Rohdaten, die mit Kalibrierparametern (im Sensor gespeichert) kompensiert werden müssen. Die Berechnung ist gut dokumentiert, erfordert aber saubere Implementierung (Integerarithmetik oder Float, je nach PIC-Setup).

Temperatursensoren: digital oder analog?

Für Temperatur gibt es zwei sinnvolle Wege:

  • Digital: DS18B20 (1-Wire) oder I²C/SPI-Sensoren; sehr robust, aber ggf. Protokollaufwand
  • Analog: NTC oder LM35-ähnliche Sensoren am ADC; günstig, aber Kalibrierung/Filter nötig

Wenn Sie ohnehin einen Barometersensor wie BMP280 nutzen, erhalten Sie bereits eine Temperaturmessung (zur Kompensation). Für „Außentemperatur“ ist jedoch die Sensorposition entscheidend: Ein Sensor im Gehäuse neben dem Regler misst oft eher Elektroniktemperatur als Lufttemperatur. Für eigene Außentemperaturmessung sind externe Sensoren oder eine getrennte Messkammer sinnvoll.

PIC16 auswählen: Welche Features werden benötigt?

Für Temperatur- und Druckmessung ist ein PIC16 mit folgenden Eigenschaften empfehlenswert:

  • I²C (MSSP): wenn Sie BMP/BME-Sensoren nutzen (typisch I²C oder SPI)
  • Genug Flash/RAM: für Sensorbibliothek, Filter, Anzeige, ggf. Logging
  • Timer/Interrupts: für stabile Messintervalle und eventuelle Schlafzyklen
  • UART (optional): für Debug und Datenstream an PC/Logger

Als Entwicklungsumgebung sind MPLAB X IDE und der MPLAB XC Compiler (XC8) der typische Standard.

Schaltungsaufbau: Versorgung, Pegel und Bus-Stabilität

Viele Sensor-Boards laufen mit 3,3 V. Ein PIC16-Projekt läuft oft mit 5 V. Beides zusammen ist möglich, erfordert aber Aufmerksamkeit bei Pegeln, Pull-ups und Stromversorgung.

3,3 V vs. 5 V: Pegelkompatibilität prüfen

Wenn Sie einen 3,3-V-Sensor per I²C betreiben, sollten die I²C-Pull-ups in der Regel auf 3,3 V liegen, damit der Sensor keine 5-V-Pegel sieht. Der PIC muss 3,3 V als High erkennen (meist problemlos, aber Datenblatt prüfen). Alternativ verwenden Sie einen Pegelwandler für I²C.

Entkopplung und sauberes Layout

  • 100 nF am PIC: direkt an VDD/VSS, so nah wie möglich
  • 100 nF am Sensor: direkt am Sensor-Board/IC
  • Bulk-Kondensator: 4,7–47 µF in der Nähe des Reglers
  • Kurze I²C-Leitungen: besonders bei Breadboards können lange Drähte Störungen verursachen

I²C-Pull-ups richtig dimensionieren

I²C benötigt Pull-up-Widerstände an SDA und SCL. Viele Breakout-Boards haben Pull-ups bereits an Bord. Zu starke Pull-ups (zu kleiner Widerstand) erhöhen den Strom, zu schwache Pull-ups (zu großer Widerstand) machen Flanken langsam. Für kurze Leitungen sind typische Werte im Bereich 2,2–10 kΩ üblich; die richtige Wahl hängt von Buskapazität und Geschwindigkeit ab. Als Einstieg in I²C-Grundlagen eignet sich die NXP-Spezifikation (I²C-Bus-Grundlagen): NXP UM10204: I²C-bus specification and user manual (PDF).

Messstrategie: Abtastrate, Mittelwerte und Plausibilitätschecks

Wetterdaten sind träge. Das heißt: Häufiges Messen bringt nicht automatisch bessere Ergebnisse, sondern eher mehr Rauschen und mehr Aufwand in der Filterung. Eine sinnvolle Strategie ist:

  • Schnelles internes Sampling: z. B. 1–5 Messungen pro Sekunde
  • Anzeige-Update: z. B. alle 1–2 Sekunden mit geglätteten Werten
  • Logging/Trend: Mittelwerte pro Minute oder 5 Minuten (für Drucktendenz besonders nützlich)

Zusätzlich sollten Sie Plausibilitätschecks einbauen: Wenn ein Sensorwert plötzlich „springt“ (z. B. I²C-Glitch), verwerfen Sie den Messpunkt oder markieren ihn als ungültig, statt ihn direkt anzuzeigen.

Druck in hPa und Höhe aus Druck: Umrechnung mit MathML

Viele Sensoren liefern Druck in Pascal (Pa). In Wetteranwendungen ist Hektopascal (hPa) üblich. Die Umrechnung ist einfach:

phPa = pPa 100

Optional können Sie aus dem Luftdruck eine grobe Höhe ableiten. Eine verbreitete Näherung aus der barometrischen Höhenformel (Standardatmosphäre) lautet:

h 44330 × ( 1 p p0 0.1903 )

Dabei ist p der gemessene Druck und p0 der Referenzdruck auf Meereshöhe. Wichtig: Für echte Wettervergleiche interessiert oft eher der auf Meereshöhe reduzierte Druck („QNH“) als die Höhe. Für eine DIY-Station reicht meist: Druck in hPa anzeigen und zusätzlich eine Trendanzeige (steigend/fallend) aus dem Mittelwertverlauf.

Firmwareaufbau: Stabil, modular und gut debugbar

Eine Wetterstation läuft idealerweise wochenlang ohne Neustart. Die Firmware sollte deshalb robust strukturiert sein. Bewährt hat sich eine modulare Aufteilung:

  • i2c.c: Bus-Grundfunktionen (Start/Stop/Read/Write), Timeout-Handling
  • sensor_pressure.c: Sensorinitialisierung, Rohdaten lesen, Kompensation
  • filter.c: gleitender Mittelwert/IIR, Ausreißerbehandlung
  • ui_display.c: LCD/OLED-Ausgabe, Formatierung
  • app.c: Hauptlogik, Zustände, Zeitplanung

Gerade I²C sollte mit Timeouts implementiert werden. Wenn der Bus hängt (z. B. SDA dauerhaft Low), darf das System nicht „für immer“ blockieren. Ein typischer Ansatz ist: nach einem Timeout Bus neu initialisieren, Sensor resetten oder in einen Fehlerzustand gehen, der weiterhin einen Neustart ermöglicht (Watchdog).

Timing ohne Chaos: Timer-getriebene Aufgaben

Setzen Sie einen Timer (z. B. alle 10 ms) und zählen Sie in Software hoch: 100 Ticks = 1 Sekunde. Dadurch entstehen stabile Mess- und Anzeigeintervalle, ohne dass Sie im Code mit langen Delays arbeiten müssen. Lange Delays sind eine häufige Ursache dafür, dass I²C, UART oder Display „zufällig“ instabil wirken.

Messwertfilter: Ruhige Anzeige ohne träge Wetterstation

Sensoren liefern reale Daten plus Rauschen. Für eine Wetterstation ist eine ruhige Anzeige wünschenswert, aber Sie wollen Trends (z. B. Druckabfall vor Regen) nicht „wegfiltern“. Zwei einfache Methoden sind praxistauglich:

  • Gleitender Mittelwert: über N Messungen, z. B. N=8 oder 16
  • IIR-Filter (exponentiell): schneller, speichersparend, gut für PIC16

Ein einfacher IIR-Ansatz lässt sich als „neuer Wert = alter Wert + Anteil der Abweichung“ beschreiben. Konzeptionell:

yn = yn-1 + α × (xnyn-1)

Mit α zwischen 0 und 1. Kleine Werte glätten stark, große reagieren schneller. In Integerarithmetik können Sie α als Bruch (z. B. 1/8) implementieren, was auf PIC16 sehr effizient ist.

Kalibrierung und Vergleichbarkeit: Warum „Druck“ nicht gleich „Druck“ ist

Viele Nutzer wundern sich, dass ihre Wetterstation andere Werte zeigt als die lokale Wetter-App. Das liegt häufig daran, dass Wetterdienste den Luftdruck auf Meereshöhe reduzieren (QNH), während der Sensor den Stationsdruck misst. Außerdem beeinflussen Sensorposition und Gehäuse die Temperaturmessung. Für eine gute DIY-Station sind folgende Maßnahmen sinnvoll:

  • Temperatursensor thermisch entkoppeln: weg von Spannungsregler, MCU und Displaybeleuchtung
  • Drucksensor vor Zugluft schützen: aber nicht „luftdicht“ einbauen; Druck muss sich ausgleichen können
  • Offset-Korrektur: einfacher Kalibrier-Offset im EEPROM, um Anzeige an Referenz anzunähern
  • Trend statt Absolutwert: Drucktrend (steigend/fallend) ist oft aussagekräftiger als 0,3 hPa Unterschied

Wenn Sie QNH berechnen möchten, benötigen Sie Höhe und Temperaturannahmen; für viele DIY-Anwendungen reicht eine manuelle Kalibrierung des Druck-Offsets auf eine lokale Referenz (z. B. nahegelegene Wetterstation) – mit dem Hinweis, dass die Referenz bereits reduziert sein kann.

Anzeige und Bedienung: LCD, OLED oder UART-Ausgabe

Die Ausgabe bestimmt den Projektcharakter. Für Einsteiger ist ein klassisches 16×2-LCD robust und günstig. Mit 20×4 gewinnen Sie Lesbarkeit (z. B. separate Zeilen für Temperatur, Druck, Trend, Min/Max).

  • 16×2 LCD: minimalistisch, schnell implementiert
  • 20×4 LCD: komfortabler, mehr Platz für Trend/Min/Max
  • OLED: elegante Darstellung, aber mehr Bibliotheksaufwand
  • UART: ideal zum Debuggen und für PC-Logging (CSV-Ausgabe)

Wenn Sie ein HD44780-kompatibles LCD einsetzen, ist eine gute Übersicht zum Controller hilfreich: HD44780 LCD Controller (Befehlssatz/Grundlagen).

Low-Power-Option: Wetterstation mit Batterie betreiben

Ein PIC16 kann sehr stromsparend laufen, wenn Sie Messintervalle sinnvoll wählen und den Controller zwischen Messungen schlafen lassen. Für eine batteriebetriebene Wetterstation gilt:

  • Messung bündeln: Sensor aufwecken, messen, speichern/anzeigen, wieder schlafen
  • Peripherie abschalten: Display-Hintergrundbeleuchtung nur bei Bedarf
  • I²C-Sensoren: prüfen, ob sie Standby-Modi unterstützen
  • Watchdog nutzen: als Sicherheitsnetz gegen Hänger

Bei typischen Indoor-Wetterstationen ist USB/5 V jedoch oft einfacher und stabiler. Low-Power ist besonders dann interessant, wenn Sie Außensensoren oder autarke Messpunkte planen.

Typische Fehlerbilder und schnelle Diagnose

  • Unplausible Sprünge im Druck: I²C-Fehler, schlechte Entkopplung, Ausreißer nicht gefiltert
  • Temperatur zu hoch: Sensor zu nah an Regler/MCU, Gehäuse ohne Luftaustausch
  • Anzeige flackert oder hängt: Delays im Hauptloop, fehlende Timeouts, zu häufige Display-Updates
  • I²C hängt (SDA/SCL Low): Bus-Reset fehlt, Pull-ups falsch, Leitung zu lang
  • Werte stimmen nicht mit Referenz überein: QNH vs. Stationsdruck, Offset fehlt, Sensor nicht korrekt kompensiert

Erweiterungen: Aus der Messstation wird ein echtes Wetterprojekt

Wenn Temperatur und Druck stabil laufen, sind Erweiterungen naheliegend. Sie erhöhen den Nutzwert und bringen zusätzliche Embedded-Themen ins Projekt:

  • Luftfeuchte (BME280): Taupunktberechnung, Komfortindikator
  • Drucktrendgraph: Verlauf über 3/6/12 Stunden als Mini-Plot auf OLED
  • Min/Max-Speicher: Tageswerte im EEPROM oder RAM mit Reset um Mitternacht
  • SD-Karten-Logging: CSV-Dateien für langfristige Auswertung
  • Funkmodul: Daten an einen zentralen Empfänger senden

Outbound-Links für Sensoren, Bus-Spezifikation und Toolchain

IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung

PCB Design • Arduino • Embedded Systems • Firmware

Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.

Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.

Leistungsumfang:

  • IoT-PCB-Design & Schaltplanerstellung

  • Leiterplattenlayout (mehrlagig, produktionstauglich)

  • Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)

  • Firmware-Entwicklung für Embedded Systems

  • Sensor- & Aktor-Integration

  • Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART

  • Optimierung für Leistung, Stabilität & Energieeffizienz

Lieferumfang:

  • Schaltpläne & PCB-Layouts

  • Gerber- & Produktionsdaten

  • Quellcode & Firmware

  • Dokumentation & Support zur Integration

Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert

CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

 

Related Articles