Ich möchte zwei PCF8574T an einen Arduino Nano anschließen, um damit über 220R Widerstände diverse BUZ11 anzusteuern (ja ich weiss, Steinzeitbausteine... Aber ich habe davon noch einen ganzen Haufen hier liegen). Die BUZ11 sollen lediglich wie ein Relais ein- und ausschalten. Kein PWM und keine Taktung wird kleiner als 5 Sekunden sein. In den Beschreibungen, die ich dazu bisher gefunden habe, habe ich (teilweise) den Hinweis gefunden, dass SCL und SDA jeweils mit 10K gegen Vcc geschaltet werden müssen. Das habe ich gemacht. Aber die Informationen zu INT (Pin13) sind sehr widersprüchlich. Muss ich den auch mit dem Arduino Nano verbinden? Falls ja, mit welchem Pin? Ist die variable Adressierung, wie ich sie gezeichnet habe so okay oder sollte man das anders machen? Frank
Frank S. schrieb: > In den Beschreibungen, die ich dazu bisher gefunden habe, habe ich > (teilweise) den Hinweis gefunden, dass SCL und SDA jeweils mit 10K gegen > Vcc geschaltet werden müssen. Das habe ich gemacht. Ist korrekt so, I²C braucht PullUps Frank S. schrieb: > Aber die Informationen zu INT (Pin13) sind sehr widersprüchlich. Muss > ich den auch mit dem Arduino Nano verbinden? Falls ja, mit welchem Pin? Den brauchst du nur wenn du von den PCFs über Änderungen an den Pins asynchron informiert werden willst. Z.B. wenn ein Knopf dranhängt und du nicht alle zig ms via I²C "nachschauen" willst ob der denn jetzt gedrückt ist. Wenn der PCF nur als AUsgang arbeitet brauchst du den int pin nicht.
Den INT brauchst du wenn du Eingänge einlesen möchtest. Für reine Ausgabe brauchst du den nicht
Max D. schrieb: > Ist korrekt so, I²C braucht PullUps aber nur je einen SDA und SCL am Ende der Kette also dem letzten PCF, denn I2C ist ein Bus, also auch so routen, vom Controler nach alle PCF und immer so weiter, kein Stern wenn möglich. PS billiger als Einzel PCF sind diese China Kracher PCF LCD Platinen http://www.ebay.de/itm/I2C-Modul-fur-LCD-Display-1602-IIC-TWI-Arduino-PCF8574AT-PCF8574-/252119221288?hash=item3ab37a0428:g:R90AAOSw0JpV4sLL Poti und Transistor für LED kann man ja rauswerfen und die fehlende Leitung nachlegen für alle 8 Ausgangs- oder Eingangsports Ich nutze die gerne als I2C Tastatur ohne Portverlust.
Frank S. schrieb: > Ich möchte zwei PCF8574T an einen Arduino Nano anschließen, um damit > über 220R Widerstände diverse BUZ11 anzusteuern (ja ich weiss, > Steinzeitbausteine... Aber ich habe davon noch einen ganzen Haufen hier > liegen). Die BUZ11 sollen lediglich wie ein Relais ein- und ausschalten. > Kein PWM und keine Taktung wird kleiner als 5 Sekunden sein. Der PCF8574 ist für Dich ungeeignet, da die Ausgangsstufen nur nach GND ziehen können. Es sind nur sehr schwache Pullups an den Ausgangspins vorhanden. Ein MCP23017 wäre für Dich geeigneter - erstens hat der 16 IOs, und zweitens hat der richtige Push-Pull-Ausgangsstufen, die sowohl nach VCC als auch nach GND treiben könne (was Du zur Ansteuerung des Gates brauchst). > In den Beschreibungen, die ich dazu bisher gefunden habe, habe ich > (teilweise) den Hinweis gefunden, dass SCL und SDA jeweils mit 10K gegen > Vcc geschaltet werden müssen. Das habe ich gemacht. Ja, wobei 10k möglicherweise etwas hoch ist. Du kannst bis auf 2k2 herunter gehen, wenn Du Probleme auf dem I2C hast. > Aber die Informationen zu INT (Pin13) sind sehr widersprüchlich. Muss > ich den auch mit dem Arduino Nano verbinden? Falls ja, mit welchem Pin? Interrupt-Pins sind optional, das musst Du nicht benutzen. > Ist die variable Adressierung, wie ich sie gezeichnet habe so okay oder > sollte man das anders machen? nö, schon ok so.
Frank K. schrieb: > Der PCF8574 ist für Dich ungeeignet, da die Ausgangsstufen nur nach GND > ziehen können. Es sind nur sehr schwache Pullups an den Ausgangspins > vorhanden. Beim anschalten werden die Ports kurz mit starkem Strom beaufschlagt (siehe dB) und danach muss man ja nur den leckstrom liefern, mosfets sind ja spannungsgesteuert.
Max D. schrieb: > Beim anschalten werden die Ports kurz mit starkem Strom beaufschlagt 1mA ist nicht grad Starkstrom.
Die Adresspins kannst Du auch mit Lötjumpern kodieren. Das spart Bauteile und muss ja sowieso nur einmal gemacht werden. Und vergiss die Abblockkondensatoren nicht.
A. K. schrieb: > Max D. schrieb: > Beim anschalten werden die Ports kurz mit starkem Strom beaufschlagt > > 1mA ist nicht grad Starkstrom. Ein Relais ist auch keine nennenswerte last für den mosfet, da dürften die schaltverluste klein ausfallen...
Frank K. schrieb: > Der PCF8574 ist für Dich ungeeignet, da die Ausgangsstufen nur nach GND > ziehen können. Die paar Mikrosekunden zum Laden des Gates kann man sich auch mit einem einfachen Pullup-Widerstand leisten. Warum einfach wenn's umständlich auch geht ....
Vielen Dank für die ganzen Tips. Die Abblockkondensatoren habe ich hinzu gefügt und beim Routen werde ich den Tip es wie einen Bus zu routen beherzigen. Ich hoffe das klappt auch so, wie ich mir das vorstelle. Die nächste Frage passt zwar nicht ganz zur Überschrift, gehört aber zu meiner Schaltung. Ich möchte einen SD-Karten-Adapter per SPI anschließen. In den diesbezüglichen Beiträgen wird darauf hin gewiesen, dass man einen Levelshifter verwenden soll. Wäre ein Levelshifter wie dieser (nur eben für 3 statt 2 Leitungen) schnell genug für diesen Einsatzzweck? Für die 3,3V Spannung würde ich einen AMS1117-3,3 nehmen. http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter http://playground.arduino.cc/uploads/Main/i2c-level-shift-mosfet.png Wenn ich es richtig verstehe, kann man die Widerstände komplett weg lassen. Ist das richtig? Frank
Frank Saner, muss mal Nachfragen. Geht es hier nur um die Hartware oder auch um Software. Wenn es wie in deiner Schaltung nur um Ausgang geht, kannst du Pin INT unbeschaltet lassen. Wichtig ist nur den Ausgang Pin mit GND zur „Last“ nach VCC zu verbinden. Mit freundlichen Grüßen Fred
Es geht hier erst mal nur um die Hardware. "Wichtig ist nur den Ausgang Pin mit GND zur „Last“ nach VCC zu verbinden." So ganz verstanden habe ich das ehrlich gesagt jetzt nicht. Was mir aber jetzt aufgefallen ist, ist dass der Mosfet gar nicht schalten kann. Der Ausgang des PCF8574 ist Opendrain.(das meintest Du wahrscheinlich damit) Entweder muss ich den 220R Widerstand weg nehmen und statt dessen einen Pullup mit beispielsweise 10K setzen, oder es so machen, wie Frank K. es vorgeschlagen hat. Jetzt verstehe ich auch, was er damit sagen wollte. Was wäre sinnvoller? Den PCF8574 gegen den vorgeschlagenen MCP23017 zu tauschen oder den Gatewiderstand ganz weg zu lassen und statt dessen einen Pullup zu installieren? Frank
:
Bearbeitet durch User
Frank S. schrieb: > Der > Ausgang des PCF8574 ist Opendrain Der Interrupt-Ausgang ist Open Drain, die anderen nicht, sie können aber nur 300µA oder so treiben.
Hallo Frank, Opendrain meinte ich. Bin nicht so firm mit Fachausdrücken. Mit freundlichen Grüßen Fred
Frank S. schrieb: > Es geht hier erst mal nur um die Hardware. > > "Wichtig ist nur den Ausgang Pin mit GND zur „Last“ nach VCC zu > verbinden." > > So ganz verstanden habe ich das ehrlich gesagt jetzt nicht. Was mir aber > jetzt aufgefallen ist, ist dass der Mosfet gar nicht schalten kann. Der > Ausgang des PCF8574 ist Opendrain.(das meintest Du wahrscheinlich damit) > Entweder muss ich den 220R Widerstand weg nehmen und statt dessen einen > Pullup mit beispielsweise 10K setzen, oder es so machen, wie Frank K. es > vorgeschlagen hat. Jetzt verstehe ich auch, was er damit sagen wollte. > > Was wäre sinnvoller? Den PCF8574 gegen den vorgeschlagenen MCP23017 zu > tauschen oder den Gatewiderstand ganz weg zu lassen und statt dessen > einen Pullup zu installieren? Den Gatewiderstand lässt Du nicht weg. Ich würde ihn kleiner machen, so 22Ω. Dann schaltet der Transistor schneller durch. Der PCF8574 ist, wie ich schon geschrieben habe, nicht wirklich gut geeignet. Wenn Du einen MCP23017 oder einen PCA9535 oder einen PCA9555 (die haben auch Push-Pull oder "Totem-Pole" Ausgänge und 16 Ausgangspins) nimmst, hast Du weniger Verdrahtungsaufwand, und es funktioniert besser. Der klitzekleine Haken ist die etwas höhere Komplexität der Chips. Die haben mehrere Register (pro 8-Bit Port ein Datenregister zum lesen, eines zum Schreiben, ein Datenrichtungsregister, und ggf noch ein Interrupt-Register; ganz ähnlich wie ein AVR DDR, PORT und PIN Register hat). Du musst die Pins erstmal auf Ausgang stellen. Das ist eine minimale Unbequemlichkeit, aber genau weil Du die Pins dediziert auf Ausgang stellen kannst, funktioniert es besser. fchk
Joachim B. schrieb: > aber nur je einen SDA und SCL am Ende der Kette Das Ende der Kette ist für SDA aber mal beim PCF und mal beim µC - je nach Datenrichtung.
Bei I²C hat man ja eh PullUps und keine terminierungswiderstände (wie bei rs485 zb), da ist der Ort egal (nur sollten es nicht zu viele werden, weil dann ergibt die Parallelschaltung einen bösen Strom).
Wolfgang schrieb: > Das Ende der Kette ist für SDA aber mal beim PCF und mal beim µC - je > nach Datenrichtung. da der µC beim Atmel üblicherweise kein OC ist gilt weiterhin am PCF.
Hi >da der µC beim Atmel üblicherweise kein OC ist gilt weiterhin am PCF. Wenn du mit OC Open-Collector meinst, irrst du: http://www.atmel.com/Images/doc2565.pdf Siehe S.4 SCL and SDA Pins Die Position der Widerstände am Bus ist deshalb vollkommen egal. MfG Spess
Hallo, Philips selbst (jetzt bei NXP zu finden) empfiehlt 2-10k PullUp. http://www.nxp.com/documents/application_note/AN10216.pdf Die PullUp waren anfangs bei Philips meist nahe beim Master, die Slaves hatten noch 100-150 Ohm Serienwiderstände in SDL und SCL an jedem Slave. Findet man auch in der Applikationen der alten ICs, Videotextdecoder usw.) Die Serienwiderstände habe ich aktuell schon lange eingespart, PullUp ist meist ein 10k oder 4,7k und der landert gewohnheitsmäßig in der Nähe des AVR. Stern ist kein Problem, das war ja Sinn der Sache: ein µC für die Steuerung und die Slaves teilweise auf verschiedenen Leiterplatten im TV oder der Anlage. Gruß aus Berlin Michael
spess53 schrieb: > Wenn du mit OC Open-Collector meinst, irrst du: muss ich dann mit irgendeinem anderen verwechselt haben, man kann sich nie drauf verlassen das alle I2C oc sind. Michael U. schrieb: > PullUp > ist meist ein 10k oder 4,7k und der landert gewohnheitsmäßig in der Nähe > des AVR. > > Stern ist kein Problem, das war ja Sinn der Sache: ein µC für die > Steuerung und die Slaves teilweise auf verschiedenen Leiterplatten im TV > oder der Anlage. mache ich ja auch oft so und habe bis jetzt keine Probleme gehabt, aber man sollte das mit der Terminierung am Ende im Hinterkopf behalten.
Dass die Slaves nicht zwangsläufig hintereinander geroutet werden müssen, wird das Routing erleichtern. :) Den PCF8574T habe ich im Schaltplan inzwischen gegen den empfohlenen MCP23017 getauscht. Eine Frage, die ich weiter oben gestellt habe, ist in der Diskussion leider unter gegangen. Vielleicht könnte noch jemand etwas dazu schreiben: "Die nächste Frage passt zwar nicht ganz zur Überschrift, gehört aber zu meiner Schaltung. Ich möchte einen SD-Karten-Adapter per SPI anschließen. In den diesbezüglichen Beiträgen wird darauf hin gewiesen, dass man einen Levelshifter verwenden soll. Wäre ein Levelshifter wie dieser (nur eben für 3 statt 2 Leitungen) schnell genug für diesen Einsatzzweck? Für die 3,3V Spannung würde ich einen AMS1117-3,3 nehmen. http://playground.arduino.cc/Main/I2CBi-directiona... http://playground.arduino.cc/uploads/Main/i2c-leve... Wenn ich es richtig verstehe, kann man die Widerstände komplett weg lassen. Ist das richtig?"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.