Forum: Mikrocontroller und Digitale Elektronik PCF8574A und ULN280x


von Max Kenzie (Gast)


Lesenswert?

Abend zusammen,

hätte mal gern Hinweise zu folgendem Problem, ich glaub ich steh da
grad Verständnismäßig auf dem Schlauch:
Ich benutz ne'n PCF8574A um damit einen Treiberbaustein (ULN280x
Reihe) anzusteuern, der dann Relais schalten soll.

Mein Problem ist: Der Treiberbaustein ULN2801A und auch ULN2803A
schaltet immer durch, auch wenn ich beim PCF8574A die Ausgänge auf Low
setze.

Gemessen hab ich an den Ausgängen ca. 1.6 Volt, bei 5 Volt
Betriebsspannung (wobei sich die Spannung am Ausgang defakto eigentlich
nicht ändert, auch wenn ich die Betriebsspannung ändere.


Jetzt ist natürlich die Frage warum das passiert ;)
Meine Idee wär jetzt gewesen das es mit einem anderen Treiberbaustein
klappt (etwa ULN2804A), der einen höheren Eingangswiderstand hat.

Bin und jegliche Hinweise dankbar.

von Stefan Kleinwort (Gast)


Lesenswert?

Hast Du bedacht, dass der ULN280x Open-Collector ist? Der Ausgang bleibt
immer nahe 0V.
Beschalte den Ausgang mit LED (+R), dann siehst Du was.

Stefan

von Max Kenzie (Gast)


Lesenswert?

Sorry, hab ich vergessen zuzuschreiben: Ich mein die Spannung am Ausgang
vom PCF8574, das ganze natürlich in der fertigen Schaltung gemessen, es
gibt also keine offenen Ein und Ausgänge.

Und dort liegt leider immer 1.6 Volt an.
Zwischenzeitlich konnte ich das Problem weiter eingrenzen: Nehme ich
den ULN280x aus der Schaltung, liegt am PCF8574 die jeweils korrekte
Spannung für High und Low an.

von Peter D. (peda)


Lesenswert?

Der PCF8574 hat doch open drain Ausgänge.
Die internen Pull-Ups reichen nur, um CMOS oder TTL-Logik anzusteuern.

Die ULN280x sind aber Transistor-Arrays und die wollen ordentlich
Basisstrom haben, d.h. man muß externe Widerstände gegen VCC
anschließen.


Peter

von Max Kenzie (Gast)


Lesenswert?

Hmm, laut Datenblatt ist z.B. der ULN2804A intern mit 10.5k beschaltet
und für CMOS Ansteuerung geeignet, möglicherweise klappts mit dem?

Ich hab den für TTL Logik probiert (ULN2803A), der zwar mit ne'm Atmel
Mega18 funktioniert, aber net mit dem PCF8574A.

von crazy horse (Gast)


Lesenswert?

spendier jedem PCF-Ausgang einen pullup, dann klappts auch mit dem
ULN2803. 10k sollten genug STrom liefern.

von Max Kenzie (Gast)


Lesenswert?

oder halt den genannten ULN2804A, der dat schon intern hat ;) Kostet eh
nur 0.42 € und ist wesentlich einfach im Aufbau als 10 Widerstände
einzulöten...

von Stefan Kleinwort (Gast)


Lesenswert?

Leider zu früh gefreut.
Der 04 hat einen Vorwiderstand, keinen Pullup.

Stefan

