mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik pcf8574 mit ULN2803 I"C Ansteuerung


Autor: Stefan Krytinar (roadrunner1980)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Bei meinen Projekt in der Abendschule benötigten wir einen Bus mit dem 
wir unsere Taster und Leds am Bedinfeld verwalten können. Zusätzlich 
schalten wir über eine Triacansteuerung mit Moc3043 230V~ Aktorik. 
Einfach und kostengünstig I2C. Also etwas im www. gesurft hab ich  mich 
für den Portexpander pcf8574 entschieden. So für die Taster ist die 
Sache abgeschlossen. Um den Strom der Leds zu schalten hab ich den 
Treiberbaustein uln2803 zwischen Portexpander und Leds geschalten.

µC---PCF8574--ULN2803--Led.

Die Platine ist gerade beim ätzen. Laut meiner info sendet der µC ein 
high für das leuchten der Led. Also geht z.b. der Pin 1 des Portexpander 
auf high steuert den Treiberbaustein an und die Led leuchtet.

So und jetzt kommts:

Stimmt das, das ein µC beim hochfahren alle Pins auf high legt???!!!!

Hab ich einen Denkfehler oder würden dann alle meine Leds beim 
hochfahren leuchten bzw. alle meine Triacs die 230V~ Aktorik 
einschalten.

Weiters wenn man sich das Blockschaltbild vom ULN2803 ansieht schaut es 
aus wie wenn er eine Inventierung zur Freilaufdiode eingebaut hat.

Hat wer Erfahrung mit diesen Bausteinen?

Bitte um euer Hilfe und Rat wenn das stimmt ist das eine Katastrophe.

steve

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, ob der µC die Portpins alle auf 1 legt, hängt vom Controllertyp 
ab.
AVR schaltet die Portleitungen nach Reset auf Eingang. Und selbst wenn 
der µC alles auf 1 legt, ist es egal, weil da noch der PCF8574 
dazwischenhängt, der muß erst initialisiert werden, bevor sich da was an 
den Ausgängen tut. Aber genau der PCF8574 ist hier das Problem. Aus dem 
Datenblatt:
> At power-on the I/Os are HIGH. In this mode
> only a current source to VDD is active.
Das heißt, nach dem Einschalten sind sind alle Transistoren im ULN 
durchgesteuert bis die Ausgänge über I2C abgeschaltet werden. Das können 
dann schon einige Millisekunden sein.
Zu den Freilaufdioden im ULN:
Die Transistoren im ULN2803 schalten gegen Masse. Damit bei induktiven 
Lasten keine Transistoren sterben, legt man Pin11 auf V+ der 
angeschlossenen Last. Richtig, der ULN invertiert:
Eingang = 1, Ausgang auf Masse;
Eingang = 0, Ausgang offen.

Persönliche Anmerkung: Den PCF-Krempel für mehr Portleitungen erspare 
ich mir mittlerweile ganz, ein AVR passend programmiert ist einfacher zu 
verwenden, flexibler und billiger. Sinn machen eigentlich nur 
Spezialitäten wie die Uhren und LCD-Treiber.

Gruss
Jadeclaw.

Autor: Stefan Krytinar (roadrunner1980)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jadeclaw,

Danke für deine Antwort. Das du mit mir die Meinung teilst ist für mich 
nicht gut. Einige Pins sind auch direkt angeschlossen gegen Masse also 
ohen Protexpander etc. Da muss eine Lösung mit einem Inverterbaustein 
her. Wir verwenden einen ADUC 832 8051 derivat. Die Ansteuerung über I2C 
haben wir durchgeführt da wir sonst nicht genügend Ports für die gesamte 
Steuerung zu Verfügung haben.

Ist die Programmierung des AVR nicht kompilzierter als 8051?

steve

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ist die Programmierung des AVR nicht kompilzierter als 8051?
Nein, im Grunde genommen nicht.
Nur da du auf 8051-Basis arbeitest, ist es natürlich ein höherer 
Aufwand, weil du dann natürlich eine neue Architektur samt 
Programmierumgebung erlernen müsstest. Anders ist es bei mir, ich 
arbeite sowieso mit AVR-Controllern, da ist es natürlich einfach, einen 
als Portexpander zu verwenden. Auf der 8051-Schiene gibt es ebenfalls 
kleine billige Flash-Controller, nämlich AT89C2051 und AT89C4051 sowie 
den AT89S51. Tools und Programmiergeräte finden sich bei Atmel und im 
Netz.

Als weitere und sehr billige Lösung zur Porterweiterung bieten sich 
Schieberegister(74HC595 / CD4094) und 8-bit-Latches (74HC573) an. Diese 
verfügen über Freigabeeingänge, damit lassen sich die Ausgänge sperren, 
bis der Controller erwacht ist.

Gruss
Jadeclaw.

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lese dir das Datenblatt des pcf8574 nochmal durch.

der schaltest alle Ports auf high (Eingang)
die Ausgänge werden über low geschalten (kann auch LED´s treiben)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.