Forum: Analoge Elektronik und Schaltungstechnik PCF8574 mit ULN2003


von Tom W. (limpbiz)



Lesenswert?

Hallo, ich möchte an den Ausgängen eines PCF8574 8 kleine induktive 
Lasten mit 3.3V betreiben. Daher dachte ich, ein Darlington-Treiber 
könne nicht schaden, also habe ich das so zusammen gebaut wie im Anhang 
(aber mit 3.3V statt 12V) - was prinzipiell gut geht, jedoch scheint die 
Bibliothek der Software (WLED), die diesen PCF8574 oder der Baustein 
selbst beim Booten alle Ausgänge kurz HIGH zu schalten, was natürlich 
stört.

Softwaremäßig kann ich die Logik invertieren, aber dann ist beim Booten 
erst mal alles HIGH, was natürlich auch nicht gewollt ist.

Induktive Lasten auf der anderen Seite (gegen GND) gehen gar nicht, 
wahrscheonlich brauche ich ein PNP Array, oder? Ein Inverter wie 74HC240 
ist auch eine Lösung, vermute ich mal.

Andererseits ist mein Platz recht begrenzt, so dass ich nciht unbedingt 
3 Bausteine verbauen möchte - gibt es bessere Ideen? Viel Strom brauche 
ich nicht, die 8 induktiven Lasten sind einfache Flacker-Kerzen-LED mit 
so einem kleinen Magneten zur Bewegung...

Danke für Tipps,
Tom

von Wastl (hartundweichware)


Lesenswert?

Tom W. schrieb:
> Danke für Tipps

Wer Mikrokontroller-Schaltungen ohne Abblock-Kondensatoren aufbaut,
nachmacht oder verfälscht, insbesondere bei existierenden
Schaltungen die Abblock-Kondensatoren weglässt oder falsch
verschaltet oder selbst solche Schaltungen entwirft, in Verkehr
bringt und/oder aufbaut ohne Abblock-Kondensatoren nach Hersteller-
Empfehlungen zu verwenden, wird mit Zugangs-Ausschluss vom
Mikrokontroller-Forum nicht unter zwei Jahren bestraft.

von Peter* (nochgast)


Lesenswert?

Hallo,
nun SW ändern.

Schau mal hier die zusätzliche Info.
https://www.conrad.de/de/ratgeber/industrie-40/elektronik-bauteile/uln2803.html

von Bauform B. (bauformb)


Lesenswert?

Tom W. schrieb:
> Andererseits ist mein Platz recht begrenzt

Der TPIC2810D ist praktisch eine Kombination aus PCF und ULN in einem 
Gehäuse. Und er hat einen entscheidenden Vorteil: einen Output Enable 
Eingang. Solange der High ist, sind die Ausgänge abgeschaltet, egal, was 
irgendwer per I2C geschrieben hat. Ja, das kostet am uC einen Port Pin 
mehr und einen Pull-Up, aber dafür funktioniert es.

In deiner Anwendung hat der TPIC noch den Vorteil, dass er FET-Ausgänge 
hat, also ist der Spannungsabfall kleiner als bei den 
Darlington-Ausgängen. Allerdings haben diese FET bis zu 18 Ohm bei 3 
Volt, ab 75mA wird er also schlechter als ein ULN und mehr Strom ist auf 
Dauer auch nicht erlaubt. Irgendwann würde der integrierte 
Übertemperaturschutz abschalten.

Der PCF8574 ist ideal für Textdisplays mit HD44780, aber für alles 
andere sehr gewöhnungsbedürftig. Zum Beispiel sind per Design nach dem 
Einschalten alle Ausgänge High. Andere I2C-Portexpander machen das 
besser, sind aber umständlicher zu programmieren und/oder schalten 
zufällig einzelne Ausgänge ein...

von Falk B. (falk)


Lesenswert?

Tom W. schrieb:
> Hallo, ich möchte an den Ausgängen eines PCF8574 8 kleine induktive
> Lasten mit 3.3V betreiben. Daher dachte ich, ein Darlington-Treiber
> könne nicht schaden,