von Ratber (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Max

Zunächst mal wirf nen Blick auf das Pic was ich angehangen hab.
Dort hab ich mal die wesentlichen Schaltungsteile zusammengetragen.

Is eigentlich ganz einfach.

Links der Ausgang des 8574.

Wie man sieht hat der nur ne 100uA Quelle nach Vdd und kann so nur
wenig nach "oben" reissen.

Er kann also nur kräftig nach Masse (Vss) ziehen.

Will man dort Definierte Pegel mit etwas mehr "Energie" dann sind
Pullups fällig aber das ist ja hier schon erwähnt worden.



Nun zu den ULN 280x.

Eines der Treiberschemata hab ich Rechts eingefügt.
Der Unterschied zwischen 01-05 ist nur der Basiswiderstand am Eingang
der bei 01 nicht vorhanden ist und bei 02-05 die Werte 10.5K / 2.7k /
10.5k  und 1.05K beträgt.
Der Rest ist immer gleich.

Das Datenblatt zu den Tyapen 2801-05 gibt ja schon gut auskunft darüber
welcher Typ für welche Ansteuerung gedacht ist.
Also

01  Pmos/Cmos
02  15V Pmos
03  5V TTL/Cmos
04  6-15V Cmos/Pmos
05  High-TTL

Du mußt nur entscheiden welchen du brauchst.

Wie ebenfalls schon gesagt wurde ist der 280x als Open Collector
ausgeführt und die Last kommt zwischen VCC und Ausgang.
Er Schaltet also nach Masse.







Da ich auch mit I2C Arbeite und natürlich ebenfalls kaum um den 8574
herumkomme und nochmals "kaum" (Ich weiß,wiederholungen sind unfein
aber mir ist's ladde) um den 280x komme  kann ich dir auch sagen das
es mit Pullups und dem 2803 bestens klappt denn der 8574 gibt ja TTL
aus also bekommt er auch die TTL-Taugliche Schaltstufe ;)

Als Pullups hab ich oft 20K ohm genommen.
Das ist nicht zuviel und nicht zuwenig.
Wer Sicherer Fahren will der kann auch gerne bis zb. auf 5-10 K
runtergehen.


Wenn dir die Einzelwiderstände für die 8 Leitungen zu sperrig sind dann
nimm doch ne Kaskade.

Die gibt es zb. bei Reichelt unter den Bezeichnungen "SIL 9-8" in der
E12 Reihe für 12 Cent das Stück.

Die einzige andere Chance ohne auszukommen ist einen anderen I2C
Portchip zu finden der schon Pullups drinne hat aber so aus der Hüfte
fällt mir da nur der MAX 7311 ein.
Der ist allerdings in 16 Bit ausgeführt und damit im 24 Poligen
Dil.Gehäuse erhältlich aber dafür kann er von 2-5V Arbeiten,ist
TTL-Tollerant und verträgt 17-32mA als Sink bzw. 41-31mA als Source am
Port.

Ob sich das aber lohnt mußt du wissen.

Ich nutze jedenfalls gerne die Kaskaden und das dürfte ja nicht zuviel
Arbeit sein oder  ? ;)

von Max Kenzie (Gast)


Lesenswert?

Ratber: Danke für die sehr hilfreichen Hinweise. Gibt's denn auch
Treiber in der Art ULN280x mit bereits integrierten PullUp
Widerständen?

von Max Kenzie (Gast)


Lesenswert?

Und nach ne kleine Frage als Nachtrag:
Hab mal testweise an einem der Ausgänge einen PullUp Widerstand mit 10k
Ohm angeschlossen. Komischerweise funktioniert jetzt alles (also alle 8
Ausgänge) wie gewünscht, wie kommt das und klappt das in Zukunft auch
sicher ;) ?

von Ratber (Gast)


Lesenswert?

******
Ratber: Danke für die sehr hilfreichen Hinweise. Gibt's denn auch
Treiber in der Art ULN280x mit bereits integrierten PullUp
Widerständen?
*******

so aus der Hüfte wüßte ich da jetzt nix aber ich vermute mal "Neín".


*******
Und nach ne kleine Frage als Nachtrag:
Hab mal testweise an einem der Ausgänge einen PullUp Widerstand mit
10k
Ohm angeschlossen. Komischerweise funktioniert jetzt alles (also alle
8
Ausgänge) wie gewünscht, wie kommt das und klappt das in Zukunft auch
sicher ;) ?
********

Yo,das das Funktioniert glaube ich gerne denn ohne Pullup geht es eben
nicht mit nem 8574.

Sicher ist das allemale.

Warum ich 20K genommen habe ist einfach der Grund das ja permanent ein
Strom durch die Widerstände fließt und sich alle Pullups in einer
Schaltung ja irgendwo summieren und das kann dann schnell mal ein
nennenswerter Wert werden.


Also mal grob gerechnet (Nicht schlagen. Ich machs mit absicht so
einfach) haste bei 10k Pullup und nem 2803 dann 10k+2.7k+7.2k+3k=22.9k
zwischen Vcc und Vdd.

Bei 5V sind das dann nach I=U/R also 5V/22.9k=0.22mA pro Port die
permanennt fließen.

Hört sich wenig an aber bei 8 Ports sind das schon 1.76mA

Zugegeben,auch noch wenig aber auch kleinvieh macht mist.

Bei deiner Relaisschaltung könnteste auch mit nem Widerstand und nem
Kondensator etwas Leistung sparen und auch die Spulen schonen damit se
nicht solange Braten.

Mit 10k biste aber auf jedenfall auf der Sicheren Seite.


Den Blockkondensator für die Relais nicht vergessen sonst ziehts dir
eventuell beim Schalten die Versorgung runter.(Nur so am Rande)

von Max Kenzie (Gast)


Lesenswert?

