PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PCF8574 + UDN2981 + Relais



geronet
05.01.2007, 23:10
Hallo, bin neu hier ;)

Ich arbeite gerade an einem Projekt, das ich später noch vorstellen will.
Nun bräuchte ich so etwas wie eine Relaisplatine, um verschiedene Verbraucher zu steuernm und zwar mit mehreren I²C Busbausteinen (PCF857), die von einem Atmega32 kontrolliert werden. Die Relais sind einfache 12V Relais.

Um mir die ganze Löterei etwas zu vereinfachen habe ich div. Foren durchsucht und folgende Lösung ausgearbeitet:
http://www.directupload.net/images/070105/3ZPnqZi6.jpg

Dabei sind mir folgende Fragen eingefallen:

A) Wenn man die Spannung einschaltet, ist ja das Problem beim PCF8574 dass dieser die Portausgänge auf HIGH schaltet, und somit bei einer normalen Transistor-Relaisschaltung das Relais anziehen würde. Das ist aber auf keinen Fall erwünscht und somit bin ich auf den ULN2803 gekommen.
Da dieser aber genau das gleiche wie ein normaler Transistor macht hab ich den UDN2981 gefunden, der nicht invertiert ist, dafür aber statt der Masse die Spannung (12V) schaltet.
In der oben gezeigten Schaltung dürfte somit beim Einschalten der Versorgung kein Relais anziehen, erst wenn man im PCF8574 ein Bit auf '0' setzt zieht das entsprechende Relais an. Stimmt das so?

B) Das die restliche Schaltung mit 5V arbeitet und die Relais mit 12 stört weiter nicht, muss ja so funktionieren oder nicht?

Schönen Dank auch und Grüsse, Stefan

PS: Datenblatt des UDN: http://www.reichelt.de/?SID=202zJ5m6wQARQAAGt@COs57bb01898383e81711632c87 45208166;ACTION=7;LA=6;OPEN=1;INDEX=0;FILENAME=A20 0%252FUDN2981%2523ALG.pdf

Tido
05.01.2007, 23:22
Hallo

und sorry, aber vielleicht habe ich nicht genau hingesehen:
Wo siehst du, daß die Treiber bei 'low' schalten???

Tido

geronet
05.01.2007, 23:48
Tun sie das nicht? Dachte ich zumindest weil das Symbol im Datenblatt nicht invertiert zeigt und beim ULN es aber so ist.

Wie kann ich sonst das Problem mit dem Einschalten beseitigen, gibt es da vielleicht einen passenden Treiberbaustein?

Ratber
06.01.2007, 00:06
Ja,das sehe ich auch nicht.


Die Stufe ist schon vom Symbol her nicht invertierend und wenn man ins Datenblatt schaut dann sieht eine Stufe so aus.

http://img453.imageshack.us/img453/4797/treibertk5.th.jpg (http://img453.imageshack.us/my.php?image=treibertk5.jpg)

Recht Simpel oder ?


@Geronet

Der ULN2803 ist ein Invertierender Lowside Treiber und der UDN 2981 ein nichtinvertierender Highsidetreiber.
Der Effekt ist der gleiche.
Beide schalten bei High am Eingang durch.


Was du brauchst ist entweder einen nichtinvertierenden Lowsidetreiber oder einen invertierenden Highsidetreiber.

Wenn du da nix findest dann tuts auch ein einfacher Inverter zwischen 2803/2981.




Tun sie das nicht? Dachte ich zumindest weil das Symbol im Datenblatt nicht invertiert zeigt und beim ULN es aber so ist.

Das Symbol ist schon richtig.
Denk mal ganz genau nach.

Der 2803 ist invertierend dargestellt und das Ausgangssignal geht ja auch nach Masse (Low) wenn der Eingang "High" ist.

Beim 2981 das gleiche nur umgekehrt.
Der Ausgang wird High wenn derEingang High ist.
Er ist nicht invertierend.

Den Rest hab ich ja schon gesagt.

Tido
06.01.2007, 10:09
Hallo,