Doch, denn die haben ~1V Spannungsabfall, da bleiben von deinen 3,3V nur 
2,3 für die Magneten übrig.

> also habe ich das so zusammen gebaut wie im Anhang
> (aber mit 3.3V statt 12V) - was prinzipiell gut geht, jedoch scheint die
> Bibliothek der Software (WLED), die diesen PCF8574 oder der Baustein
> selbst beim Booten alle Ausgänge kurz HIGH zu schalten, was natürlich
> stört.

Das macht der IC.

> Induktive Lasten auf der anderen Seite (gegen GND) gehen gar nicht,
> wahrscheonlich brauche ich ein PNP Array, oder?

Ja.

> Ein Inverter wie 74HC240
> ist auch eine Lösung, vermute ich mal.
>
> Andererseits ist mein Platz recht begrenzt,

Wie begrenzt? 1cm^2 oder eine Europlatine?

> so dass ich nciht unbedingt
> 3 Bausteine verbauen möchte - gibt es bessere Ideen? Viel Strom brauche
> ich nicht, die 8 induktiven Lasten sind einfache Flacker-Kerzen-LED mit
> so einem kleinen Magneten zur Bewegung...

Wieviel Strom brauchen die? Der PCF8574 kann allein schon 25mA/Kanal 
schalten, wenn auch nur gegen GND.

https://www.mikrocontroller.net/articles/Port-Expander_PCF8574#Anwendung

Aber damit wird auch dein Problem beim Einschalten gelöst, denn dann 
sind alle Ausgänge HIGH = inaktiv.

Und ohne extra Pull-Up kann der so oder so nicht den ULN treiben. Siehe 
oben.

Ergo. Vergiss den ULN und schreibe was über den Strombedarf deiner 
Lasten.
Dann sehen wir weiter.

von Stephan S. (uxdx)


Lesenswert?

> Hallo, ich möchte an den Ausgängen eines PCF8574 8 kleine induktive
> Lasten mit 3.3V betreiben.
spezifiziere mal "kleine", viele Relais schalten schon mit wenigen mA

> Der TPIC2810D ist praktisch eine Kombination aus PCF und ULN in
> einem Gehäuse.
Der TPIC 2810 hat aber keine Freilaufdioden, die müsstest Du dann 
zusätzlich vorsehen (am besten direkt an den Relais)

von Falk B. (falk)


Lesenswert?

Stephan S. schrieb:
> Der TPIC 2810 hat aber keine Freilaufdioden, die müsstest Du dann
> zusätzlich vorsehen (am besten direkt an den Relais)

Nö. Am Ausgang des ICs.

Beitrag "Freilaufdiode auf Platine platzieren?"

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Stephan S. schrieb:
> Der TPIC 2810 hat aber keine Freilaufdioden

Sondern was besseres, ne 42V Z-Diode zum Gate. Bei Überspannung wird der 
FET wieder leitend und begrenzt.

von Tom W. (limpbiz)


Lesenswert?

Falk B. schrieb:

>
> Ergo. Vergiss den ULN und schreibe was über den Strombedarf deiner
> Lasten.
> Dann sehen wir weiter.

ca. 25-50mA pro Kanal, die Last schwankt. Das sind keine Relais, sondern 
kleine Spulen, dazu eine LEDs (Kerze)

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Tom W. schrieb:
> ca. 25-50mA pro Kanal, die Last schwankt. Das sind keine Relais, sondern
> kleine Spulen, dazu eine LEDs (Kerze)

Wird zuviel für den ollen PCF. Siehe Anhang. Mit halbwegs modernen 
P-Kanal MOSFETs wird das was. Die sind auch beim Einschalten sicher aus. 
Ob du den Typen nehmen willst, muss du entscheiden, ist halt SOT-363, 
das kann und will nicht jeder löten. Es gibt auch ähnliche 
Doppel-MOSFETs in SO8. Z.B. IRF7314.

von Gerhard O. (gerhard_)


Lesenswert?