Ich betreibe bistabile Relais um mir möglichst viel Leistung zu sparen,
die Spulen brauchen also nur kurz Strom ;)

Was ich jetzt noch net ganz verstanden hab: Es könnte also ausreichend
sein für meinen kompletten PCF8574 einen einzigen PullUp Widerstand zu
verwenden, oder muss ich (um sicherzugehen) für jeden Ausgang ne'n
eigenen PullUp anlegen, damit die Pegel wirklich immer korrekt sind?

Wegen dem Blockkondensator: Reicht da nicht schon die bereits
vorhandene Schutdiodenschaltung im ULN280x ?
Wie wäre ein Blockkondensator bei ne'm bistabilen Relais (2 Spulen,
also einmal +6 V und zweimal GND für die jeweilige Spule) verdrahtet?

Danke nochmal :)

von Ratber (Gast)


Lesenswert?

Hallo Max



Sorry für die Verspätung aber das Wetter hat mich ins Freie gezogen und
ziu ner längeren Runde über die Landstraßen gezwungen ggg

Zum Thema:

****
Ich betreibe bistabile Relais um mir möglichst viel Leistung zu
sparen,
die Spulen brauchen also nur kurz Strom ;
****

Tofte,so mache ich es auch immer wenn ich keine Halbleiterrelais
verwenden will/Kann.

Vorschlagen tu ich es einfach nicht mehr da mir dann immer gleich das
Argument der Kosten entgegenschwappt (Die Leute wollen alles für 0
Kohle).


*******
Was ich jetzt noch net ganz verstanden hab: Es könnte also ausreichend
sein für meinen kompletten PCF8574 einen einzigen PullUp Widerstand zu
verwenden, oder muss ich (um sicherzugehen) für jeden Ausgang ne'n
eigenen PullUp anlegen, damit die Pegel wirklich immer korrekt sind?
*******

Die Frage und den Denkfehler kannste schnell selber
beantworten/erkennen wenn de mal Zeichnest was de vorhast ;)

Wie willste alle 8 Leitungen mit einem Pullup versehen ohne sie
zusammenzuschließen ? ;)

geht also nicht.

Nimm die Widerstandsmatrix die ich dir Empfohlen habe.Is das
Optimalste.


*****
Wegen dem Blockkondensator: Reicht da nicht schon die bereits
vorhandene Schutdiodenschaltung im ULN280x ?
******

Die Schutzdioden Löschen nur die Induktionsspiten beim Abschalten der
Relaisspulen damit diese nicht die Halbleiter killen.(Wenn du Pin 10
auch nach VCC gelegt hast.Sonst bringt es nix)
Der Kondensator ist dafür da die örtliche Versorgungsspannung nicht
beim Einschalten runterzuziehen. (Is sowas wie das Vergasertöpfchen am
Automotor).
Kannst ja mal alle Relais gleichzeitig Einschalten und dir ansehen was
passiert. ;)


*****
Wie wäre ein Blockkondensator bei ne'm bistabilen Relais (2 Spulen,
also einmal +6 V und zweimal GND für die jeweilige Spule) verdrahtet?
*****


???
Versteh ich nicht genau wie du das meinst.

Ein Guter Elko zwischen VCC und Pin 9 (Masse) vom 280x sollte voll
ausreichen um alles abzudecken.
Die Größe ist abhängig von dne Relaisdaten aber da kannste entweder
Rechnen oder einfahc mal etwas rumprobieren.

Ich kann dir ja mal ne Zeichnung machen wenne willst.

Gruß
Ratber

von Max Kenzie (Gast)


Lesenswert?

@Ratber: Sorry das ich auch so spät geantwortet hab.
Danke für die vielen ausführlichen Hinweise, die mir sehr
weitergeholfen haben :)

Hab gestern auch das schöne Wetter ausgenutzt zum fahren :)

Gruß
Max

von Gerhard Gunzelmann (Gast)


Lesenswert?

Moppedler oder was ?

(Gerhard, auch Moppedler)

von Max Kenzie (Gast)


Lesenswert?

Yepp :) Yamaha FZR 1000 Baujahr 1987, den Winter über renoviert ;)

von Ratber (Gast)


Lesenswert?

*******
@Ratber: Sorry das ich auch so spät geantwortet hab.
Danke für die vielen ausführlichen Hinweise, die mir sehr
weitergeholfen haben :)

Hab gestern auch das schöne Wetter ausgenutzt zum fahren :)

Gruß
Max

********

Yep,kein Problem.
Hauptsache es hilft.


Sonnentage muß man erstmal mitnehmen solange der Sommer sich noch
versteckt gg

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
Noch kein Account? Hier anmelden.