du könntest z.B. einen pnp-Transistor in die gemeinsame Masseleitung der Relais zum GND-Anschluß schalten.
Dieser sperrt beim Einschalten (sofern der Port, an dem er am mC angeschlossen ist, beim Einschalten auch High ist) und nachdem der 8574 initialisiert (und damit alle Ausgänge 'low') ist schaltest du den Transistor durch.

Tido

geronet
06.01.2007, 10:50
Danke für die Antworten, jetzt habe ich das Prinzip vom ULN verstanden ;)

Die Transistorlösung ist aber eher ein workaround um das eigentliche Problem herum...

Könnte man denn die Ausgänge vom PCF mit Pulldown-Widerständen am Start auf Low-Pegel herunterziehen oder ziehen die dann zuviel Strom bzw. kriegt er den Pegel nicht mehr hoch genug?

Andere Lösungsmöglichkeit:

Der MAX7300 z.B. hat beim Starten alle Ausgangsports auf Input ohne Pullup gestellt (im Shutdown mode), würde der ULN mit diesem (undefiniertem?) Pegel durchschalten? Würden Pulldowns in diesem Fall helfen?

Grüsse, Stefan

Datenblatt MAX7300: http://datasheets.maxim-ic.com/en/ds/MAX7300.pdf

Tido
06.01.2007, 12:07
Danke für die Antworten, jetzt habe ich das Prinzip vom ULN verstanden ;)

Die Transistorlösung ist aber eher ein workaround um das eigentliche Problem herum...

Könnte man denn die Ausgänge vom PCF mit Pulldown-Widerständen am Start auf Low-Pegel herunterziehen oder ziehen die dann zuviel Strom bzw. kriegt er den Pegel nicht mehr hoch genug?