Der TPIC6A595NE wäre möglicherweise ein Kanditat. Kann bis 50V und 0.35A 
per Ausgang, ist leicht zu steuern und gibt es in DIP-20 Gehäuse. Ist 
aber für serielle Ansteuerung vorgesehen. Ich habe damit etliche Relais 
geschaltet. Schutzdioden an den Relaispulen nicht vergessen. Sonst finde 
ich den vorgeschlagenen TPIC2810 recht brauchbar.

von Michael B. (laberkopp)


Lesenswert?

Tom W. schrieb:
> jedoch scheint die Bibliothek der Software (WLED), die diesen PCF8574
> oder der Baustein selbst beim Booten alle Ausgänge kurz HIGH zu schalten

Nein, das macht der stinkalte I/O 8051 kompatible IC von alleine.

Warum muss man immer solchen Schrott kaufen bloss weil er der 
allerbilligste ist.

Angenommen deine Relais brauchen 12V mit mehr als 20mA und weniger als 
150, geh halt mit der Zeit und nimm TPIC6B595 (braucht halt noch 
Freilaufdioden) oder TPL9202 (enthält Freilaufdioden) oder äquivalentes 
anderer Hersteller.

: Bearbeitet durch User
Beitrag #7531984 wurde vom Autor gelöscht.
von Tom W. (limpbiz)


Lesenswert?

Falk B. schrieb:
> Wird zuviel für den ollen PCF. Siehe Anhang. Mit halbwegs modernen
> P-Kanal MOSFETs wird das was. Die sind auch beim Einschalten sicher aus.
> Ob du den Typen nehmen willst, muss du entscheiden, ist halt SOT-363,
> das kann und will nicht jeder löten. Es gibt auch ähnliche
> Doppel-MOSFETs in SO8. Z.B. IRF7314.

Jau, hört sich vernünftig an. S08 ist auch nicht so meins, einen DIL mit 
8 Kanälen oder ein Breakoutboard - kennst du da auch etwas? Zur Not 
könnte ich auch einen bedrahteten MOSFET nehmen, muss ich halt eine 
Strippe mehr ziehen, was nicht sooo wild wäre.

von Tom W. (limpbiz)


Lesenswert?

Michael B. schrieb:
> Warum muss man immer solchen Schrott kaufen bloss weil er der
> allerbilligste ist.

Naja, wie ich ja schrieb: Der Portexpander, der von WLED unterstützt 
wird, ist da nun mal dieser "allerbillgste Schrott". Die ganzen TP... 
werden sicherlich besser sein, sind ja aber sicherlich anders 
anzusteuern.

von Peter D. (peda)


Lesenswert?

Gerhard O. schrieb:
> Schutzdioden an den Relaispulen nicht vergessen.

Total überflüssig.
Der TPIC6A595 hat genau den gleichen Schutz mit Z-Diode:
"The device contains a built-involtage clamp on the outputs for 
inductive transient protection."

von Bauform B. (bauformb)


Lesenswert?

Tom W. schrieb:
> Der Portexpander, der von WLED unterstützt
> wird, ist da nun mal dieser "allerbillgste Schrott". Die ganzen TP...
> werden sicherlich besser sein, sind ja aber sicherlich anders
> anzusteuern.

Kannst du denn wenigstens die Logik im Programm invertieren? Also, dass 
beim PCF High raus kommt, wenn die Kerzen aus sein sollen? Dann gibt's 
tatsächlich noch 8 P-Kanal-FETs im DIL-18: TBD62786APG (jedenfalls bei 
Digikey).

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Tom W. schrieb:
>> Warum muss man immer solchen Schrott kaufen bloss weil er der
>> allerbilligste ist.
>
> Naja, wie ich ja schrieb: Der Portexpander, der von WLED unterstützt
> wird, ist da nun mal dieser "allerbillgste Schrott". Die ganzen TP...
> werden sicherlich besser sein, sind ja aber sicherlich anders
> anzusteuern.

