Thyristorzündung verzögern

Gast #4389257
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!
Gast
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!
Gast
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...
Moderator (Firma: Titel) Persönliche Seite
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...  ;-)
Gast
NE555-Griller schrieb:
> 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
Angehängte Dateien:
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.
Gast
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.
Gast
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
Angehängte Dateien:
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
Gast
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!
Moderator (Firma: Titel) Persönliche Seite
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...
Gast
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
Angehängte Dateien:
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).
Moderator (Firma: Titel) Persönliche Seite
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...
Gast
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?
Gast
Ä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
Gast
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
Gast
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 :)
Angehängte Dateien:
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
Gast
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:
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);
Gast
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!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.