Nein, das würde nur funktionieren, wenn der Pulldown-Widerstand sehr viel kleiner wäre als der Widerstand des PCF-Ausgangs und ein so kleiner Widerstand würde den Port zerstören.
Wenn du z.B. einen 10K-Pulldown nimmst, so liegt beim Einschalten der Betriebsspannung nach wie vor +5V am Ausgang und damit am ULN (und am Widerstand. Der Widerstand ist dann nur ein parallelgeschalteter 'Verbraucher'.

Den MAX hab' ich mir nicht angeschaut.

MfG
Tido

kalledom
06.01.2007, 12:07
Die logische Konsequenz ist, das Signal, welches nach dem Einschalten vorliegt, so anzupassen, daß es für den ULN2803 / UDN2981 paßt, also zu invertieren.
Dazu verwende ich den 74??540, 8 invertierende Leitungstreiber. Der 540 ist pin-kompatibel mit dem 541, der 8 nicht-invertierende Treiber hat.
Um sicher ein High-Signal zu haben, setze ich noch 8 PullUp-Widerstände an die I/O-Pins (SIL9-8 10k).

Ratber
06.01.2007, 12:11
Könnte man denn die Ausgänge vom PCF mit Pulldown-Widerständen am Start auf Low-Pegel herunterziehen oder ziehen die dann zuviel Strom bzw. kriegt er den Pegel nicht mehr hoch genug?

Andere Lösungsmöglichkeit:

Der MAX7300 z.B. hat beim Starten alle Ausgangsports auf Input ohne Pullup gestellt (im Shutdown mode), würde der ULN mit diesem (undefiniertem?) Pegel durchschalten? Würden Pulldowns in diesem Fall helfen?



Denk mal genau nach was du da gerade vorschlägst.

Du willst einen Ausgang der beim Powerup auf High steh mit gewalt auf Low ziehen.
Und wie soll er dann je wieder High werden ?


Mach es doch wie viele andere auch.

Zwischen PCF8574 und dem folgenden Baustein einen Inverter (zb .74HCT240/540 etc.) dann sind deine Relais beim Einschalten "Aus".

Im Programm arbeitest du dann einfach mit Inverser logik



Edit: Kalle war schneller

linux_80
06.01.2007, 13:35
Hallo,
es gibt da doch das RN-Relais Board, da ist auch ein PCF8574 und danach ein UDN2981, dort is es so, das nach dem UDN2981 Pulldowns (10k) an den Ausgängen sind.
Ich hab dieses Board nicht, kann deshalb nicht sagen wie es sich verhält.

zum Board:
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=67&products_id=22

JonnyP
06.01.2007, 13:46
Ich würde mal die Relais an +12Volt hängen und jeweils die Masse schalten. Dafür sind z.B. die ULN2803 auch vorgesehen. Und die Freilaufdiode ist auch schon mit drin, solange die Relais nicht zu weit entfernt sind.

Ratber
06.01.2007, 14:03
Hallo,
es gibt da doch das RN-Relais Board, da ist auch ein PCF8574 und danach ein UDN2981, dort is es so, das nach dem UDN2981 Pulldowns (10k) an den Ausgängen sind.
Ich hab dieses Board nicht, kann deshalb nicht sagen wie es sich verhält.

zum Board:
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=67&products_id=22


Die Pulldownwidserstände nach dem UDN2981 sind nur für die FET's da damit die Gates ein "Low" auch mitbekommen da der UDN2981 als Open Collector ohne Pulldown ausgelegt ist.



@Jonny P

Das ist nicht Thema.

Es geht darum das der PCF8574 beim Powerup die Portpinne High Schaltet und so ein nachgeschalteter ULN2803 oder UDN2981 erstmal alle Verbraucher an den Ausgängen durchschalten.(In diesem Falle alle Relais.) was unerwünscht ist.

Demnach muß man entweder einen Baustein nehmen wie zb. ich ihn oben bechrieben haben oder das Signal hinter dem PCF8574 invertieren (Beispiele oben von Kalledom oder meinereiner)

linux_80
06.01.2007, 14:18
Dann wollte nur noch sagen, dass beim RN-Relais die Pulldowns aber bei allen Ausgängen sind, auch den Relais, nicht nur den FETs.

geronet
06.01.2007, 15:59
Kennt denn jemand einen "nichtinvertierenden Lowsidetreiber" oder ist die Lösung mit dem MAX7300 und Pulldowns dahinter auch möglich?

Ratber
06.01.2007, 23:02
Dann wollte nur noch sagen, dass beim RN-Relais die Pulldowns aber bei allen Ausgängen sind, auch den Relais, nicht nur den FETs.

Ist das denn wirklich so schwer zu durchschauen ?

Man hätte die 5 Widerstände auch weglassen können und die drei die für die Fets übrig sind einzeln setzen können.

Dann wäre es vieleicht für dich einleuchtender gewesen aber aus Sicht des Entwicklers ist das nicht so der Brüller.
Möchte sich dieser bei der Aufteilung anders entscheiden dann müsste er die Widerstände ebenfalls ändern und käme eventuell in Platznot.
So verrichtet ein Widerstandsnetzwerk platzsparend seinen Dienst für alle 8 Ausgänge.
Drei davon sind derzeit für die Fets nützlich und die anderen 5 Stören weder den Relais noch sonst jemanden.



Jetzt den Durchblick ? ;)

linux_80
07.01.2007, 01:21
Ist das denn wirklich so schwer zu durchschauen ?
Ja, wie soll man denn das wissen, wollt' ja nur 'nen Tipp abgeben.


Jetzt den Durchblick ? ;)
Nein, aber wer hat das schon. =P~




Also alles Fake, die Arrays lagen auch schon lange genug rum :mrgreen:

PICture
07.01.2007, 02:07
Hallo!

Vielleicht wäre es am einfachsten, nach dem Eischalten, die Gnd Leitung für die Relais für bestimmte Zeit zu unterbrechen ?

Die Zeit lässt sich mit RC einstellen und der T (Darlington ?) muss den höchsten Strom für die Relais "aushalten". Die Diode (D) beschleinigt nur das Entladen des Elko's nach dem Ausschalten und kann weggelassen werden.

MfG :)



VCC
+
|
VCC +-------------------+
+ | |
| .---. .---.
+--+ | | | |
| | | | | |
| .-. '---' '---'
D - | |R | |
^ | | +------ - - - ------+
| '-' 10R |
| | ___ |/
+--+-|___|-| T
|+ |>
=== |
C /-\ ===
| GND
===
GND

Ratber
07.01.2007, 02:33
@Linux

Harrrrrr :D




@Picture