Sicher. Der PCF8574 läuft über I2C, die TPIC über SPI. Beides machbar, 
aber wenn man den Anpassungsaufwand klein halten will, bleibt man bei 
I2C.

Tom W. schrieb:
> Jau, hört sich vernünftig an. S08 ist auch nicht so meins, einen DIL mit
> 8 Kanälen oder ein Breakoutboard - kennst du da auch etwas? Zur Not
> könnte ich auch einen bedrahteten MOSFET nehmen, muss ich halt eine
> Strippe mehr ziehen, was nicht sooo wild wäre.

Naja, mit diesen Randbedingungen wird es eng, denn THT MOSFETs mit 
spezifizierter 3,3V Ansteuerung (Logic Level) sind EXTREM selten.
Also dann doch old school mit PNP Transistor. Siehe Anhang. 
Bastlerfreundliches TO92 Gehäuse. Den Basiswiderstand kann man 
senkrecht einlöten, um Platz zu sparen. Ebenso die Freilaufdiode.

von Tom W. (limpbiz)


Lesenswert?

Bauform B. schrieb:
> Kannst du denn wenigstens die Logik im Programm invertieren? Also, dass
> beim PCF High raus kommt, wenn die Kerzen aus sein sollen? Dann gibt's
> tatsächlich noch 8 P-Kanal-FETs im DIL-18: TBD62786APG (jedenfalls bei
> Digikey).

ja, das kann ich. Geht auch der TBD62786APG, den ich gerade bei ebay 
finde?

von Bauform B. (bauformb)


Lesenswert?

Tom W. schrieb:
> Geht auch der TBD62786APG, den ich gerade bei ebay finde?

Naja, andere Leute spielen Lotto ;) Obwohl, wer würde so einen Exoten 
fälschen?

von Tom W. (limpbiz)


Lesenswert?

Tom W. schrieb:
> Bauform B. schrieb:
>> Kannst du denn wenigstens die Logik im Programm invertieren? Also, dass
>> beim PCF High raus kommt, wenn die Kerzen aus sein sollen? Dann gibt's
>> tatsächlich noch 8 P-Kanal-FETs im DIL-18: TBD62786APG (jedenfalls bei
>> Digikey).
>
> ja, das kann ich. Geht auch der TBD62786APG, den ich gerade bei ebay
> finde?

Entschuldige, ich meinte TBD62083APG - den finde ich da gerade

von Bauform B. (bauformb)


Lesenswert?

Tom W. schrieb:
> ich meinte TBD62083APG

Naja, schalten würde er, aber genauso wie der ULN, also gegen das 
eigentliche Problem hilft er nicht

Tom W. schrieb:
> beim Booten alle Ausgänge kurz HIGH zu schalten

von Tom W. (limpbiz)


Lesenswert?

Falk B. schrieb:
> Also dann doch old school mit PNP Transistor. Siehe Anhang.
> Bastlerfreundliches TO92 Gehäuse. Den Basiswiderstand kann man
> senkrecht einlöten, um Platz zu sparen. Ebenso die Freilaufdiode.

Hab ich nachgestellt, hatte noch ein paar BC557. Musste an den P0 noch 
nen pullup 4,7k machen, sonst gab es bei AUS nur Geflacker. In der 
Software die Logik umgestellt. Das Problem ist leider wieder da, beim 
Booten sind die ca 1s an.

von Gerald B. (gerald_b)


Lesenswert?

Was für eine Art µC sitzt denn vor deinem PCF? Ein Arduinoboard oder ein 
ESP irgendwas? Deren Bootloader sorgen beim Start für unkontrolliertes 
Bitwackeln. Bei einem Arduino kannst du den Bootloder runterschmeißen, 
damit der Spuk aufhört. Ansonsten wie oben angesprochen, ein IC mit 
Enablle Eingang, oder einen Logiclevel P-Kanal FET in die Plusleitung 
der Verbraucher und dann erst verzögert entriegeln. Würde ich ganz 
oldschool mittels RC-Glied und nicht per Software, die wieder 
"interessante Nebenwirkungen" produzieren kann.

