Hallo liebe mikrocontroller.net-Gemeinde!
Nach stundenlangem, vergeblichen Suchen werde ich nun doch einen Beitrag
verfassen und hoffen, dass Ihr mir helfen könnt :)
Ich habe vor, mit einem 74HC595 Schieberegister über einen ULN2803A acht
Relais samt LEDs zu schalten - Relais und LEDs laufen über 24V.
Nun habe ich gelesen, dass das Schieberegister bei Bespannung zufällige
Schaltzustände schaltet, bis 0x00 ins Register geschrieben und auf die
Ausgänge übertragen wird.
Jetzt hätte ich vor, die 24V mittels eines Thyristors verzögert und ohne
eines zusätzlichen µC-Pins auf die Relais zu schalten (GND hängt ja am
ULN2803), nur bin ich nicht ganz schlüssig, wie das nun genau gehen
soll. Ich hätte an ein RC-Glied gedacht, welches nach einer gewissen
Zeit (abhängig von R) die Zündspannung des Thyristors überschreitet und
diesen leitfähig macht.
Nur auf einen konkreten Schaltplan komm' ich irgendwie nicht.
Ehrlich gesagt sind Thyristoren auch ein bisher unbekanntes Gebiet für
mich.
Vielleicht könnt Ihr mir helfen!
die schieberegs haben ja eigtl. einen OE Pin der genau das macht: Er
hält die Daten zurück. warum nimmst du nicht den anstatt igrendwas mit
thyrist zu basteln ?
Hallo Max,
ja, dass habe ich schon gelesen, nur habe ich keinen Pin am µC mehr
frei. Darum hätte ich mir gedacht, das in die Richtung zu realisieren.
Oder gibt's noch eine andere Möglichkeit ohne einen µC-Pin zu benötigen?
Danke!
Daniel schrieb:> Oder gibt's noch eine andere Möglichkeit ohne einen µC-Pin zu benötigen?
Du kannst den OE-Pin des ICs ja auch einfach mit entsprechend großem RC
gegen Vcc beschalten und noch einen (invertierenden) Schmitt-Trigger
dazwischenpacken...
Daniel schrieb:> Jetzt hätte ich vor, die 24V mittels eines Thyristors verzögert und ohne> eines zusätzlichen µC-Pins auf die Relais zu schalten
Wozu soll da ein Thyristor gut sein?
> Ich habe vor, mit einem 74HC595 Schieberegister über einen ULN2803A acht> Relais samt LEDs zu schalten - Relais und LEDs laufen über 24V.
Was haben die Relais mit den LEDs zu tun? Gibts das auch als Schaltplan?
> Nun habe ich gelesen, dass das Schieberegister bei Bespannung zufällige> Schaltzustände schaltet, bis 0x00 ins Register geschrieben und auf die> Ausgänge übertragen wird.
Sieh dir mal den /OE Pin an. Mit dem könnte man da doch was machen, oder
nicht?
Wenn der ausreichend lang auf "1" gehalten wird, dann wäre der Ausgang
hochohmig und dein ULN würde nicht schalten. Da würde als
Startverzögerung evtl. sogar ein RC-Glied reichen...
EDIT: Pech, Zweiter... ;-)
Thyristor hat Spannungsabfall und ist daher ungünstig. Besser wäre Logik
über OutputEnable. Aber lies auch
Beitrag "ULN 2803 Pegel" falls es
Pegelprobleme gibt.
NE555-Griller schrieb im Beitrag #4389286:
> Du kannst den OE-Pin des ICs ja auch einfach mit entsprechend großem RC> gegen Vcc beschalten und noch einen (invertierenden) Schmitt-Trigger> dazwischenpacken...
@NE555-Griller:
Ok, das klingt logisch, kann ich das so realisieren wie im Anhang?
Und könnte ich den im Datenblattausschnitt angeführten Schmitt-Trigger
benutzen? Da müsste ich dann, wenn ich dich richtig verstehe, das
RC-Glied so berechnet werden, dass dir Threshold-Spannung nach z.B. 2sek
überschritten wird, oder?
@Lothar:
Thyristor war Grundgedanke, weil mir sonst (noch) nichts eingefallen war
:P
Die LEDs zeigen den Schaltzustand der Relais :)
Und danke für deine Hilfe :)
@oszi40:
Nein, Pegelprobleme gibt's keine :)
Vielen Dank und LG!!
Daniel
Du könntest auch das RC-Glied (kondensator gegen Vcc) aus dem Latch-Pin
speißen und diesen mit einem Hardware-Pullup versehen.
Hat den Vorteil, dass beim Programmieren ebenfalls OE abgewürgt wird
(oder wenn der µC sonst irgendwie resettet).
In der Praxis funktioniert das so:
Der µC startet mit einem hochohmigen Pin (wüsste keinen der das nicht
tut). Das RC-Glied ist "leer". OE wird auf 1 gezogen und schaltet den
ausgang ab. Wenn der µC gebootet hat initialisiert er den Pin als
Ausgang, aber lässt in auf high stehen. Dann schiebt der den ersten
datensatz rein und pulst den pin mit low-high-low. Die steigende Flanke
latcht die daten und das nachfolgende Low entlädt (langsam) das RC-Glied
welches nach ein paar zig ms (vorteil: Kurze wartezeit heißt kleine
caps) OE "durchschaltet" und so den Ausgang aktiviert.
Wenn neue Daten kommen werden die einfach mit einem kurzen "high-spike"
gelatched welcher von dem RC-Glied einfach ignoriert wird.
Ok, ich verstehe zwar, was Du mir vorschlägst, aber einen Schaltplan
kann ich mir daraus nicht zusammendenken :(
Kannst du mir vielleicht etwas auf die Sprünge helfen?
Danke :)
Du brauchts zwei Widerstände und einen kondensator.
Der kondensator kommt von /OE nach Vcc.
Ein Widerstand kommt von /OE nach STCP.
Ein Widerstand kommt von STCP nach Vcc.
Für den Kondensator kannst du einfach noch einen 100 nF Cap nehmen mit
denen du eh schon deinen µC abgeblockt hast (hoffentlich).
Für die Widerstände nimmst du 10kΩ. Damit kannst du 1 ms Latchingpulse
nehmen ohne, dass /OE betroffen ist.
Max D. schrieb:> Du brauchts zwei Widerstände und einen kondensator.>> Der kondensator kommt von /OE nach Vcc.> Ein Widerstand kommt von /OE nach STCP.> Ein Widerstand kommt von STCP nach Vcc.>> Für den Kondensator kannst du einfach noch einen 100 nF Cap nehmen mit> denen du eh schon deinen µC abgeblockt hast (hoffentlich).> Für die Widerstände nimmst du 10kΩ. Damit kannst du 1 ms Latchingpulse> nehmen ohne, dass /OE betroffen ist.
Also so?
Und was meinst du mit "mit denen du eh schon den µC abgeblockt hast"?
Danke und LG
Schaltplan passt.
Dein µC (und btw auch der 595er) braucht an seinen Versorgungspins
Keramik-Kondensatoren die die Stromspitzen glätten während der µC
arbeitet. Dafür nimmt man klassischerweise 100 nF Kerkos.
Welchen µC hast du eigtl. genau ? neugierig
Ok, das mit den Kondensatoren an VCC beim uC hab ich gewusst, aber der
74HC595 auch?
Mein uC ist ein Atmega32u4.
Und ich habe 2 schieberegister hintereinander geschalten, kann ich da
die obige schaltung dort anbauen, wo es am besten zugänglich ist bzw.
vom ersten OE zum zweiten OE fahren? Und wie müsste ich die Bauteile
dimensionieren bei zwei Schieberegistern? (R & C)
Und danke für deine/eure Hilfe, echt ein super Forum hier!
Max D. schrieb:> die die Stromspitzen glätten während der µC arbeitet.
Etwas frei formuliert: die Kondensatoren können keine Stromspitzen
glätten, denn etwas Glattes hat keine Spitzen mehr...
Die Entkopplungs- oder Blockkondensatoren sind Kondensatoren, die den
Strom bereitstellen, der beim taktsynchronen Umschalten der vielen,
vielen CMOS-Gatter im uC benötigt wird.
Sind diese Kondensatoren nicht da oder schlecht angeschlossen, dann
möchte der uC den selben Strom fließen lassen, weil der aber nicht
bereitgestellt wird, bricht die Spannung kurzzeitig ein (wie wenn ein
Netzzteil 5A liefern müsste, aber nur 1A liefern kann: die Spannung
knickt ein). Und das bei jedem einzelnen Oszillatortakt mehr oder
weniger, je nach dem, wieviele Gatter gerade umgeschaltet werden...
Max D. schrieb:> Schaltplan passt.> Dein µC (und btw auch der 595er) braucht an seinen Versorgungspins> Keramik-Kondensatoren die die Stromspitzen glätten während der µC> arbeitet.Lothar M. schrieb:> Die Entkopplungs- oder Blockkondensatoren sind Kondensatoren, die den> Strom bereitstellen, der beim taktsynchronen Umschalten der vielen,> vielen CMOS-Gatter im uC benötigt wird.
Ok, warum man die Kon's braucht hab' ich nicht genau gewusst, jetzt weiß
ich das auch :)
Jetzt stellt sich mir nur noch die Frage, wie ich bei zwei aneinander
gekoppelten 74HC595 bezüglich /OE vorgehen muss (siehe Beitrag ober
Lothar's). Der Q7" von SR1 geht auf DS von SR2.
Reicht es, einfach vom Pin /OE vom 1. Schieberegister zum /OE vom 2.
Schieberegister zu fahren?
Und wie muss ich die Bauteile (R & C) dimensionieren damit das mit
beiden SR's funktioniert?
Bin euch echt dankbar, habt mir schon gewaltig geholfen und sogar etwas
gelernt :) schwer begeistert
Daniel schrieb:> Reicht es, einfach vom Pin /OE vom 1. Schieberegister zum /OE vom 2.> Schieberegister zu fahren?> Und wie muss ich die Bauteile (R & C) dimensionieren damit das mit> beiden SR's funktioniert?
Dadurch, dass das CMOS Kisten sind ist das kein Problem auf dem Weg die
zu kaskadieren (erst wenn man zweistellige Anzahlen hat muss man
anfangen über die parasitären Kapas nachzudenken).
Daniel schrieb:> Reicht es, einfach vom Pin /OE vom 1. Schieberegister zum /OE vom 2.> Schieberegister zu fahren?
Wie sagt Radio Eriwan: "Im Prinzip ja".
> Und wie muss ich die Bauteile (R & C) dimensionieren damit das mit> beiden SR's funktioniert?
Das kommt darauf an, wie lange du brauchst, bis definierte Werte im
Schieberegister stehen...
Lothar M. schrieb:>> Und wie muss ich die Bauteile (R & C) dimensionieren damit das mit>> beiden SR's funktioniert?> Das kommt darauf an, wie lange du brauchst, bis definierte Werte im> Schieberegister stehen
Maximal 500ms wären zu überbrücken, wie kann man das dann berechnen wie
groß R&C sein müssen?
Daniel Ilsanker schrieb:> Maximal 500ms wären zu überbrücken, wie kann man das dann berechnen wie> groß R&C sein müssen?
Dann mach einfach t=RC=1s
Und nimm diese Schaltung dafür:
Ähm, /OE ist doch Low-Active, oder?
Wenn ich mich nicht irre, ist bei 5V an diesem Pin der Ausgang
deaktivert, was diese Schaltung bewirkt, oder bin ich ganz falsch an?
Danke und LG
Lothar M. schrieb:> Und nimm diese Schaltung dafür:> |> Vcc R |> o---===----o-----| /OE> | |> |+ |> C === |> |> ---> Also etwa R=10k und C=100uF...
Das 74HC595-Schieberegister schaltet doch, die Ausgänge bei einem
LOW-Pegel an /OE raus oder?
Diese Schaltung startet jedoch bei 0V und lädt den Kondensator langsam
auf VCC auf, was heißen würde, dass nach einer bestimmten Zeit die
Ausgänge abgeschalten werden. Oder liege ich falsch?
Ist die Schaltung von Max D. soweit richtig, um das Vorhaben umzusetzen?
Bin mir jetzt nicht sicher, was ich nun machen soll :(
LG
Die Schaltung von Lothar ist auf jeden Fall "falschrum" und tauscht den
Aufwand den Latch-Pin speziell zu takten gegen einen duetlich größeren
100µF Kondensator ein.
€dit: Und beim reset sperrt er auch nicht die Ausgänge
Max D. schrieb:> Die Schaltung von Lothar ist auf jeden Fall "falschrum" und tauscht den> Aufwand den Latch-Pin speziell zu takten gegen einen duetlich größeren> 100µF Kondensator ein.> €dit: Und beim reset sperrt er auch nicht die Ausgänge
Also kann ich deine Schaltung so verwenden wie ich sie gezeichnet hab'?
Sorry für das viele Nachfragen, aber ich will nicht dann eine Platine
haben, die falsch funktioniert :P
Und natürlich:
Danke für die Hilfe :)
Solange deine Platine ansonsten sauber gelöst ist...
Die Schaltung an sich ist auf jeden Fall richtig (kannst du ja auch auf
nem Breadboard testen wenn du dir Sorgen machst).
Wichtig ist, dass du den Pin richtig ansteuerst:
- Beim starten erst high und dann auf Ausgang schalten
- Vor dem ersten Latch low schalten
- Nach dem Latchen gleich wieder auf low schalten damit /OE nicht
abgeschaltet wird
Max D. schrieb:> Solange deine Platine ansonsten sauber gelöst ist...Max D. schrieb:> - Beim starten erst high und dann auf Ausgang schalten
Das ist natürlich die wichtigste Voraussetzung :) Aber ich denke, dass
es passt :) Und aufstecken werd' ich das Ganze auch noch :)
Also du meinst bevor der Pin im Programm als Ausgang definiert wird auf
den Schaltzustand HIGH setzen?
Daniel schrieb:> Also du meinst bevor der Pin im Programm als Ausgang definiert wird auf> den Schaltzustand HIGH setzen?
Denk einfach mal kurz nach was passieren würde wenn du den Pin erst auf
Ausgang und dann high schaltest: Du hast einen ganz kurzen low-Puls der
u.U. irgendwelchen BS mit deinem IC anstellt. Wenn du erst high und dann
ausgang machst ist der Verlauf stabil.
Würdet du den Ausgang low lassen bevor sinnvolle Daten drin sind, dann
wird irgendein Rauschen auf den Ausgang geschaltet.
Ich hab mal versucht das als Pseudocode darzustellen:
Max D. schrieb:> Du hast einen ganz kurzen low-Puls der> u.U. irgendwelchen BS mit deinem IC anstellt. Wenn du erst high und dann> ausgang machst ist der Verlauf stabil.
Alles klar, hab' verstanden :)
Tausend Dank euch Allen!