Nette Idee aber platzmäsig aufwändiger als einfach nen Hex-Inverter wie oben beschrieben einzusetzen aber da muß jeder selbser wissen wie er es denn gerne hätte.

geronet
07.01.2007, 14:14
Hab eine andere Lösung gefunden, statt mechanischen Relais einfach Triacs mit einem Optokoppler ;)

http://www.directupload.net/images/070107/XTZxNTb8.jpg

Der PCF liefert beim einschalten +5V am Ausgang, somit schaltet das Triac nicht durch. Erst bei LOW-Pegel liefert dieser max. 25 mA.
Der Strom wird durch den Vorwiderstand auf 15 mA begrenzt und fließt durch den Optokoppler und die Led (zwei Leds hintereinander).

Versorgungsspannung: 5.0V
Optokoppler Spannung: 1.3 V
Led Spannung: 1.9 V
Strom: 15mA
5 - (1.3 + 1.9) / 0.015 = 120 Ohm

Ist das richtig so?

PICture
07.01.2007, 15:06
Hallo geronet!

Dein Schaltplan sieht sehr gut aus ! Wenn ich mich nicht taüsche, kannst Du Dir die R25, C20 ersparen (aber nur ausser Induktiven Lasten), da der MOC 3041 beim Nulldurchgang der Spannung schaltet. Wegen unbekannter Lastspannung, kann ich die grössen der R23 und R24 nicht beurteilen.

MfG

geronet
07.01.2007, 15:44
Die R23 und R24 hab ich aus dem Datenblatt vom MOC3041, dort werden auch 230 Volt verwendet.

Geschalten werden Pumpen und kleine Motoren bis 1 Ampere, den Snubber muss ich nicht sofort einlöten, hauptsache die Anschlüsse in der Platine sind vorhanden falls ich merke dass es nicht ohne geht.

Wofür ist der Snubber genau?
Damit der Triac länger lebt?
Weniger Störungen beim Ein/Ausschalten auf dem Netz?
Damit der Triac nicht einfach so einschaltet?

R25 u. C20 habe ich nach den Vorgaben dimensioniert, die in http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.25.1 stehen.
Im Datenblatt vom MOC3041 sind halt 39 Ohm und 0.01 µF drin..

PICture
07.01.2007, 16:03
der Snubber dämpft die Störungen beim Ein/Auschalten vor allem bei Induktiver Last (z.B. ein Motor). Ich würde sie zuerst anlöten, und dann erst ablöten und kontrollieren, ob die Störungen sich ändern. Die Werte für R25 und C20 aus dem Datenblatt sind üblich, Deine nicht. Die Störungen kann man sehr gut hören (als 50Hz Brumm) mit einem Radio im Langwellenbereich auf einer Frequenz wo kein Sender empfangen wird.

MfG :)

geronet
07.01.2007, 16:32
Oh danke für die schnelle Antwort ;)

Ratber
07.01.2007, 17:19
Hab eine andere Lösung gefunden, statt mechanischen Relais einfach Triacs mit einem Optokoppler ;)

http://www.directupload.net/images/070107/XTZxNTb8.jpg

Der PCF liefert beim einschalten +5V am Ausgang, somit schaltet das Triac nicht durch. Erst bei LOW-Pegel liefert dieser max. 25 mA.
Der Strom wird durch den Vorwiderstand auf 15 mA begrenzt und fließt durch den Optokoppler und die Led (zwei Leds hintereinander).




Ja,du hast dir mit dem Optokoppler einen Inverter geschaffen.
Im Grunde das was Kalle und ich schon vorgeschlagen hatten.

Aber so gehts natürlich auch und ohne Klackende Relais ist's auch nett.




Zum Snubber:

Den würde ich nicht einsparen denn manchmal ist Geiz ganz und garnicht geil.

geronet
08.01.2007, 17:37
Geiz ist total blöd, das kenn ich schon.
Ist nur die Frage, wie muss der Widerstand und der Kondensator dimensioniert sein. An den Triacs hängt entweder eine Pumpe mit etwa 0.5 Ampere dran, die aber selbst einen Phasenanschnitt/Wellenpaketsteuerung macht. Sonst eigentlich nur kleine Ventilmotoren etc.

