Das IO22D08 8 Channel Pro mini PLC Board
Beim Stöbern im Internet habe ich eine 8 Fach Relaiskarte für den Arduino Pro Mini gefunden. Neben den 8 Relais finden sich 8 Optokoppler Eingänge sowie eine 4 stellige 7 Segment Anzeige auf der Platine. Es folgt somit die Beschreibung für das IO22D08 8 Channel Pro mini PLC Board.
Das Board ist für einen Arduino Pro Mini, aber der lässt sich - mit einem USB-TTL Adapter - analog einem Uno mit der Arduino IDE programmieren. Daher habe ich mal eine Probebestellung gewagt und erste Tests durchgeführt.
Zum Aufbau
Die zusätzlichen notwendigen Ausgänge werden mit Hilfe von drei 74HC595 Shiftregister gewonnen. Am Shiftregister U5 sind die Relais nicht aufsteigend angeschlossen sondern in der Reihenfolge 81234567. Der Enable Eingang des Shiftregisters für die Relais ist mit Pin A1 verbunden. Damit kann man die Ausgänge aktivieren nachdem die Initialisierung vorgenommen wurde oder eine Notabschaltung realisieren.
Für die 4 stellige 7 Segment Anzeige werden zwei weitere Shiftregister (U3 U4) verwendet. Die 7 Segment Anzeige zeigt gem Schaltplan nur 18:88 wird aber analog den Bildern mit einem 8.8.:8.8. geliefert. Das Display ist Common Cathode und direkt auf der Platine ungesockelt verlötet. Um die LED Anzeige im Multiplex ansteuern zu können, müssen permanent Daten an die Shiftregister gesandt werden. Ein LED Treiber wie ein HT16K33 oder MAX7219 wäre wohl besser gewesen. Als Datapin für die Shiftregister wurde Pin 13 gewählt, daher flackert/glimmt die Arduino Pro Mini LED.
Weiters sind 8 Eingänge mit Optokoppler versehen (zu beschalten gegen GND) und mit Schraubterminals nach außen geführt.
Weiters sind 4 Taster auf der Platine angebracht.
Die Pins A4/A5 können somit für I2C genutzt werden. Am Pro Mini sind (wie beim Nano) die Ports A6/A7 auch verfügbar. D. h. man hat neben TX/RX noch insgesamt 4 weitere GPIOs zur freien Verfügung. Dabei sind die Einschränkungen von A6/A7 zu beachten, aber das ist jetzt nicht das Thema.
Der Arduino Pro Mini wird im Sockel mittels VCC = 5V versorgt, es muss daher ein Pro Mini in der 5V Variante verwendet werden. Für einen Pro Mini 3.3 braucht es eine geringfügige Modifikation um die 5V auf RAW zu verlegen.
Der VIN Eingang ist lt Schaltplan mit einer Diode gegen Verpolung geschützt. Für die Spannungsregelung auf 5 V wird ein einfacher Linearregler verwendet (gem. Schaltplan soll es einen Widerstand R0 geben, mit dem der Spannungsregler überbrückt werden kann, den konnte ich auf der Platine aber noch nicht ausmachen). Im laufenen Betrieb mit aktivem Display wird der Regler nur geringfügig warm.
Die Platine hat keine Ausfräsungen / Vorbereitungen gegen Kriechstrecken, daher nicht am 230V Stromnetz betreiben!
Die Abmessungen der Platine betragen 120*62*19mm.
Arduino Pin Verwendung durch IO22D08
Die Pins vom Arduino Pro Mini werden wie folgt verwendet:
const uint8_t dataPin = 13; // data of digital tube module const uint8_t OE_595 = A1; // Pin connected to 595_OE of Digital Tube Module const uint8_t latchPin = A2; // ST Store const uint8_t clockPin = A3; // SH clock Shift Clock Pin // A4 - unused - not connected - I2C SDA - can be used for an additional LCD display // A5 - unused - not connected - I2C SCL - can be used for an additional LCD display // A6 - unused - not connected // A7 - unused - not connected const uint8_t optoInPin[] {2, 3, 4, 5, 6, A0, 12, 11}; // the input GPIO's with optocoupler - LOW active const uint8_t keyInPin[] {7, 8, 9, 10}; // the input GPIO's with momentary buttons - LOW active
Software
Der Mustersketch ist für chinesische Verhältnisse fast schon gut dokumentiert. Auch die verwendete Timer-Library wird mitgeliefert. Dieser sorgt für das laufende Aktualisieren des Displays.
Das Beispiel macht eigentlich nur 8 "Nachlauf-Relais": tastet man einen der Optokoppler-Eingänge gegen GND, schaltet das zugeordnete Relais für eine bestimmte Zeit ein. Mit den Tasten 1 - 4 können die Zeitparamter der ersten vier Relais abgefragt werden, bzw. die Restzeit der Laufzeit angezeigt werden.
Ein adaptierter Sketch für das IO22D08
Mir hat die Verwendung des Timers nicht gefallen und überhaupt waren mir die Funktionen ein wenig zu verworren. Die drei Shift Register werden in einer Kette angesprochen. Da das Display wie oben beschrieben multiplext, muss mann auch jedesmal die Relais in die Register shiften. Daher habe ich eine Basisklasse IO22D08 erstellt, die die Hardware der Shiftregister (Relais und Display) implementiert. Die Basisklasse stellt die Hardwarezugriffe für das Board zur Verfügung und kann in allen Sketchen unverändert wiederverwendet werden.
Zusätzlich gibt es eine Timer Klasse. Für 8 Relais braucht man auch 8 Timer die hier als Array angelegt wurden. Timer[0] steuert das erste Relais an, Timer[7] das letzte Relais.
Die Optokoppler und Taster werden in einer simplen Funktion gelesen. Alles zusammen finde ich der Sketch ist nun besser lesbar und leichter für seine Zwecke adaptierbar.
Der Sketch (verlinkt am Ende der Seite als Download) macht genau das gleiche wie der chinesische Mustersketch, benötigt aber keine externe timer Library, etwa 200 Byte weniger Programmspeicher, aber 25 Byte mehr SRAM.
Aktuell ist die Ausgabe noch auf Integers beschränkt. Prinzipiell könnte man aber auch die IO22D08 von print erben lassen, das macht aber nur dann Sinn, wenn man auch den Zeichensatz vervollständigt, denn der ist aktuell (so wie im chinesischen Mustersketch) noch sehr eingeschränkt.
Kosten
Die 8fach Relaisplatine kostet beim freundlichen Chinesen knapp 20 USD. Im direkten low cost Preisvergleich mit Einzelkomponenten
- 8 fach Relaisboard (ca 8 USD)
- Optokopler Board (ca 12 USD)
- LED Anzeige (ca 3,50 USD)
liegt das Board also etwa gleich auf. Aber es entfallen alle Dupont-Kabel, die ja üblicherweise mehr Schwierigkeiten machen können als erwartet.
Resümee zu IO2D08 8 Kanal Relaisplatine
Die 8fach Relaisplatine erfüllt perfekt den Zweck einer kompakten Baugruppe. Die Optokoppler-Eingänge muss man mögen, bzw. bei der Beschaltung mit eigenen Sensoren entsprechend berücksichtigen. Die Ansteuerung der LED Anzeige mittels Shiftregister ist gewöhnungsbedürftig, aber auch dafür gibt es Mustersketche. Da (zufällig?) die I2C Ports freigelassen wurden und somit Erweiterungen möglich sind,, hat sich für mich der Kauf auf alle Fälle gelohnt.