Datenlogger mit PIC
nur Projekt (keine Software)
zurück zu Projekte , PIC-Prozessoren
, Elektronik , Homepage
Allgemeines
Der 16F876 besitzt einen 8k großen Flash-Programmspeicher auf
den er auch schreibend zugreifen kann. Das ist für ausreichend, um
darin neben einem Programm auch große Datenmengen unterzubringen.
Ein Gerät, das während eines langen Zeitraums Daten misst
oder empfängt und speichert ist ein Datenlogger. Der 16F876 eignet
sich ideal dazu einen solchen Datenlogger mit minimaler Hardware
aufzubauen.
Um die Daten aus dem Datenlogger wieder auszulesen, bietet sich die
RS232-Schnittstelle des 16F876 an.
Nach dem Zuschalten der Betriebsspannung überträgt der PIC
die im Flash abgelegten Daten.(dauert 10 Sekunden) danach beginnt er
mit
einer neuen Aufzeichnung.
Temperatur-Logger
Wie kalt war es letzte Nacht im Garten? Zur Beantwortung dieser Frage
gibt es aufwendige 'Wetterstationen' mit Funktemperatursensoren und
grobauflösenden,
grafischen Displays (Bargraphanzeige). Eine gute Anzeige des
Temperaturverlauf
bieten aber nur Geräte mit PC-Anschluss ab 250 €.
Diese Geräte können in der Regel deutlich mehr als nur eine
Temperaturmessung, wodurch ihr Preis durchaus gerechtfertigt ist. Will
man aber nur die Temperatur aufzeichnen (um z.B. zu prüfen, ob bei
Tiefkühlkost die Kühlkette nicht unterbrochen wird) ist ein
Temperatur-Logger
die bessere Lösung.
Einen kleiner Temperatur-Logger kann man auch direkt zwischen die
Kohlköpfe
im Garten legen, und ihn nach Stunden oder Tagen wieder einsammeln und
am PC auslesen. Wird jede Minute eine Messung durchgeführt, reicht
der Flash-Speicher des 16F876 (je nach gwählter Auflösung)
wenigstens
für 4 Tage, bei Bedarf aber auch eine Woche.
Um den Hardwareaufwand gering zu halten, kann man die von Microchip
in der AN828 vorgeschlagene Temperaturmessung über den WDT
benutzen.
Sie nutzt die Temperaturabhängigkeit der Frequenz des
WDT-RC-Oszillators
zur Temperaturmessung, kommt also ohne jegliche externe Bauelemente
aus.
Microchip erreichte bei einem 16F84A im Temperaturbereich von -40°C
bis +55°C eine Genauigkeit von 1°C. Für den Garten sollte
das reichen, für Tiefkühlkost auch.
Um den Stromhunger des PIC zu minimieren, muss ein kleiner PIC-Takt
oder der Sleep-Modus gewählt werden:
- Ein PIC16LF876-04 verbraucht bei 32 kHz nur noch 20 µA ( am
Tag
also
0,5 mAh). Das wäre wohl die beste Lösung. Eine
3V-Lithium-Knopfzelle
garantiert den Betrieb über Monate.
- Ein PIC16F876-20 benötigt bei 4 MHz pro Tag 50 mAh (LP-Mode
ist für
diesen Typ nicht garantiert). Damit würde der Einsatz von
3V-Lithium-Knopfzellen
unverantwortlich sein, da eine solche Zelle innerhalb eines Tages (oder
weniger Tage) in Sondermüll verwandelt wäre. Eine
4,5V-Flachbatterie
ist eine sperrige, aber bessere Lösung. Man könnte auch 2
Akkus
im AAA-Format einsetzen, allerdings ist deren Kapazität schon bei
Temperaturen um den Gefrierpunkt stark eingeschränkt.
- Man kann den PIC aber auch zwischen den Messungen in den
Schlafmodus versetzen,
und ihn vom WDT oder vom Timer1 (mit asyncronem externen Takt) wieder
aufwecken
lassen. Obwohl der WDT aufgrund seiner Temperaturdrift als Zeitnormal
nicht
in Frage zu kommen scheint, kann er doch als solches benutzt werden.
Man
rechnet das Später am PC wieder heraus, die WDT-Geschwindigkeit
wird
ja über die Temperatur indirekt aufgezeichnet.
Verwendet man den Timer1 als 'Wecker' für den schlafenden PIC,
so kann man den Timer1 mit einem externen Uhrenquarz (32,768 kHz)
takten.
Dadurch hat man gleich ein genaues Zeitnormal. Der Stromverbrauch des
PIC
im Schlafmodus mit laufendem Timer1 beträgt nur ca. 30 µA.
Der hier gezeigte Temperaturlogger ist mit einem Temperatursensorchip
LM75
ausgestattet. Dieser Chip ist über einen I2C-Bus an den 16F876
angeschlossen.
Die Schaltung ist für einen möglichst geringen
Stromverbrauch
optimiert. Zwischen 2 Messungen wird der LM75 abgeschaltet, und der PIC
geht in den Sleep-Modus. Dabei bleibt der Timer1 aktiv, und wird
asynchron
mit dem Takt des Uhrenquarzes an RC0/RC1 getaktet.
Timer1 weckt den PIC regelmäßig aus dem Slepp-Modus auf,
um eine Messung durchzuführen.
Während der Datenerfassung bleibt der RS232-Treiber
abgeschaltet,
um Strom zu sparen.
|
|
Die Stromaufnahme im Sleep-Modus liegt bei 30 µA, während
der
Messung bei ca. 5 mA. Die Speisung erfolgt direkt aus einer Batterie (3
x 1,5V). Auf einen Spannungsregler wird verzichtet, da er mehr
Strom
verbrauchen würde als der Rest der Schaltung.
Tastaturlogger
Das sollte eher eine Warnung als ein Vorschlag sein!
Ein PIC16F876 in einem kurzen Adapterkabel zwischen
PC-Tastatur und
PC. verschwindet unauffällig an der PC-Rückseite. Hier hat
der
PIC keine Stromversorgungsprobleme (+5V liegen im Kabel) und kann in
aller
Ruhe 6000 Tastanschläge aufzeichnen (im Flash-Speicher), in der
heutigen
mausdominierten Windowswelt reicht das über mehrere Tage. Schon
weiß
man, was die eigenen Kinder im Inernet suchen, oder jemand anders
weiß
welches Passwort Sie vorhin eingetippt haben.
Für das Passwort reicht auch ein kleiner 12F629, der
immerhin
128 Tastanschläge in seinem EEPROM speichern kann und dabei
praktisch
ohne externe Bauelemente auskommt
Wie man die Daten einer PS2-Tastatur mit einem PIC einlesen
kann, ist
in der Microchip-Application TB056 beschrieben. Von mir gibt es
dafür
natürlich keine Software.
Überprüfen Sie doch mal gleich das Tastaturkabel
ihres PCs!
|
|
Spannungslogger
Wer langsame Spannungsänderungen aufzeichnen muss (z.B. die
Entladungskurven von Akkus) kann dazu einen Digitaloszi, oder einen PC
mit AD-Wandlerkarte benutzen. In beiden Fällen ist teure Technik
für
lange Zeit blockiert. (Sicherlich könte man auf dem PC parallel
andere
Dinge erledigen, aber bitte nichts kompliziertes. Nach einem Absturz
wären
die Akku-Daten verloren.)
Der PIC16F876 hat 5 Analogeingänge, mit denen er sich zum
Spannungslogger
eignet. Die 10-Bit ADC-Werte des PIC passen sogar komplett in
jeweils
eine Flash-Zelle.
Werden 4 Akkus überwacht, und wird von jedem Akku alle 15 Sekunden
die Spannung gemessen, reicht ein 16F876 für eine mehr als
6-stündige
Aufzeichnung. (belegt ca. 3/4 des Flash-Speichers)
Die nebenstehende Schaltung ist auf höhere Genauigkeit
und minimalen
Stromverbrauch optimiert.
Auf einen der Analogeingänge wird verzichtet, dafür wird
RA3 als Eingang für eine externe Referenzspannung verwendet. Die
Referenzspannung
wird (zum Strom sparen) über RC4 ein- und ausgeschaltet. An allen
4 Spannungseingängen können Spannungen von 0V bis 2,5 V
gemessen
werden.
Zur Komunikation wird eine RS232-Schnittstelle verwendet, die
über
RC5 ein/ausgeschaltet wird.
Der 32,768-kHz-Uhren-Quarz an RC0/RC1 taktet den Timer1, und bildet
das Zeitnormal. Der PIC wird zwischen den Messungen in den SLEEP-Modus
versetzt, und vom Timer1 wieder geweckt.
Während der Messung verbraucht der PIC ca. 1,5 mA und der LM385
ca. 1 mA. Im Sleep-Mode benötigt der PIC ca. 30 µA.
|
|
zurück zu Projekte
, PIC-Prozessoren , Elektronik
, Homepage
Autor: sprut
erstellt: 23.10.2002
letzte Änderung: 17.02.2003