Pages: [1] 2   Go Down
Author Topic: 8 x MCP23017 16 Bit Portexpander mit I2C +128 I/O  (Read 3690 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Leute, ich beschäftige mich grad damit, wie ich mehr Ports für mein Arduino bekommen kann.

Dabei habe ich mich an den MCP23017 erinnert.

Meine Frage ist nun, brauch ich bei jedem Chip eigene Pullups? Muss ich die Datenleitungen mit Kapazitäten auf GND ziehen? Die Chips sind ja I²C Chips. Deswegen frag ich.

Und kann man das wie im Bild zu erkennen so machen? ( Leider habe ich grade kein SPLAN zur Hand, des wegen haben ich es mit SPRINT-LAYPUT erstellt)

Bitte nicht http://docs.macetech.com/doku.php/centipede_shield , da ich alles auf einer Platine haben möchte und mir 50€ + Versand zu teuer sind.

Allerdings stellt sich die Frage, ob die Lib des verlinkten Shields nehmen kann?!?!

Ansonsten bin ich für jeden Tipp Dankbar.

Die Schaltung:



- Die 6er "Klötze" sind für die Adressen gedacht

Und hier noch die Pins des Chips:


Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20273
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pullupwiderstände brauchst du nur einmal im Bus.
Wenn Du Deine Platine so wie das Centipede Shield verdratest kannst Du auch die Bibiothek benutzen.
Grüße Uwe
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Uwe, das Problem ist ich hab keinen Schaltplan entdecken können bei denen. Aber viel großartig anders als ich können die´s ja auch nicht gemacht haben.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20273
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nein, der Schaltplan ist nicht oeffenlich.
Du kannst die Bibliothek analysieren und dadurch die Adressen herausfinden.
Wenn Du aber 8 I2C Expander verwendest hast Du den ganzen Adressbereich abgedeckt.
Das Centipede Shield hat aber nur die Haelfte davon. Du wirst um alle Aus/Eingaenge ansprechen zu koennen die Bibliothek modifizieren muessen.
Gruesse Uwe
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Uwe,

nun, ich glaube du liegst zur Hälfte Falsch.

Denn die Werben ja damit, dass man 2 dieser Shields benutzen kann.

Und aus dem Code Example der ganz oben verlinkten Seite

Code:
.digitalWrite([0…127], [LOW…HIGH]) - Acts like normal digitalWrite.

schließe ich, dass die Library doch 128Pins verwalten kann.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20273
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok Du hast Recht, hab ich nicht gut gelesen.
Also wenn Du 8 MCP23017 nimmst dann sind alle Adressen abgedeckt. Das einzige was Du noch entdecken musst ist welcher Ausgang welcher Zahl entspricht.
Gruesse Uwe
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie meinst du das, dass alle Adressen weg sind? Alle von dem Chipmodell? Das wäre klar. Ich habe nemlich einen kurzen Augenblick gedacht, dass du meinst, dass alle I²C Adressen weg sind *verwirrt* ...das wäre ja Blödsinn.

Aber mir fällt grad ein das ich ja noch die PCF8574P habe, die ja wieder andere Adressen haben...so hätte ich ja noch ma 64 Pins mehr.

Dann wäre ich bei nen MEGA bei 54+128+64= 246 Pins  smiley-surprise

danke fürs Helfen!
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20273
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der MCP23017 hat 3 Adress-Pins die in die I2C-Adresse eingehen. 3Bit sind 8 Moeglichkeiten und darum kannst du 8 MCP23017 in einem I2C Bus verwenden.
Gruesse Uwe
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das einzige was Du noch entdecken musst ist welcher Ausgang welcher Zahl entspricht.
Gruesse Uwe

Nun ich glaube das muss ich wohl durch aufbauen ausprobieren. Ich kann das aus der Lib nicht herauslesen.
Keine Ahnung wo/wie er da die 8 möglichen Chips mit I²C-Adressen versieht, oder wie er Bsp. NUR den 6ten Chip anspricht.
Vielleicht kann mir ja jmd nen Tipp geben wo die Chips ihre Adresse herbekommen, immherhin gibts ja die Funktion .portWrite([0...7], was darauf schließen lässt,
dass er so die einzelnen Chips anspricht. Hab aber keine Funktion endecken können die ne Adresse zuweisst.
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der MCP23017 hat 3 Adress-Pins die in die I2C-Adresse eingehen. 3Bit sind 8 Moeglichkeiten und darum kannst du 8 MCP23017 in einem I2C Bus verwenden.
Gruesse Uwe

Jo 2³ Adressen. Ich war vorhin nur etwas verwirrt smiley-grin
Logged

SF Bay Area
Offline Offline
Edison Member
*
Karma: 10
Posts: 1235
Arduino Ninja
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Don't build the PCB as shown, the MCP23017 is available in skinny (0.3") DIP, not wide (0.6") DIP.
Logged

Unique RGB LED Modules and Arduino shields: http://www.macetech.com/store

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Don't build the PCB as shown, the MCP23017 is available in skinny (0.3") DIP, not wide (0.6") DIP.

I've done for demonstration purposes only. But thanks for the tip!
Logged

Meran/BZ/IT
Offline Offline
Full Member
***
Karma: 0
Posts: 184
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich bin vor kurzem auf den I2C Switch PCA9546 gestossen.
Da Du ja bei 3 variablen Adress-Bits nur 8 I2C-Chips mit derselben Grundadresse ansprechen kannst, könnte dieser Chip die Lösung für noch mehr I2C Chips sein.

So, wie ich die Beschreibung verstanden habe, kann man damit die Arduino I2C Leitung in 4 I2C Leitungen aufsplitten und diese sogar gezielt ab/anschalten.

Dann kann man also jeweils eine Leitung á 8 Chips öffnen und die anderen 3 schliessen.
Damit sollten 4x8 Chips x 8 Ausgänge funktionieren.

Da der Switch auch 2 Adressbits hat, kannst Du sogar 4x4x8 Chips ansprechen.....
oder wenn Du an einen Switch einen anderen Switch hängst, der wiederum an einem anderen Switch hängt.....  smiley-wink

Gruß Reinhard

PS.: Da mein Gedankenmodell nur theoretischer Natur ist, wäre ein Praxisbericht mit einem I2C-Switch super!
Logged

Meran/BZ/IT
Offline Offline
Full Member
***
Karma: 0
Posts: 184
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
mir ist noch was eingefallen:

PCA9555
16x I/O

Gruß Reinhard
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey das ist ja ne coole Sache, danke für den Hinweis. Den Chip kannte ich noch garnicht. Das macht ja Dimensionen möglich, die nur noch vom kleinen Speicher begrenzt werden.
Logged

Pages: [1] 2   Go Up
Jump to: