Portexpander

Das EZ-Expander Shield ist eine Zusatzplatine für die Arduino Standardboards und bietet 16 zusätzliche digitale Ausgangsports, welche mit den Portnummern 20-35 bezeichnet sind.Die Ansteuerung erfolgt über 3 digitale Ausgänge (Pin 8, 12 und 13).


(Bild Quelle nootropic design)

Somit stehen dem Anwender 13 zusätzliche Ports zur Verfügung, 16 Ports auf der Erweiterungsplatine sowie 13 Ports auf dem Arduinoboard (16 minus 3 Ports für die Ansteuerung der Erweiterungsplatine).
Zu beachten ist dabei, dass die zusätzlichen Ports auf der Erweiterungsplatine nur als Ausgänge konfiguriert werden können.

Dieser Portexpander wird wie die Standard-Shields direkt auf das Arduino-Board gesteckt. Im Gegensatz zu den Standard-Shields hat der EZ-Expander geringere Abmessungen. Für die Porterweiterung werden 2 74HC595 Shift Register Bausteine verwendet.


(Bild Quelle nootropic design)

Für die Ansteuerung der zusätzlichen Ports 20-35 steht eine Library EZExpander zur Verfügung. Anschliessend können die Ausgangsports mit der bekannten Anweisung digitalWrite(Portnummer, Zustand) angesteuert werden. Wobei zu beachten ist, dass die Anweisung nicht die Standardanweisung des Arduino ist sondern eine Methode der EZExpander-Klasse ist.

Beispielsketch:

#include <EZExpander.h>

// EZExpander Objekt erstellen
EZExpander expander = EZExpander();

void setup()
{
}

void loop()
{
  for(int i=20;i<=35;i++) {
    expander.digitalWrite(i, HIGH);
  }
  delay(1000);
  for(int i=20;i<=35;i++) {
    expander.digitalWrite(i, LOW);
  }
  delay(1000);
}

Das EZ Expander Shield kann als Bausatz oder als fertige Lösung im Shop von nootropic design gekauft werden.

Erfahrene Arduino-Anwender können die Porterweiterung auch selber mit den Shift-Register-Bausteinen aufbauen und nur die Bibliothek verwenden. Zusätzlich stehen auf der Website des Lieferanten die CAD-Daten der Leiterplatte im Eagle-Format zum Download bereit.


4 Responses to “Portexpander”  

  1. 1 Martin

    Hmm… kommt mir wenig elegant vor – blockiert mechanisch zu viel, kein I/O, „normales“ digital.write geht nicht.
    Ich würde das Centipede Shield empfehlen: http://macetech.com/store/index.php?main_page=product_info&cPath=4&products_id=23

  2. 2 arduino-praxis

    Je nach Anwendungsfall kann dieses kleine Board die richtige Lösung sein. Durch die einfache Schaltung kann man dieses auch selbst auf einer Experimentierplatine oder einem ProtoShield aufbauen.

    Wenn man natürlich auch Eingänge benötigt, ist dieser EZ-Expander nicht die richtige Lösung.

    Beim von dir erwähnten Centipede Shield, welches auch schon von mir erwähnt wurde, hat man natürlich mehr Möglichkeiten. Die Kosten für dieses Board sind natürlich leicht höher und ein Selbstbau kommt für Einsteiger vermutlich nicht in Frage.

    Der mechanische Aufbau beim EZ-Expander entspricht natürlich nicht ganz den Standardboards. Falls man aber keine weiteren Erweiterungen aufstecken muss, kann das gut die Lösung sein.

  3. 3 Markus

    ich möchte an meinem Arduino 10 Ultraschallsensoren und 10 Infrarotsensoren anschließen. Dafür sind aber leider am Arduino zu wenig Ports vorhanden. Die Ultraschalsensoren schließe ich an den digitalen Ports an, die Infrarotsensoren an den analogen Ports. Zur Erweiterung der Ports habe ich mir den Expander MCP23017 gekauft, aber bisher keine Erfolge. Ich weiß nicht, ob das damit auch funkionieren wird. Weitergehende Rechersche hat gezeigt, dass man mit dem Schieberegister 74HC595 Ports erweitern kann. Allerdings zeigen viele Tutorials dies nur mit LED Lampen. Ich weiß nicht, ob mir dieser Schieberegister für die Erweiterung der analogen digitalen Port helfen würde, um die Ultraschall- und Infrarotsensoren anzuschließen. Kann mir vielleicht bitte jemand sagen, wie der beste Weg ist, je 10 Ultraschall- und Infrarotsensoren am Arduino anzuschließen?

  4. 4 arduino-praxis

    @Markus

    Deine 20 Sensoren passen doch gerade an die digitalen und analogen Pins.
    D0-13 und A0-A5. Die analogen Eingänge kannst du auch als digitale Eingänge (D14-19) verwenden.

    Ein Ansatz mit dem MCP23017 funktioniert auch. Hier gibt es eine gute Anleitung
    http://tronixstuff.com/2011/08/26/tutorial-maximising-your-arduinos-io-ports/

    Falls es weiterhin nicht geht, einfach etwas mehr Details posten.

    Gruss
    Thomas

Leave a Reply



Kategorien