So ein X2 10nF ist nämlich ganz schön groß und braucht viel Platz..

Ratber
08.01.2007, 18:19
10nF ?

Hab ich jetzt was verpasst ?

Hol doch bitte nochmal kurz aus was du meinst,ich grad nen Hänger.

geronet
08.01.2007, 19:19
Na ja in dem Datenblatt vom MOC3041 ist beim Beispiel 39 Ohm und 0.01 µF angegeben, und 0.01 µF sind 10 nF oder nicht?

Nach der dse-FAQ wären es aber 330 Ohm und 0.1 µF aber PICture meinte die wären falsch..

Ratber
08.01.2007, 20:29
Ja,die Berechnung eines Snubbers ist nicht so einfach wie man es oft darstellen möchte.

Mit 39 Ohm und 0.1µF bin ich auch nicht Glücklich.

PICture
09.01.2007, 07:06
Hallo geronet!

Ich habe nicht gemeint das die von Dir berechnete Werte falsch sind, sondern das die nicht üblich sind. :)

MfG

amozi
11.01.2007, 14:54
Hallo,

gibt es ein ähnliches Bauelement wie UDN2981A, das die Ausgänge addressiert durchschaltet. Das heißt, an jedem Eingang liegt ein Rechtecksignal(125kHZ) und mit zusätzlichen 3 TTL-Eingängen(8) sollte nur ein Ausgang mit dem Eingangssignal durchgeschaltet werden.

Danke

Ratber
11.01.2007, 15:04
Nicht das ich wüßte aber nen Decoder (zb. 74154/159 usw.) kannste dir doch selber davor setzen.
Wenn du leitungen sparen willst und die Schaltfolgen nicht gerade im µs bereich liegen dann gehts bei 8 Bit auch nequem mit nem Schieberegister oder über I2C mit zb. nem PCF8574 usw.

amozi
11.01.2007, 15:15
Hallo Ratber,

was meinst du mit davor setzen. Wie soll ich mit einem Decoder nicht TTL-fähige Signale schalten. Das Rechtecksignal kommt vom Reader 0-9V mit 68mA.

Ratber
11.01.2007, 15:33
Ja,Informationen sind das Salz in der Lösungssuppe.
Von den 0-9V hast du ja nix gesagt.

Du willst also ein Nicht-TTL-Signal Schalten und Auf mehrere Ausgänge Schalten (Demux)
Richtig ?


Gut,den Dekoder können wir ja lasen nur das Schaltende Element müßte dein Signal möglichst sauber weitergeben.

Da bietet sich ein Analogschalter an wie zb. der 4066 aber mit 9V/68mA müßte man einen anderen nehmen der besser passt.

Wenn dein Signal gepolt und eine Galvanische Trennung nicht erforderlich ist dann gehen auch gut Mosfets dafür.

amozi
11.01.2007, 15:51
Du hast den Nadel auf den Kopf getroffen. Es stimmt, dass ich eigentlich nur ein Rechtecksignal sauber (mit identischen Eigenschaften wie Frequenz,Amplitude) auf mehrere Ausgänge addressiert durchschalten möchte, also es sollte immer nur ein Ausgang wie bei einem Multiplexer geschaltet sein. Da dieses Signal in einem Schwingkreis eingespeisst wird, ist eine galvanische Trennung erforderlich.

Ratber
11.01.2007, 16:04
Ja,gut wenn es nur ein Rechteck ist dann ist das ja kein Problem.

Das Signal wird über Transen oder Fets geschaltet ,der Decoder übernimmt die Verteilung und die Galvanische Trennung kannst du entweder mit einem Koppler vorher oder mit entsprechend vielen hinter dem Verteiler machen.

Technisch sehe ich da kein so großes Problem sofern die Frequenz nicht zu hoch wird.

amozi
12.01.2007, 00:08
Hallo nochmals,

ich habe mich seit 2-3 Stunden fast tod gegooglet, aber leider noch keinen Analog-Multiplexer gefunden, der als Eingangs- und Ausgangsstrom min. 68mA zulässt. Hat vielleicht jemand einen Tipp für mich um die Suche vielleicht verkürzen zu können. Ein Schlagwort würde auch ausreichen (ich habe Entwicklungsdruck).