von Falk B. (falk)


Lesenswert?

Tom W. schrieb:
>> Also dann doch old school mit PNP Transistor. Siehe Anhang.
>> Bastlerfreundliches TO92 Gehäuse. Den Basiswiderstand kann man
>> senkrecht einlöten, um Platz zu sparen. Ebenso die Freilaufdiode.
>
> Hab ich nachgestellt, hatte noch ein paar BC557. Musste an den P0 noch
> nen pullup 4,7k machen, sonst gab es bei AUS nur Geflacker.

Dann stimmt was nicht, das Ding hat interne Pull-Ups. Prüfe deinen 
Aufbau und die Anschlüsse.

> In der
> Software die Logik umgestellt. Das Problem ist leider wieder da, beim
> Booten sind die ca 1s an.

Das ist dann aber eher ein Softwareproblem, denn das Datenblatt sagt.

"At power-on the I/Os are HIGH."

D.h. mit der Endstufe sind die Lasten stromlos. Mach mal einen Test. 
Klemm den I2C Bus ab und schalte die Stromversorgung ein. Dann sollten 
alle Ausgänge vom IC HIGH sein. Dann klemm den I2C Bus wieder an und 
test nochmal. Klemm ein Multimeter an einen der Ausgänge vom IC. Wenn 
die 1s HIGH sind, dann durch eine falsche Initialisierung in deiner 
Software.

von Falk B. (falk)


Lesenswert?

Gerald B. schrieb:
> Was für eine Art µC sitzt denn vor deinem PCF? Ein Arduinoboard oder ein
> ESP irgendwas? Deren Bootloader sorgen beim Start für unkontrolliertes
> Bitwackeln. Bei einem Arduino kannst du den Bootloder runterschmeißen,
> damit der Spuk aufhört.

Unsinn! Kein Bootloader wackelt aus Langeweile mit den IOs! Und selbst 
wenn, dann wird daurch mal sicher KEIN I2C Schreibzugriff ausgelöst!

von Gerhard O. (gerhard_)


Lesenswert?

Moin,

Ich kann das bestätigen. Ich habe kürzlich ein Projekt mit einem Nano 
und einem PCF8575 16-bit Modul durchgezogen. Alle aktiven Ausgänge 
schalten ausnahmslos auf Low. Da gibt es beim Einschalten nicht die 
geringsten Anomalien. Das PCF Modul weckt ja ohnehin mit allen IO-Pins 
hoch und Pull-ups eingeschaltet auf. Da kann von vornherein nichts 
passieren. Nach der Initialisation funktioniert alles so wie vorgesehen. 
Ein Port liest vier Schalter und betreibt vier LEDs und der andere Port 
emuliert den 8-bit Datenbus für eine Parallel Centronics Drucker 
Schnittstelle. Das funktioniert alles bestens und 100% zuverlässig. Der 
Drucker hat intern 1K nach 5V an seinen Dateneingängen.

Wenn man einen ULN2003 wirklich damit(8574)  betreiben will, schlage ich 
vor mittels R-Network (1Kx8) alle IO-Pins durch einen uC IO Pin nach der 
Initialisierung dann zu gegebener Zeit hochschalten. Das stellt sicher, 
daß die schwachen Pull-ups keine unerwartete Späße anstellen. Dann kann 
man mit Open Drain auch den 2003er sicher schalten. Alles andere mit dem 
2003 wäre Pfusch.

Der PCF857x ist trotz seiner Einfachkeit durchaus brauchbar. Für alles 
andere ziehe ich die diversion PCAxxxx IO expander und auch die 
MCP23xxxx Familie und einige andere Gesellen.

Gerhard

von Thomas S. (Firma: Chipwerkstatt) (tom_63)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Stephan S. schrieb:
>> Der TPIC 2810 hat aber keine Freilaufdioden, die müsstest Du dann
>> zusätzlich vorsehen (am besten direkt an den Relais)
>
> Nö. Am Ausgang des ICs.
>
> Beitrag "Freilaufdiode auf Platine platzieren?"

