Hallo Leute, das nächste, interessante Modul aus Asien ist angeschlossen und ausprobiert.
Ich habe hier ein Modul mit einem PCF8591. Bei diesem Baustein handelt es sich um einen 8-Bit Analog/Digital Digital/Analog Wandler mit vier analogen und einem digitalen Eingang.
Er verfügt über eine I2C-Schnittstelle und kann direkt an den GPIOs betrieben werden.
Der Gebrauch des Moduls ist so simpel, dass ich mir ein Tutorial spare.
Es kann sicherlich auch mit script-Sprachen verwendet werden, weil sich die Kommunikation mit dem Modul auf byteweises Lesen bzw. Schreiben des I2C-Bus beschränkt.
Nähere Informationen zum Chip selbst findet ihr im Datenblatt.
Das Modul:
Das Modul ist schon ab 2 Euro z.B. bei meinem bevorzugten Asiaten erhältlich, wird aber auch von anderen Anbietern z.B. auf ebay vertrieben
Mir ist aufgefallen, dass es wohl verschiedene Ausführungen des Moduls gibt. Meine Beschreibung bezieht sich auf die meines Dealers.
Ob und welche Unterschiede es zwischen den einzelnen Modulen gibt, kann ich leider nicht sagen. Aber ich denke, von der Grundfunktion und der Idee dahinter dürften alle zumindest ähnlich sein.
Dieses Modul ist imho mit Abstand das genialste, das ich in den letzten Monaten ausprobiert habe.
Noch dazu der Preis, der mir unschlagbar erscheint.
Neben dem PCF8591 befinden sich auf dem Modul eine doppelreihige Stiftleiste mit fünf Polen, die mit Jumpern verbunden sind. Dies sind die vier Eingänge (AN0, AN1, AN2, AN3) und der digitale Ausgang (OUT), die durch die Jumper mit den „Onboard“-Komponenten verschaltet werden.
Ausserdem sind auf der Platine eine LED, ein lichtempfindlicher Widerstand, ein temperaturabhängiger Widerstand und ein Potentiometer verbaut.
Schliesslich sind noch eine rote Power-LED und fünf Anschluss-Pins für die GPIOs vorhanden.
Anschluss und Stromversorgung:
Wie bereits oben erwähnt, kann das Modul direkt an die GPIOs angeschlossen werden.
Das Modul hat fünf Anschluss-Pins die ich folgendermassen verdrahtet habe:
Vcc des Moduls mit Pin #1 der GPIOs
Gnd des Moduls mit Pin #9 der GPIOs
SDA des Moduls mit Pin #3 (GPIO2, SDA) der GPIOs
SCL des Moduls mit Pin #5 (GPIO3, SCL) der GPIOs
A0 des Moduls mit Pin #6 der GPIOs (Gnd)
Das Modul funktioniert out of the box und wird nach dem Anschliessen mit
auf Adresse 0x48 angezeigt.
Im Gegensatz zum Chip hat das Modul nur einen Adress-Pin: A0.
Verbindet man diesen nicht mit GND sondern mit +5V ändert sich die Adresse des Moduls auf 0x49.
Funktionsweise des Moduls:
Das Modul ist in meinen Augen eine Super-Lösung zum experimentieren mit analogen Signalen.
Sobald das Modul angeschlossen ist, kann man auch die „Onboard“-Komponenten verwenden.
Das Modul hat die Basisadresse 0x48.
Die digitalisierten Werte der Onboard-Komponenten können nun über die Datenregister
Quote
0x40 für den Fotowiderstand
0x41 für den freien Eingangspin (ohne Jumper)
0x42 für das Potentiometer und
0x43 für den Temperaturfühler
ausgelesen werden.
Verändert man die Umgebungs-Bedingungen (Licht, Temperatur) oder dreht am Potentiometer, kann man verfolgen wie die Werte sich verändern.
An den freien Eingang kann man zum Testen mal +3,3V bzw Masse anlegen und wird feststellen, das der Wert einmal 255 und, auf Masse gezogen, 0 ist.
Achtung! Den dem Chip zugewandten Pin zum Anschliessen verwenden.
Die LED kann über das Register 0x40 angesteuert werden.
Je höher der Wert (0-255) ist, den man in das Register schreibt, desto heller leuchtet die LED.
Um seine Grundlagenforschungen in Sachen AD/DA Wandler weiter zu führen kann man
die Jumper entfernen und die Eingänge des Chips mit eigenen analogen Signalen versorgen.
Angeschlossen werden die eigenen Eingänge an der dem Chip näher liegenden Seite der Pfosten-Doppelreihe.
Das Programm im Anhang:
Im Anhang findet ihr ein kleines C-Programm, das ich nebenbei mal auf die Schnelle eingetippt habe. Is nix Dolles, aber es tut und kann mit
übersetzt werden.
Das Programm ist, wie gesagt, total simpel aufgebaut. Es stellt eine Verbindung zum Modul über den I2C-Bus her und initialisiert den Chip auf dem Modul durch senden des Control-Byte.
In einer Schleife werden jetzt die vier Register ausgelesen, deren Werte ausgegeben und das Register für die LED mit dem Schleifenzähler beschrieben.
Dadurch leuchtet die LED bei jedem Schleifendurchlauf heller.
Am Schluss wird noch die LED abgeschaltet und aufgeräumt.
Tja, und das war's jetzt auch schon.
Wenn man bedenkt, dass dieses Modul in China preiswerter zu bekommen ist als der nackte Chip in Deutschland, dann halte ich das für ein durchaus lohnenswertes Schnäppchen und werde mir da wohl noch das eine oder andere Zweitmodul besorgen.
Dann wünsche ich Euch viel Spaß mit dem Teil.
Fragen, Anregungen usw. aufgrund des fehlenden Tutorials diesmal hier.
Viele Grüße aus einer südlichen und lauen Nacht,
-ds-