nachdem ich die wichtigsten Teile u.a. den Temperaturfühler LM75 nochmals bestellt habe - und jetzt ist er tatsächlich angekommen, geht es nun richtig zur Sache. Ich schließe mit dem Folgenden direkt an mein letztes Post vom 29.11. an (Herbert, diese Sache mit der Fräse und den Steppern sollten wir vielleicht auslagern - damit wir hier nicht durcheinander geraten, oder?

Das Temperatur-Modul sieht aus wie auf dem Bild unten. Der Temperaturfühler sitzt neben drei kleinen SMD-Widerständen auf der Platine. An einem Pin ist ein kleiner weißer Punkt. Das ist das Bein Nr.1. Die Tabelle gibt die Funktion der Pins an:
- 1 SDA = I2C-Bus
- 2 SCL = I2C-Bus
- 3 OS = Programmierbarer Schaltausgang
- 4 GND = Masse
- 5 A2 = Pin zur Einstellung einer Adresse
- 6 A1 = Pin zur Einstellung einer Adresse
- 7 A0 = Pin zur Einstellung einer Adresse
- 8 +Vs = Versorgungsspannung
Die Platine selber besitzt jedoch nur eine 5-polige Stiftleiste, die so verdrahtet ist, das sie direkt auf die GPIO des Raspberry aufgesteckt werden kann. Pin 1 der GPIO (3,3V) ist dann mit Pin 1 (das ist der einzige eckige Pin auf der Lötseite) der LM-Platine verbunden und dieser Pin nun wieder mit Pin 8 des LM75.
Pin 3 der GPIO ist mit Pin 2 der Platine und dieser nun wieder mit Pin 1 des LM75 verbunden. Und so weiter. Also - vor Draufstecken mal ganz in Ruhe nachvollziehen. Falls ihr den LM auf dem Steckbrett anschließen wollt (siehe mein Bild aus November) dann unbedingt auf der 3,3V-Seite des Levelschifter (der Chip links im Novemberbild). Im Schaltplan seht ihr das nochmal genauer. Dort sind auch die Farben der Steckleitungen zu sehen Rot, lia, grün und schwarz müssen angeschlossen werden.
Falls ihr schon I2C-Bausteine in Betrieb habt stellt bitte sicher, das keiner die Adresse 48 belegt. Wie ihr das herausfindet habe ich auch schon weiter oben beschrieben (Tipp: i2cdetect -y 1). Der LM ist leider fest auf 48 eingestellt. Wollten wir das ändern, müssten die Widerstände von der Platine gelötet werden und die Pins (je nach Wunschadresse) an +Vs oder GND gelegt werden. Das sollten wir uns sparen.
Jetzt: LM draufstecken, anschließen, RP einschalten, Konsole öffnen und i2cdetect -y 1 eintippen, gefolgt von [RETURN]. Jetzt sollte mindestens die 48 als Adresse auftauchen. Wenn ja ist alles bereit für den nächsten Schritt, und der heißt Temperatur auslesen mit folgendem Befehl auf der Konsole:
- Code: Alles auswählen
i2cget -y 1 0x48 0x00 w [RETURN]
Auf Deutsch heißt das "Hole aus dem Register 0x00 des Bausteins mit der Adresse 0x48 zwei Bytes und zeige sie her". Das Ergebnis sieht ungefähr so aus (je nachdem wie warm es in eurem Zimmer bei euch ist...):
- Code: Alles auswählen
0x001e
Das ist die Temperatur in hexadezimaler Schreibweise! 1e steht in diesem Fall für 20°C. Wie die Umrechnung von Hexdezimalzahlen von Hand möglich ist steht z.B. hier: https://www.marco-burmeister.de/helferl ... oktal.html
Die bis hier beschriebene Vorgehensweise könnt ihr im Detail hier http://vitech-blog.de/raspberry-pi-temp ... -dem-lm75/ nachlesen. Das Pythonscript auf der Seite hat allerdings einen Fehler - zumindest funktioniert es bei mir erst nach einer Korrektur (siehe Bild).
Wenn ihr das Script auf der Konsole mit dem Befehl
- Code: Alles auswählen
python Lm75.ph [RETURN]
startet, wird im Abstand von 30 Sekunden die aktuelle Temperatur angezeigt. Abbruch des Scriptes mit STRG + C.
Jetzt haben wir zumindest schon mal einen Sensor am I²C-Bus angeschlossen und ausgelesen - bei Sensoren für Strom und Spannung funktioniert das ganz genau so. Als nächstes speichern wir die Daten in eine SQL-Datenbank und verarbeiten sie weiter... das kommt dann bald im nächsten Post.
Windige Grüße
Siegfried