Im Voraus vielen Dank

Ratber
12.01.2007, 00:16
Ja,das glaub ich das da wenig bis garnix zu finden ist.

Edit:

Hab gerade mal etwas Gegoogelt.

Der DG405 (4-Fach) mit 20 Ohm und einem Analogbereich von +-15V und 100ns Schaltzeit wäre vieleicht was.

Schneller ist der HI201HS (4-Fach) von Harris mit 30ns Schaltzeit ,+-15V Analogbereich.
Dafür hat der aber einen Widerstand von 30 Ohm.

amozi
12.01.2007, 00:57
Danke Ratber. Hört sich gut an. Die 100ns Schaltzeit bezieht sich angeblich zum Durchschalten des Rechtecksignals anhand Logik-Vin. Das heißt, dass RS eigentlich ohne Verzögerung (125khz) durchgereicht wird, oder? 100ns würde mir auch dicker reichen.

Ratber
12.01.2007, 01:12
Ja die Schaltzeit ist nur die Reaktionszeit des Schalters.

Welche Banbreite der Schalter hat mußt du im Datenblatt nachschauen.
Ob die Teile auch gut erhältlich sind weiß ich aber nicht.

geronet
13.01.2007, 13:55
Ich hab noch ne Frage:

Für den C20 mit 100nF, sollte man da lieber einen "Funkentstörkondensator" wie den
http://www.reichelt.de/bilder//web/bauelemente/B300/FUNK_C.jpg
http://www.reichelt.de/?SID=202zJ5m6wQARQAAGt@COs57bb01898383e81711632c87 45208166;ACTION=3;LA=2;GROUPID=3157;ARTICLE=8060

oder einen von WIMA
http://www.reichelt.de/bilder//web/bauelemente/B300/!MP3X2.jpg
http://www.reichelt.de/?SID=202zJ5m6wQARQAAGt@COs57bb01898383e81711632c87 45208166;ACTION=3;LA=2;GROUPID=3157;ARTICLE=32018

oder nen Standard wie den
http://www.reichelt.de/bilder//web/bauelemente/B300/!MKH.jpg
http://www.reichelt.de/?SID=202zJ5m6wQARQAAGt@COs57bb01898383e81711632c87 45208166;ACTION=3;LA=2;GROUPID=3156;ARTICLE=12278 verwenden?

Ratber
13.01.2007, 17:12
.
Wima hat einige PRoduktgruppen die auf unterschiedliche Anfordrungen zugeschnitten sind.

Den MKH (Der Letzte) kannst du für die Aufgabe knicken,ist nicht geeignet.

Die anderen Beiden sind für die gleiche Klasse und genau auf diese Aufgabe zugeschnitten.

geronet
13.01.2007, 17:33
Dankeschön!

Welchen Typ könnte man für C1 bei der Schaltung hier verwenden?
https://www.roboternetz.de/phpBB2/viewtopic.php?p=119519#119519

Und welche Spannung muss C2 max. aushalten?

Ratber
13.01.2007, 19:13
In der Schaltung von Manf fliessen ja kein hohen Energien also müssen C1 und C2 nur ausreichend spannungsfest sein weil aus dem Leitungsnetz (230V~) recht oft hohe Spitzen kommen.

Dafür sollte der Kondensator entsprechend gerüstet sein.

Ich persönlich nehme für sowas die MKS-4 Reihe von Wima.
Die kosten zwar einige Cent mehr aber dafür gibts da keine bösen Überraschungen.
Fürs Netz nehme ich welche mit 250V für Wechselspannung (Bitte drauf achten.Es steht auch der Gleichspannungswert drauf.Kann man verwechseln.)




C2 muß im Zweifelsfalle Netzspannung vertragen können also ebenfalls für mind. 250V~

Ich hab jetzt nicht das ganze Topic da gelesen aber 100µF sind viel zu groß nur für ne einfach Netzmeldung.
1-2µF sind da Satt und genug.
Die bekommt man übrigens auch als Folientyp so das man sich um die begrenzte Lebensdauer und die besondere Temperaturempfindlichkeit eines Elkos keine Gedanken mehr machen muß.