Moin, ich habe eine Schiebergister Platine mit 4x 74HC595 die 32 Relays ansteuern soll. nun ist es so, daß die Relays in einem Schaltschrank kommen und Stromstoßschalter schalten sollen. Ich möchte die Relays per ULN2803A ansteuern, jedoch muss es eine Möglichkeit geben, diese komplett zu deaktivieren. Im Falle eines Stromausfalls würden an den Schieberegistern beim erneuten einschalten der Betriebsspannung wilde Werte anstehen. Nun wäre es fatal, wenn dann die Relays schon schalten. Daher sollte ein Timer mit ca. 3-5sek. die Relays disablen. In dieser Zeit wird der µC dann ein definiertes Bitmuster von lauter Nullen reinschieben. Die Frage ist, wie kann man die Relays gemeinsam disablen? Eine etwas aufwendige Idee wäre, 4x 74245 vor die ULNs zu setzen, da diese ja einen Enable Eingang haben... habt Ihr noch einen einfachere Idee? Gruß, Wolfram.
Hallo, mega-hz schrieb: > Ich möchte die Relays per ULN2803A ansteuern, jedoch muss es eine > Möglichkeit geben, diese komplett zu deaktivieren. Der 74HC595 hat doch einen OE-Eingang, kannst du den nicht nutzen? rhf
mega-hz schrieb: > Die Frage ist, wie kann man die Relays gemeinsam disablen? Indem du ihnen die Versorgungsspannung nicht einschaltest.
mega-hz schrieb: > Daher sollte ein Timer mit ca. 3-5sek. die Relays disablen. Das darf kein Timer sein, das muss der uC selber machen. Was wäre, wenn der uC nicht startet oder neue Firmware bekommt? Außerdem gilt für so einen Timer ja das gleiche wie für die Schieberegister -- wie verhält sich der nach einem Stromausfall? Unabhängig davon: kann man die Stromstoßrelais nicht direkt ansteuern? Ein disable braucht man natürlich trotzdem, aber 32 Relais weniger fände ich schon attraktiv.
mega-hz schrieb: > Die Frage ist, wie kann man die Relays gemeinsam disablen? Wozu hat der 74HC595 wohl einen Eingang MR/SRCLR, für Master Reset ? Der kommt zusammen mit RCLK an den Power-On-Reset und alles ist gut. Da RCLK auch bedient werden soll, muss dort ein UND-Gatter dazwischen. Wahlweise wird bei Power-On-Reset ein FlipFlop gesetzt, dasss OE abschaltet und erst durch den uC wieder eingeschaltet wird. Die Kombination 74HC595 + ULN2803 ist natürlich aus der Steinzeit, man nimmt eher TPIC6B595.
mega-hz schrieb: > ich habe eine Schiebergister Platine mit 4x 74HC595 die 32 Relays > ansteuern soll. Was für "Relays" denn? Meinst du tatsächlich elektromechanische Relais, die einen Treibertransistor brauchen? > nun ist es so, daß die Relays in einem Schaltschrank kommen und > Stromstoßschalter schalten sollen. Warum steuerst du mit den 595 Ausgängen nicht einfach eine Transistorstufe an, die die Stromstoßschalter direkt ansteuert? So ganz ohne zusätzliche Relays dazwischen? mega-hz schrieb: > habt Ihr noch einen einfachere Idee? Zeichne mal in einem Schaltplan vom Schieberegister-Ausgang bis zum Stromstoßschalter auf, was dir so vorschwebt. Mit Versorgungspotentialen und weiteren brauchbaren Informationen wie Bauteilbezeichnungen und -bestellbezeichnungen (besonders interessant ist hier z.B. der nicht näher definierte Stromstoßschalter). Dann findet sich sicher ganz schnell eine Lösung.
:
Bearbeitet durch Moderator
Ich tu's auch nicht knowen, wollte aber mal'n reply angesichts des sharpen denglish leaven o/
Michael B. schrieb: > Die Kombination 74HC595 + ULN2803 ist natürlich aus der Steinzeit, man > nimmt eher TPIC6B595. Der reicht leider nicht, da die Relays 5V/250mA pro Stück ziehen. Am Relays Typ kann ich nix ändern, ist so vorgegeben. Die Stromstoßschalter direkt anzusteuern fällt aus diesem Grund auch weg. Der einfachste Weg ist wohl tatsächlich die Betriebsspannung der Relays mittels MOSFET zu trennen, diesen und dem CLR vom 595 mit einem Watch-Dog IC bei ankommenden Takt vom µC (NEO-PI) dann auf HIGH zu ziehen. Dieser Watch-Dog sollte solange LOW ausgeben, bis der Keep-Alive-Takt kommt. Welcher WD eignet sich dafür gut?
mega-hz schrieb: > was haltet Ihr von einem NE567 der bei anliegender Frequenz auf HI > schaltet? Man kann es auch übertreiben. Wie wäre es mit einem nachtriggerbaren Monoflop (74HC123, 74HC423 o.ä.)?
mega-hz schrieb: > stimmt, der 123 eignet sich auch gut dafür! aber hat der einen definierten Zustand beim Einschalten?
mega-hz schrieb: > Michael B. schrieb: >> Die Kombination 74HC595 + ULN2803 ist natürlich aus der Steinzeit, man >> nimmt eher TPIC6B595. > > Der reicht leider nicht, da die Relays 5V/250mA pro Stück ziehen. Dann reicht der ULN2803 auch nicht. Damit bekommen die Relais dank Darlington nur 75% ihrer Nennspannung. Schalten die damit sicher ein? Brauchen die vielleicht nur 25.0 mA? Für 250 mA und 5 V gibt es fast keine 8-fach Treiber. Der TLE8108EM würde es schaffen, hat aber ein SPI-Interface. mega-hz schrieb: > Dieser Watch-Dog sollte solange LOW ausgeben, bis der Keep-Alive-Takt > kommt. Lohnt sich das? Der Watch-Dog kann ja die Stromstoßrelais nicht abschalten, also bewirkt er eigentlich garnichts. Für den Zweck sollte doch auch der uC-interne Watch-Dog reichen. Ein GPIO wird als Reset-Ausgang benutzt und bekommt einen externen Widerstand. Solange der GPIO hochohmig ist, ist draußen Reset. Das Programm schaltet den Ausgang ein und der interne Watchdog schaltet ihn im Zweifelsfall wieder hochohmig. Wenn es externe Hardware sein soll, würde ich eher die 5 und die 24 Volt überwachen und daraus einen Reset abzuleiten, z.B. mit dem TPS3701 (Ausgang OUTB).
:
Bearbeitet durch User
der ULN2803A kann laut TI Datenblatt 500mA / Kanal! Der Spannungsabfall von 0.7V ist allerdings bei 5V Relays tatsächlich viel zu hoch. Dann wohl doch besser jedem Relays einen kleinen MOSFET verpassen... (oder denjenigen überreden, doch 24V Relays zu verwenden) Ich habe gerade mal etwas rumexperimentiert: Ein 74xx123 hat nie einen definierten Zusatnd beim Einschalten, mal so, mal so.. Ein NE567 ist immer LOW beim einschalten, es sei denn, die eingestellte Frequenz (hier beim testen 1000Hz) liegt am Eingang an. Denke der wird es wohl werden.
So, die Relays werden durch 24V Typen getauscht, d.h. der ULN2803A kann problemlos benutzt werden. der gemeinsame GND Anschluss der Relays wird per MOSFET vom GND getrennt. bei aktivem PWM Ausgang vom NEO-PI wird der 567 Tondecoder,der auf 9khz eingestellt ist, aktiv, steuert über ein R-C Glied einen 74HCT14 Schmitt-Trigger an, welcher das Signal etwas verzögert und invertiert. Dieses invertiertes Signal ist bei aktivem PWM nun HIGH und geht zum einem auf den SRCLR Eingang der 595 und zum anderen zu dem MOSFET, der die Relays-Betriebsspannung unterbricht. Das sollte eigentlich reichen an Sicherheit gegen undefinierte Zustände... Danke für Eure Tips und Anregungen... Bleibt gesund! Gruß, Wolfram.
mega-hz schrieb: > aber hat der einen definierten Zustand beim Einschalten? Wenn man den Reset-Anschluss sinnvoll beschaltet, schon. Hänge einen Kondensator zwischen Reset (\RD) und Gnd, sowie einen Widerstand von \RD und VDD. mega-hz schrieb: > Ich habe gerade mal etwas rumexperimentiert: > > Ein 74xx123 hat nie einen definierten Zusatnd beim Einschalten, mal so, > mal so.. falsches Experiment. CMOS-Eingänge dürfen nicht in der Luft hängen.
mega-hz schrieb: > der ULN2803A kann laut TI Datenblatt 500mA / Kanal! Ja schon, aber nicht auf 8 Kanälen gleichzeitig. Und wenn wir von nur einem einzelnen Kanal reden, dann kann das der TPIC6B595 auch. Gucke mal in die Absolute Maximum Ratings.
mega-hz schrieb: > die Relays werden durch 24V Typen getauscht, d.h. der ULN2803A > kann problemlos benutzt werden. > > der gemeinsame GND Anschluss der Relays wird per MOSFET vom GND > getrennt. Das geht so nicht. Der gemeinsame GND der Relais ist der GND des ULN2803A. Wenn du den abschaltest, speist das Relais rückwärts über eine Diode in den Eingang des ULN2803A = Ausgang des 74HC595 und zerstört ihn. Siehe 8.2 FunctionalBlockDiagram http://www.ti.com/lit/ds/symlink/uln2803a.pdf?ts=1588095291067 Du musst also die +24V schalten!
mega-hz schrieb: > geht zum > einem auf den SRCLR Eingang der 595 Das ist nutzlos, weil der 595 keinen echten Clr-Eingang hat - der Pin, der so bezeichnet ist, setzt die Ausgänge erst nach einem zusätzlichen Taktimpuls zurück. Das ist eine bekannte Designschwäche des 595, zum direkten Abschalten kann man nur den OE-Eingang benutzen in Verbidung mit passenden Pullup/Downs. Georg
mega-hz schrieb: > die Relays werden durch 24V Typen getauscht, d.h. der ULN2803A > kann problemlos benutzt werden. fast richtig, das heißt, der TPIC6B595 kann problemlos benutzt werden. Der hat auch keinen richtigen Reset-Eingang (ist ja ein 595), aber beim TPIC kann man den Output Enable ohne weiteres benutzen, weil er direkt die Relais treibt. Deshalb muss man die 24 Volt nicht unbedingt abschalten.
> Das ist nutzlos, weil der 595 keinen echten Clr-Eingang hat - der Pin, > der so bezeichnet ist, setzt die Ausgänge erst nach einem zusätzlichen > Taktimpuls zurück. > > Das ist eine bekannte Designschwäche des 595, zum direkten Abschalten > kann man nur den OE-Eingang benutzen in Verbidung mit passenden > Pullup/Downs. > > Georg ohh, das wusste ich nicht, ist ja blöd... mit dem OE wären die Ausgänge deaktiviert, ein Bitmuster reinschieben geht aber trotzdem? Dann könnte die Startroutine ja erst eine Reihe Nullen reinschieben, dann den PWM starten und damit den OE runterziehen?
mega-hz schrieb: > mit dem OE wären die Ausgänge deaktiviert, ein Bitmuster reinschieben > geht aber trotzdem? Ja, OE bedeutet schließlich "Output Enable", nicht "Chip Enable".
>Wenn man den Reset-Anschluss sinnvoll beschaltet, schon. >Hänge einen Kondensator zwischen Reset (\RD) und Gnd, sowie einen >Widerstand von \RD und VDD. So kenne ich es auch beim 74HC595. Einfach eine RC Zeit definieren am Reset Pin und im Microcontroller als erstes per SPI den Zustand senden.
mega-hz schrieb: > der ULN2803A kann laut TI Datenblatt 500mA / Kanal! Der TPIC6B59 auch. Nur halt nicht auf allen Kanälen. Beim TPIC6B595 sind 150mA erlaubt wenn alle 8 dauerhaft an sind. Beim ULN2803 sind es, oh Überraschung, dasselbe Gehäuse, 150mA bei 70 GradC Umgebungstemp, 187mA bei 50 GradC Umgebungstemp Das sagt aber nur das Datenblatt von Allegro https://pdf1.alldatasheet.com/datasheet-pdf/view/120807/ALLEGRO/ULN2803A.html bei TI muss man mit der Verlustleistung selber rechnen, die verstecken die Angabe lieber. Auch der TPL7407L kann nicht zaubern. Auch die 250mA dauerhaft aus 8 Kanälen beim TPIC6273 klappen nur bei 25 GradC. Real schafft er eher 187mA. Wer 8 x 500mA direkt schalten will, nimmt besser SOT23 Einzel-MOSFETs wie IRLML2502, die dann leider keine eingebaute Freilaufdiode mehr haben. Oder er guckt ins Datenblatt des Relais, das oftmals eine Haltspannungsreduktion erlaubt, und betreibt einen Kanl nach der Einschaltzeit nur noch mit PWM für die verringerte Leistung, und damit uhc Verlustleistung. Abe Achtung: Der über die Freilaufdiode fliessende Strom geht mit in die Verlustleistung ein.
georg schrieb: > Das ist nutzlos, weil der 595 keinen echten Clr-Eingang hat - der Pin, > der so bezeichnet ist, setzt die Ausgänge erst nach einem zusätzlichen > Taktimpuls zurück. Daher verbindet man nicht nur RESET mit Power-On-Reset, sondern auch LATCH CLOCK welches dann direkt am Ende des Power-On-Reset die Daten übernimmt. (Und weil man LATCH CLOCK auch nach dem reset braucht, verknüpft man Power-On-Reset und LATCH CLOCK mit einem Gatter) Die Design-Schwäche liegt eher beim georg.
Ich bin mal neugierig. Wieso setzt du kein Port-Expander ein via i2c. ? Und notfalls eine Stützbatterie mit Spannungsüberwachung. Bei ein Stromausfall einfach den letzten Wert in eine Speicherstelle schreiben und diese bei einen Neustart auslesen. Gruß Pucki
Alexander K. schrieb: > Wieso setzt du kein Port-Expander ein via i2c. ? In welcher Hinsicht wäre das gegenüber dem TPIC6B595 von Vorteil?
Stefan ⛄ F. schrieb: > Alexander K. schrieb: >> Wieso setzt du kein Port-Expander ein via i2c. ? > > In welcher Hinsicht wäre das gegenüber dem TPIC6B595 von Vorteil? Ich kenne den TPIC6B595 nicht. Aber ich mag keine Schieberegister. Besonders dann nicht, wenn ich nur EIN/AUS Schalten will. Das ist mein Liebling. https://www.mikrocontroller.net/articles/Port-Expander_PCF8574 Es gibt aber auch 16 Bit Teile. Die Ansteuerung geht einfacher, ich muss keine Register überwachen etc. . Einfach den Bitstring schicken und das war's. Und ich brauche nur 4 Drähte. Was allein ein Vorteil ist. Du könntest diesen String speichern, und bei einen "Neustart" einfach wieder senden. So würde ich das halt machen. Aber wie schon erwähnt, war das eher eine Frage als ein Vorschlag. Gruß Pucki
Alexander K. schrieb: > Die Ansteuerung geht einfacher Das sehe ich aber anders. Auch dieses IC wird über serielle Bitfolgen angesteuert. Zusätzlich kommt noch die Adressierung hinzu. Außerdem brauchst du auch bei diesem IC zusätzliche externe Transistoren? Schön ist allerdings, dass der Chip intern einen Power-On Reset macht.
Stefan ⛄ F. schrieb: > Schön ist allerdings, dass der Chip [PCF8574] > intern einen Power-On Reset macht. Macht er nicht, jedenfalls nicht zuverlässig. Der interne Reset funktioniert nur, wenn VDD lange genug aus bleibt. Meistens ist das kein Problem, wenn man sich an die alte Bauernregel hält "aus, 10 Sekunden warten, ein". Aber nicht mal das ist sicher, weil die Abblock-Cs unter 0.7 Volt kaum noch weiter entladen werden (außer, es gibt eine echte Widerstandslast). Beim PCF8574 steht im Datenblatt, dass er ab 1.2 Volt richtig funktioniert. Zwei Zeilen darunter heißt es, dass der interne Reset zwischen evt. erst kommt, wenn die Spannung unter 0.8 Volt sinkt. Bei einem kurzen Netzausfall kann die Spannung auf 1 Volt sinken und wieder stabil werden. Ergebnis: die internen Zustände sind undefiniert, aber es gibt keinen Reset. Es gibt jede Menge ähnliche I2C-Expander, und alle¹ haben dieses Problem. Bei den neueren Typen stehen nicht so viele Zahlen im Datenblatt, da heißt es einfach "VDD muss unter 0.2 Volt fallen". Das Ergebnis ist das gleiche. Man sollte also einen Typ mit Reset-Eingang verwenden, auf jeden Fall, wenn man solche Pläne hat: mega-hz schrieb: > Dieser Watch-Dog sollte solange LOW ausgeben, > bis der Keep-Alive-Takt kommt. 1) von 24- bis 64-Port Chips weiß ich es nur nicht.
:
Bearbeitet durch User
Stefan ⛄ F. schrieb: > Alexander K. schrieb: >> Die Ansteuerung geht einfacher > > Das sehe ich aber anders. Auch dieses IC wird über serielle Bitfolgen > angesteuert. Zusätzlich kommt noch die Adressierung hinzu. Außerdem > brauchst du auch bei diesem IC zusätzliche externe Transistoren? > > Schön ist allerdings, dass der Chip intern einen Power-On Reset macht. Naja ich halte es deshalb für einfacher, weil ich in B4R nur 2 Befehle brauche um den Status eines x-beliebigen Pin zu ändern. Hier meine Sub zum schalten dazu. Private Sub ic_Write(pin As UInt,pinstate As Boolean) Dim result() As Byte = ic.RequestFrom(0x24, 1) If pinstate =True Then Bit.Clear(result(0),pin) ic.WriteTo(0x24, Array As Byte(0x00,result(0))) Else Bit.Set(result(0),pin) ic.WriteTo(0x24, Array As Byte(0x00,result(0))) End If end sub Deshalb finde ich das einfach. Aber das ist vielleicht auch nur Geschmackssache. Gruß Pucki
Alexander K. schrieb: > Private Sub ic_Write(pin As UInt,pinstate As Boolean) Die Sub sieht doch immer gleich aus, egal, ob die Pins per I2C, SPI oder Deep Space Network angebunden sind? Außerdem gibt es wichtigere Argumente für oder gegen bestimmte Chips...
mega-hz schrieb: > Ein 74xx123 hat nie einen definierten Zusatnd beim Einschalten, mal so, > mal so.. Nö, läuft bei mir einwandfrei. Nur die R/C-Zeitkonstante hat gewisses heute obsoletes Toleranzfeld. Für Deinen Anwendungszweck aber vernachlässigbar. Wolfgang schrieb: > Wenn man den Reset-Anschluss sinnvoll beschaltet, schon. > Hänge einen Kondensator zwischen Reset (\RD) und Gnd, sowie einen > Widerstand von \RD und VDD. Die schon gezeigte Resetbeschaltung kriegt bei mir noch eine Diode spendiert. ciao gustav
Alexander K. schrieb: > ic.WriteTo(0x24, Array As Byte(0x00,result(0))) > Deshalb finde ich das einfach. Aber das ist vielleicht auch nur > Geschmackssache. So eine Funktion implementiere ich für das Schieberegister in 20 Minuten, dann ist das genau so einfach zu benutzen. Es läuft dann sogar mehr als 10x so schnell.
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.