Falk Du bist am Holzweg. Freilaufdioden gehören dahin, wo die Störung 
entsteht. Und das ist an der Induktivität.

von Falk B. (falk)


Lesenswert?

Thomas S. schrieb:
>> Beitrag "Freilaufdiode auf Platine platzieren?"
>
> Falk Du bist am Holzweg. Freilaufdioden gehören dahin, wo die Störung
> entsteht. Und das ist an der Induktivität.

Die Diskussion war lang und anstrengend. Deine Fraktion hat dabei 
verloren ;-)
Die Störung entsteht am Schalter, welchen den Stromfluß unterbricht. 
Ebenso ist der durch die Induktionsspannung gefährdet. Die Spule nicht.

von Thomas S. (Firma: Chipwerkstatt) (tom_63)


Lesenswert?

Falk B. schrieb:
> Thomas S. schrieb:
>>> Beitrag "Freilaufdiode auf Platine platzieren?"
>>
>> Falk Du bist am Holzweg. Freilaufdioden gehören dahin, wo die Störung
>> entsteht. Und das ist an der Induktivität.
>
> Die Diskussion war lang und anstrengend. Deine Fraktion hat dabei
> verloren ;-)
> Die Störung entsteht am Schalter, welchen den Stromfluß unterbricht.
> Ebenso ist der durch die Induktionsspannung gefährdet. Die Spule nicht.

Die Störung entsteht an der Spule und nirgendswo anders.
Hersteller wie Eberle, Finder, und auch die Elektronik Gemeinde (außer 
Dir) weiß dass.
Bau eine Messschaltung auf und messe mit Oszi.

Erzähl hier nicht wieder 'theroretischen' Quatsch, wovon DU keine Ahnung 
hast.

von Michael B. (laberkopp)


Lesenswert?

Falk B. schrieb:
> Die Diskussion war lang und anstrengend. Deine Fraktion hat dabei
> verloren ;-)

Thomas S. schrieb:
> Erzähl hier nicht wieder 'theroretischen' Quatsch, wovon DU keine Ahnung
> hast.

Wie üblich wenn 2 behinderte Rechthaber aufeinander einschlagen.

Die Störungen sind entweder der Spannungssprung auf der Leitung, oft nur 
5V, oder die Stromänderung in der Leitung, vielleicht 100mA, je nach dem 
wo die Freilaufdiode sitzt.

Welche Störung einem lieber ist und weniger Probleme macht hängt 
natürlich von den konkreten Spulendaten ab, aber auch und vor allem von 
dem was überhaupt gemessen wird, kapazitive oder induktive Kopplung.

Wenn die Leitung lang ist hilft Abschirmung gegen den Spannungssprung 
und verdrillen gegen die Stromänderung.

Keiner von euch hat Recht, ihr seid nur 2 Dumme.

von Falk B. (falk)


Lesenswert?

Thomas S. schrieb:
>> Die Diskussion war lang und anstrengend. Deine Fraktion hat dabei
>> verloren ;-)
>> Die Störung entsteht am Schalter, welchen den Stromfluß unterbricht.
>> Ebenso ist der durch die Induktionsspannung gefährdet. Die Spule nicht.
>
> Die Störung entsteht an der Spule und nirgendswo anders.
> Hersteller wie Eberle, Finder, und auch die Elektronik Gemeinde (außer
> Dir) weiß dass.
> Bau eine Messschaltung auf und messe mit Oszi.
>
> Erzähl hier nicht wieder 'theroretischen' Quatsch, wovon DU keine Ahnung
> hast.

Du solltest es mit Lesen und Denken versuchen. All das wurde lang und 
breit in der oben verlinkten Diskussion diskutiert, incl. praktischer 
Messungen MEINERSEITS!

von Falk B. (falk)


Lesenswert?

Michael B. schrieb:
> Keiner von euch hat Recht, ihr seid nur 2 Dumme.

Jaja, der allwissende Laberkopp wieder. Geh zum Arzt. Ganz ehrlich.

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.