Forum: Mikrocontroller und Digitale Elektronik Thyristorzündung verzögern


von Daniel (Gast)


Lesenswert?

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!

von Max D. (max_d)


Lesenswert?

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 ?

von Daniel (Gast)


Lesenswert?

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!

von NE555-Griller (Gast)


Lesenswert?

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...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...  ;-)

: Bearbeitet durch Moderator
von oszi40 (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

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

von Max D. (max_d)


Lesenswert?

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.

von Daniel (Gast)


Lesenswert?

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 :)

von Max D. (max_d)


Lesenswert?

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.

von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

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

von Max D. (max_d)


Lesenswert?

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

von Daniel (Gast)


Lesenswert?

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!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

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

von Max D. (max_d)


Lesenswert?

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).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Daniel Ilsanker (Gast)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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:
1
                      |
2
    Vcc   R           |
3
     o---===----o-----| /OE
4
                |     |
5
                |+    |
6
            C  ===    |
7
                |
8
               ---
Also etwa R=10k und C=100uF...

von Daniel (Gast)


Lesenswert?

Ä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

von Daniel (Gast)


Lesenswert?

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

von Max D. (max_d)


Lesenswert?

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

: Bearbeitet durch User
von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

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 :)

von Max D. (max_d)


Lesenswert?

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

von Daniel (Gast)


Lesenswert?

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?

von Max D. (max_d)


Lesenswert?

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:
1
//Init
2
PORTx |= (1<<Pxn);
3
DDRx |= (1<<Pxn);
4
5
spisend(byte_eins);
6
spisend(byte_zwei);
7
8
PORTx &= ~(1<<Pxn);
9
delay(); //Zwischen 200 ns und 1 ms
10
PORTx |= (1<<Pxn);
11
delay(); //Zwischen 200 ns und 1 ms
12
PORTx &= ~(1<<Pxn);
13
14
//Normaler Transfer
15
16
spisend(byte_eins);
17
spisend(byte_zwei);
18
19
PORTx |= (1<<Pxn);
20
delay(); //Zwischen 200 ns und 1 ms
21
PORTx &= ~(1<<Pxn);

von Daniel (Gast)


Lesenswert?

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!

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.