C Attiny13 PWM

Schon klar, aber ich dachte so'n Triac leitet solange, bis kein Strom mehr zwischen den Hauptelektroden (Drain Source ??) fließt.
Zumindest bei meinen beiden Pumpen hat es keine Rolle gespielt, in welchem Winkel ich das Gate wieder zurückgenommen habe - einmal gezündet fließt der Strom bis zum nächsten Nulldurchgang (sofern irgendwann (!) vorher der Zündimpuls weggenommen wurde - ansonsten Volldampf).
Nach vorheriger Gleichrichtung (nötig ?) und mit hinreichend spannungs- und stromfesten FETs kann ich mir das vorstellen, aber mit TRIACs...
Erklär mal bitte genauer...
 
???
der CNY17 IST ein Optokoppler, nur eben mit'nem (lichtsensiblen) NPN-Transistor auf der Sekundärseite (als Schalter).
Als solcher würde er also auch als Halbwellen-Gleichrichter (?) arbeiten. Wenn der Transistor die Spannung in Sperrichtung verträgt.
Dann könntest Sekundärseitig 2 Antiparallel schalten.

Mit TRIACs kannst Du mMn generell keinen Phasenabschnitt realisieren, da Du die ja nicht aktiv sperren kannst -> die sperren automatisch im Nulldurchgang.

Zu "weniger hohe Ströme beim Abschnitt beim Schalten einer rein ohmschen Last" - mMn kein wirklicher Unterscheid: der maximale Strom im Scheitelpunkt ist immer derselbe... beim Schalten selbst ist der Strom nicht stetig differenzierbar -> Du hast 'n Sprung in der Stromkurve. Beim Anschnitt springt der hoch, beim Abschnitt springt er runter...
Der Effekt im Schalter sollte doch derselbe sein (sofern er beim hier digitalen Schalter überhaupt auftritt). Aber dazu kann ein Profi was sagen.

Du hast natürlich Recht.... ein Abschalten ist nicht möglich mit Triacs... wenn überhaupt mit GTO-Thyristoren
Ich hatte leider "Abschnitt" in Deiner Nachricht übersehen. Culpa mea.
Gruß
 
Schon klar, aber ich dachte so'n Triac leitet solange, bis kein Strom mehr zwischen den Hauptelektroden (Drain Source ??) fließt.
Zumindest bei meinen beiden Pumpen hat es keine Rolle gespielt, in welchem Winkel ich das Gate wieder zurückgenommen habe - einmal gezündet fließt der Strom bis zum nächsten Nulldurchgang (sofern irgendwann (!) vorher der Zündimpuls weggenommen wurde - ansonsten Volldampf).
Nach vorheriger Gleichrichtung (nötig ?) und mit hinreichend spannungs- und stromfesten FETs kann ich mir das vorstellen, aber mit TRIACs...
Erklär mal bitte genauer...

Hi LotadaC,
Du hast natürlich :banghead: Recht. Der Triac löscht sich durch Unterschreiten des Anoden-Kathodenstroms. Wenn die Dinger erst einmal gezündet sind kann man über das Gate nicht mehr zurücksetzen.
Ich hatte dies in der Deiner Nachricht von vorhin übersehen. Abschnittsteuerung ist somit nicht möglich. Die Eingebung kam mir gerade.. zu später Stund'...
Aber schöner wär' die Anschnittssteuerung.... :flute:. Da war der Wunsch Vater des Gedanken.
Gruß
Ralf
 
Hi,


da mußt du den Phasenwinkel nur mit ner Zählervariablen nachbauen.

Du arbeitest ja mit Halbwellen. Also 0...180°. Du setzt also zB 180° gleich mit etwa 250-256 Zählschritten (dann paßt es in ein Byte). Macht dann pro Schritt etwa 0,7° . Bei 50Hz dauert eine Vollwelle 20ms und eine Halbwelle dadurch 10ms. In diesen 10ms mußt du 180° durchlaufen und damit die 250-256 Zählschritte die ja deine 180° darstellen. Du mußt also etwa alle 40µs um einen Schritt hochzählen.

Beim Nulldurchgang setzt du diesen Zähler auf Null und deinen Ausgang schaltest du an. Dann läßt du die Zählvariable in 40µs Abstand jeweils um 1 hochzählen. Wenn der Zählerstand für den gewünschten Winkel erreicht ist, dann schaltest du den Ausgang wieder aus. Damit hast du einen Phasenabschnittsdimmer.

Ist doch garnicht so schwer ;)

Gruß
Dino

Hi Dino,
direkt mit dem Sinus oder über eine Gleichrichtung?
LotadaC hat mich auf die Idee gebracht, erst gleichzurichten.
:hmmmm:... dann könnte ich einen Thyristor nehmen, da ja beide Halbwellen positiv wären.
Wobei die Vollwelle dann nicht mehr 20 ms sondern nur noch 10 ms andauert, da f=100 Hz hinterm Gleichrichter.
Ohne Gleichrichter habe ich ja noch die negative Hälfte. Oder meinst Du mit dem diesem Moc3041-Triac-Optokoppler?
Mit dem Timer hatte ich auch noch nicht so viel zu tun.
Gruß
Ralf
 
Jetzt erstmal nochmal kurz was zum Anschnitt mit TRIACs:
Da die Dinger im Nulldurchgang selbst abschalten, braucht man im Programm eigentlich nur einen Zeitpunkt - nämlich den Zündzeitpunkt.
Ich hatte das ähnlich wie Dino - ein externer Interrupt detektiert die Nulldurchgänge (beide Halbwellen), und synchronisiert den Timer. Ein OutputCaptureUnit zündet dann den TRIAC - selbständig im Hintergrund, ohne Interrupt. Problem: wann den Zündimpuls wegnehmen? Das muß ja möglichst spät in der Halbwelle (um große Winkel fahren zu können), jedoch sicher in der Halbwelle geschehen. Ich habe den Timer also hinreichend sicher in der Reichweite beschnitten, und das OC-Unit als PWM verwendet. Da der Timer jetzt aber bereits vor dem Nulldurchgang überläuft (und den Zündimpuls wegnimmt), kann man die ersten Schritte nicht mehr als Phasenwinkel nehmen - sonst würde er ja sofort wieder zünden... Diesen Kompromiss bin ich eingegangen. Für Volldampf oder Aus hab ich einfach das Register für den Gate-Pin entsprechend gesetzt, und dann den COM abgeschaltet. Also dauerhaft oder nie gezündet.

Wenn Du für die bei Dir vorherrschenden Verhältnisse hinreichend spannungs- und stromfeste Transistoren findest, kannst Du das wie Dino schon schrieb machen.
Vielleicht gehts sogar so: Da Du zum synchronisieren des Timers dort (Nulldurchgang) eh 'n IRQ brauchst, kannst Du hier den "wasAuchImmer" anschalten.
Aber Du setzt den Timer nicht auf 0 zurück, sondern auf den geforderten Phasenwinkel. Der Timer läuft im Normalmodus mit hinreichend langer Laufzeit (um die knapp 10ms nötigenfalls schaffen zu können). Als Schalt-Pin wird trotzdem ein OC-Unit verwendet, welches den Pin im Überlauf löschen soll (also OCR=MAX). Als CO-Mode wird allerdings toggeln gewählt da ja der Pin im Nulldurchgang mit einem FOC-Strobe gesetzt werden soll. Oder kann ich hier trotzdem über das PORT-Register wieder anschalten, und clear bei Überlauf (=CompareMatch) wählen?
(Welchen Sinn haben sonst die nonPWM-COModes mit clear/set, wenn der Pin sonst nie umgesetzt werden kann?)

Warum hier keinen PWM? Wenn der Timer im OC abschalten soll, müßte er im Nulldurchgang überlaufen. Diesen willst Du aber erstmal synchronisieren, heißt: erstmal willst Du TCNT beschreiben. Das anschalten erfolgt ja, wenn TCNT von Top auf Bottom überläuft. Folglich müßtest Du mit Top synchronisieren, damit der Timer im nächsten(!) Timertakt(!) überläuft, und den Pin setzt. Du schneidest hier also die Phase noch weiter an (der Nulldurchgangs-IRQ braucht ja auch schon ein paar Takte).
Du willst ja möglichst schnell nach dem erkannten Nulldurchgang den Ausgang anschalten...

Zu den Transistoren: vertragen die die Spannung denn auch in Sperrrichtung? Oder mußt Du gleichrichten?

Zum CNY17: der kann aber nicht direkt an den AVR, mit 60mA Strombedarf der internen LED, oder?
 
Hallo,

man kann sich entscheiden zwischen ...
  • gleichrichten und dadurch dann mit Halbwellen (100Hz, 10ms) und nem Transistor oder Thyristor arbeiten.
  • nicht gleichrichten und dadurch mit Vollwellen (50Hz, 2x10ms) und nem Triac arbeiten.
Bei der Laststufe kann man dann weiter entscheiden zwischen ...
  • nem Transistor bei dem man mit Anschnitt- oder Abschnittsdimmung arbeiten kann.
  • nem Thyristor bei dem man nur mit Anschnittsdimmung arbeiten kann.
  • nem Triac bei dem man auch nur mit Anschnittsdimmung arbeiten kann.
Auch wenn der Triac Wechselspannung ab kann muß man bei jeder Halbwelle neu zünden da er ja in jedem Nulldurchgang durch fehlenden Strom gelöscht wird. Also auch bei 50Hz Wechselspannung muß man für die positive und die negative Halbwelle wieder neu zünden.

Im Endeffekt muß man also das ganze Dimmprogramm mit den Nulldurchgängen auf die 100Hz (10ms) Halbwellen synchronisieren. Damit man keine Probleme mit etwas wechselnden Netzfrequenzen bekommt, sollte man die 10ms nicht mit dem vollen Byte (256 Schritte) abarbeiten lassen sondern mit etwas Luft nur bis zu einem Zählerwert von etwa 250-253 gehen.

Wenn man den Zähler auf den Topwert setzt und herunterzählt, dann kann man bei etwas instabiler Frequenz eventuell kurz vor dem Nulldurchgang einen negativen Zählerüberlauf bekommen. Ich würde also eher bei Nulldurchgang auf Null setzen und heraufzählen.

Gruß
Dino
 
Hallo,

man kann sich entscheiden zwischen ...
  • gleichrichten und dadurch dann mit Halbwellen (100Hz, 10ms) und nem Transistor oder Thyristor arbeiten.
  • nicht gleichrichten und dadurch mit Vollwellen (50Hz, 2x10ms) und nem Triac arbeiten.
Bei der Laststufe kann man dann weiter entscheiden zwischen ...
  • nem Transistor bei dem man mit Anschnitt- oder Abschnittsdimmung arbeiten kann.
  • nem Thyristor bei dem man nur mit Anschnittsdimmung arbeiten kann.
  • nem Triac bei dem man auch nur mit Anschnittsdimmung arbeiten kann.
Auch wenn der Triac Wechselspannung ab kann muß man bei jeder Halbwelle neu zünden da er ja in jedem Nulldurchgang durch fehlenden Strom gelöscht wird. Also auch bei 50Hz Wechselspannung muß man für die positive und die negative Halbwelle wieder neu zünden.

Im Endeffekt muß man also das ganze Dimmprogramm mit den Nulldurchgängen auf die 100Hz (10ms) Halbwellen synchronisieren. Damit man keine Probleme mit etwas wechselnden Netzfrequenzen bekommt, sollte man die 10ms nicht mit dem vollen Byte (256 Schritte) abarbeiten lassen sondern mit etwas Luft nur bis zu einem Zählerwert von etwa 250-253 gehen.

Wenn man den Zähler auf den Topwert setzt und herunterzählt, dann kann man bei etwas instabiler Frequenz eventuell kurz vor dem Nulldurchgang einen negativen Zählerüberlauf bekommen. Ich würde also eher bei Nulldurchgang auf Null setzen und heraufzählen.

Gruß
Dino


Hallo,

interessantes Thema - dazu gibt es hier im Forum mehrere wirklich gute Beiträge:
a) http://www.avr-praxis.de/forum/showthread.php?53-230V-Dimmer-und-Relaisansteuerung-mit-ATmega128-unter-BASCOM-AVR
b) http://www.avr-praxis.de/forum/showthread.php?255-Kleiner-230V-IR-Dimmer-f%FCr-die-Norkadose

Vielleicht hilft es ja - mir hatten die beiden Links sehr geholfen:):)

MfG

FreeVee
 
Zu Dino:

Beim Phasenanschnitt (mit TRIACs) triggert die Nulldurchgangserkennung auf jede Halbwelle, genau. Dabei wird der Timer auf 0 zurückgesetzt, und somit meine PWM mit den Halbwellen synchronisiert. Im einstellbaren OC wird der TRIAC gezündet, der Timer läuft innerhalb der 10ms sicher (Reserve bereits drin) über, und nimmt den Zündimpuls rechtzeitig wieder vom TRIAC, damit dieser im folgenden Nulldurchgang sicher verlöschen kann. Ich weiß,daß ich den Sicherheitsbereich am Ende (also sehr großer Anschnittswinkel) und den ersten Timer-Takt (winzig kleiner Winkel) nicht verwenden kann. Ich kann aber zumindest den TRIAC dauerhaft an oder aus halten.

Bei meinem Vorschlag mit dem Abschnitt habe ich nirgends was von Rückwärtszählen geschrieben. Da der AVR jetzt zu 2 festgelegten Zeitpunkten Schalten muß (möglichst sofort beim Durchgang ein, nach einer vorgegebenen Zeit aus), und der Überlauf-IRQ zwangsläufig verwendet wird, war mein Vorschlag, statt des PWM zum halbwegs automatisierten schaltens zumindest den Überlauf zu verwenden...
Mal konkretere Zahlen:
Der AVR läuft ja effektiv mit 1,2MHz, mit 'nem Prescaler von 8 kommt der 8bit-Timer auf 'ne Reichweite von gut 13ms (single slope). Verwendet wird der Normalmodus, der CompareOutputMode wird so gewählt, der Pin beim Überlauf (=CompareMatch da OCR=TOP) gelöscht wird.

In der Nulldurchgangs-ISR wird einerseits der Pin gesetzt (wenn das per Port Register geht, ansonsten per FOC Strobe, dann muß natürlich als COM im Überlauf getoggelt werden), andererseits TCNT entsprechend des vorgegebenen Winkels vorgesetzt werden. Allerdings geht's hier auch erst ab TCNT=68 los, bei kleineren Werten ist der Ausgang dauerhaft angeschaltet. Jede weitere Erhöhung des Reloades für TCNT verkürzt die On-Zeit um ca 53µs.
 
Zu Dino:

Beim Phasenanschnitt (mit TRIACs) triggert die Nulldurchgangserkennung auf jede Halbwelle, genau. Dabei wird der Timer auf 0 zurückgesetzt, und somit meine PWM mit den Halbwellen synchronisiert. Im einstellbaren OC wird der TRIAC gezündet, der Timer läuft innerhalb der 10ms sicher (Reserve bereits drin) über, und nimmt den Zündimpuls rechtzeitig wieder vom TRIAC, damit dieser im folgenden Nulldurchgang sicher verlöschen kann. Ich weiß,daß ich den Sicherheitsbereich am Ende (also sehr großer Anschnittswinkel) und den ersten Timer-Takt (winzig kleiner Winkel) nicht verwenden kann. Ich kann aber zumindest den TRIAC dauerhaft an oder aus halten.

Bei meinem Vorschlag mit dem Abschnitt habe ich nirgends was von Rückwärtszählen geschrieben. Da der AVR jetzt zu 2 festgelegten Zeitpunkten Schalten muß (möglichst sofort beim Durchgang ein, nach einer vorgegebenen Zeit aus), und der Überlauf-IRQ zwangsläufig verwendet wird, war mein Vorschlag, statt des PWM zum halbwegs automatisierten schaltens zumindest den Überlauf zu verwenden...
Mal konkretere Zahlen:
Der AVR läuft ja effektiv mit 1,2MHz, mit 'nem Prescaler von 8 kommt der 8bit-Timer auf 'ne Reichweite von gut 13ms (single slope). Verwendet wird der Normalmodus, der CompareOutputMode wird so gewählt, der Pin beim Überlauf (=CompareMatch da OCR=TOP) gelöscht wird.

In der Nulldurchgangs-ISR wird einerseits der Pin gesetzt (wenn das per Port Register geht, ansonsten per FOC Strobe, dann muß natürlich als COM im Überlauf getoggelt werden), andererseits TCNT entsprechend des vorgegebenen Winkels vorgesetzt werden. Allerdings geht's hier auch erst ab TCNT=68 los, bei kleineren Werten ist der Ausgang dauerhaft angeschaltet. Jede weitere Erhöhung des Reloades für TCNT verkürzt die On-Zeit um ca 53µs.

Hallo alle zusammen,
so, die Schaltung steht nun soweit.
Ich habe nun, alternativ zur PWM mit 2N3005, mal 2 Thyristoren für die Phasenanschnittsteuerung genommen. Angesteuert werden diese jeweils über einen cny17.
Die beiden Eingänge liegen parallel mit gleicher Polarität.
Beide Thyristoren bekommen zeitlich den Zündimpuls, bedingt durch die momentane Polarität der Wecheselspannung
schaltet nur einer der beiden Thyristoren durch.

Zur Messung des Spannungsverlaufs:
Die Wechselspannung richte ich über eine Diode in Einwegschaltung gleich.
Negative Spannungen bringen mir am Avr nix, da der ja nur positive Werte verarbeiten kann.
Zuerst wollte ich eine Graetz-Brücke nehmen um beide Wellen zu übernehmen, dachte mir aber da die beiden
Wellen identisch sind kann ich mir das sparen. Dann hat der Avr während der 2. Welle Zeit zu rechnen. :)
Jetzt habe ich mal eine simple while()-Schleife programmiert.
Sinngemäß:
Wenn uadc > 100 dann setzte PB0=1 solange bis uadc < 100 ist.
Da ist scheinbar nicht symmetrisch, unsynchron und war nur als neugierige Spielerei gedacht.
Mit dem Timer muss ich erst mal arbeiten, da kapier' erst mal nicht viel.
Hier mal ein Timer-Versuch zur Rechteckerzeugung:

DDRB |= (1<<PORTB0); // Set PB0 (Pin 5) as output
/*
CS02 CS01 CS00
0 0 0 No clock source, timer/Counter stopped
0 0 1 clk/noPrescaling
0 1 0 prescaler / 8
0 1 1 prescaler / 64
1 0 0 prescaler / 256
1 0 1 prescaler / 1024
1 1 0 prescaler / Extern clock source. clock on falling edge
1 1 1 prescaler / Extern clock source. clock on rising edge
*/

// Timer 0 konfigurieren
TCCR0B = (1<<CS01); // Prescaler 8 -->> 1,2 * 10^6 / 8 ->>150 kHz / 510 -> 3 ms
OCR0A= 10;


// Overflow Interrupt erlauben
TIMSK0 |= (1<<TOIE0);

// Global Interrupts aktivieren
sei();


while(1)
{}

Da bekomme ich eine Frequenz von ca. 300 Hz laut Oszi. Das stimmt ja auch, so grob.
Was macht denn OCR0A= 10 ? Sehe keine Veränderung !?!?



Gruß
Ralf
 
Irgendwie verstehe ich das mit den 300Hz jetzt nicht... Oder Code paßt nicht dazu.

Letztendlich hast Du da doch folgendes:
  • Systemtakt = 1,2MHz
  • TCCR0A = default = 0b00000000 also beide CompareOutputModes = 0 und die beiden niedrigsten WGM-Bits=0
  • TCCR0B = 0b00000010 also auch das letzte WGM-Bit=0 und CS=0b010=2
  • somit ist WGM=0b000=NormalMode - der Timer läuft von 0..255 und dann wieder auf 0 über (die von Dir verwendete Formel gehört zu phasenkorrektem (PWM) Mode).
  • CS ist 0b010 der Timer ist also mit Vorteiler 8 an den Systemtakt gekoppelt. Somit läuft der Timer mit 1,2MHz/8=150kHz Timertakt. Und da er alle 256 Timertakte überläuft, hast Du 'ne TOV-Frequenz von 150kHz/256=586Hz. Wie kommst Du da auf 300Hz, die wo erzeugt werden? An welchem Bein? Oder läßt Du in der (nicht geposteten) TOV-ISR zu Fuß irgendeinen Pin toggeln? Dann dauert eine volle Periode am Pin ja 2 TOVs, Du würdest also 293Hz messen
  • in TIMSK erlaubst Du nur den TOV0-IRQ, den Du auch global freigibst (I in SREG)
  • OCR0A=10 - kurz nach jedem Überlauf (67µs) findet ein CompareMatch mit KanalA statt, du verwendest aber weder den IRQ, noch einen Compare Output Mode (von Kanal A). Das Ereignis hat also nichts zur Folge.

Hast Du Dir im Datenblatt mal das Kapitel mit Timer0 durchgelesen?

Schalten Thyristoren nicht auch nur bei unterschreiten eines Haltestromes ab? (abgehsehen von GTOs) Wie willst Du die löschen?

Egal ob An- oder Abschnitt - du mußt die Nulldurchgänge detektieren. Wie ist das hier geplant?

Wenns also Abschnitt sein soll, warum nicht gleichrichten (Graetz oder Trafo mit Mittelabgriff+2 Dioden), und die 100Hz-Halbwellen mit mit'nem (über einen Optokoppler angesteuerten) FET abschnippeln...
Möglicherweise hat Dino bereits 'n AVR-tauglichen Optokoppler mit FET-Ausgang parat...
 
Irgendwie verstehe ich das mit den 300Hz jetzt nicht... Oder Code paßt nicht dazu.

Letztendlich hast Du da doch folgendes:
  • Systemtakt = 1,2MHz
  • TCCR0A = default = 0b00000000 also beide CompareOutputModes = 0 und die beiden niedrigsten WGM-Bits=0
  • TCCR0B = 0b00000010 also auch das letzte WGM-Bit=0 und CS=0b010=2
  • somit ist WGM=0b000=NormalMode - der Timer läuft von 0..255 und dann wieder auf 0 über (die von Dir verwendete Formel gehört zu phasenkorrektem (PWM) Mode).
  • CS ist 0b010 der Timer ist also mit Vorteiler 8 an den Systemtakt gekoppelt. Somit läuft der Timer mit 1,2MHz/8=150kHz Timertakt. Und da er alle 256 Timertakte überläuft, hast Du 'ne TOV-Frequenz von 150kHz/256=586Hz. Wie kommst Du da auf 300Hz, die wo erzeugt werden? An welchem Bein? Oder läßt Du in der (nicht geposteten) TOV-ISR zu Fuß irgendeinen Pin toggeln? Dann dauert eine volle Periode am Pin ja 2 TOVs, Du würdest also 293Hz messen
  • in TIMSK erlaubst Du nur den TOV0-IRQ, den Du auch global freigibst (I in SREG)
  • OCR0A=10 - kurz nach jedem Überlauf (67µs) findet ein CompareMatch mit KanalA statt, du verwendest aber weder den IRQ, noch einen Compare Output Mode (von Kanal A). Das Ereignis hat also nichts zur Folge.

Hast Du Dir im Datenblatt mal das Kapitel mit Timer0 durchgelesen?

Schalten Thyristoren nicht auch nur bei unterschreiten eines Haltestromes ab? (abgehsehen von GTOs) Wie willst Du die löschen?

Egal ob An- oder Abschnitt - du mußt die Nulldurchgänge detektieren. Wie ist das hier geplant?

Wenns also Abschnitt sein soll, warum nicht gleichrichten (Graetz oder Trafo mit Mittelabgriff+2 Dioden), und die 100Hz-Halbwellen mit mit'nem (über einen Optokoppler angesteuerten) FET abschnippeln...
Möglicherweise hat Dino bereits 'n AVR-tauglichen Optokoppler mit FET-Ausgang parat...

Hi,
die Nullpunktdetektierung ist auch so eine Sache... aber muss denn der Nullpunkt sein?
Ist doch egal wo ich abfrage. Am eindeutigsten wären die Spitzenwerte, weil die gibts nur einmal pro Halbwelle. Dann müsste ich aber die Zeit berechnen, wann und wie lange
das Signal anliegen soll.

Nächste Frage: Wenn ich genau nach "0" frage, wer sagt denn dass der adc auch immer eine "Null" liefert?
Man müsste dies eher grober abfragen, oder?
Fragt man stur nach (if Uadc == 0) könnte man doch quasi am Nullpunkt vorbeilaufen.
Da hing ich auch schon fest und der avr ebenfalls.


Die Thyristoren kann ich jetzt mit einem Impuls anschalten und sie werden beim Nulldurchgang der 50 Hz wieder gelöscht.
Das läuft, nur sind die 50Hz und AVR-STeuerspannung nicht synchron. Dies führt je nach Phasenlage scheinbar bzw. hörbar zu einer Art "Hüllkurve"
Man hört dann das 50 Hz "nagen" und deutlicher langsamer schwingt das Ganze.

Jetzt versuche erst einmal den oben von Dir genannten Modus einzustellen und berichte.

Gruß
Ralf
 
Eben deswegen ist der Nullpunkt ja einfacher zu finden. Du hast ja einen Trafo von Netzspannung auf 12V-AC oder so. Du könntest zB (wenn Du die Phasenverschiebung des Trafos und so in Kauf nimmst) einfach auf der Sekundärseite 'n Optokoppler mitreinhängen (mit Vorwiderstand und ggf Diode), der dann bei jedem Phasendurchgang kippt - und dessen Ausgang einen hochgezogenen AVR-Pin (Pullup) auf Gnd zwingen.
(Bei einem Dimmer hatte ich das primärseitig über einen Comperator, der einen Optokoppler durchsteuert gelöst.)
Sinnigerweise als Pin hier einen externen Interrupt verwenden.

Wenn Du mit den Thyristoren Phasenanschnitt machst, warum dann nicht gleich 'n OptoTRIAC (wie den bereits erwähnten MOC3023)+ ggf 'n Leistungstriac?

Was meinst Du mit meinem Modus? Im letzten Beitrag hatte ich nur Deine(!) Timereinstellung analysiert
 
Eben deswegen ist der Nullpunkt ja einfacher zu finden. Du hast ja einen Trafo von Netzspannung auf 12V-AC oder so. Du könntest zB (wenn Du die Phasenverschiebung des Trafos und so in Kauf nimmst) einfach auf der Sekundärseite 'n Optokoppler mitreinhängen (mit Vorwiderstand und ggf Diode), der dann bei jedem Phasendurchgang kippt - und dessen Ausgang einen hochgezogenen AVR-Pin (Pullup) auf Gnd zwingen.
(Bei einem Dimmer hatte ich das primärseitig über einen Comperator, der einen Optokoppler durchsteuert gelöst.)
Sinnigerweise als Pin hier einen externen Interrupt verwenden.

Wenn Du mit den Thyristoren Phasenanschnitt machst, warum dann nicht gleich 'n OptoTRIAC (wie den bereits erwähnten MOC3023)+ ggf 'n Leistungstriac?

Was meinst Du mit meinem Modus? Im letzten Beitrag hatte ich nur Deine(!) Timereinstellung analysiert

Mit dem Modus... meine ich ja, hatte mich falsch ausgedrückt.

Optotriac habe ich 10 bestellt, aber es geht ja auch mit 2xTIC106 + 2x CNY17.
Aber die Idee mit dem Optokoppler am Trafo ist eine gute Idee denke ich...
Verstehe ich das richtig.... statt die Spannung zeitdiskret abzufragen, wartet man bis der Optokoppler durch den Nulldurchgang umschaltet ?
Ich benötige dann keine Abfrage des a/d-Wandlers?
Mein Hauptproblem ist jetzt eher Timer &Interruot.
Gruß
Ralf
 
Nulldurchgangserkennung: Genau, sieh Dir mal Cassios Thread an (FreeVEE hatte den bereits in #27 verlinkt - der 2te).
Da Cassios restliche Schaltung über ein "Blindnetzteil" versorgt wird, hat er dem Detektions-OK 'ne eigene Gleichrichtung verpaßt, und zwar als Graetz-Brücke direkt am Netz (in seinem Falle). Der OK geht also bei jedem Nulldurchgang kurz aus (Vorwärtsspannung der LED unterschritten). Dadurch läßt er den auf Gnd gezwungenen Pin am Controller wieder frei, der mit dem externen Pullup dabei auf Hi wechselt. IRQ bei steigender Flanke wird getriggert. Wenn man das nicht Vollgleichrichtet, (sondern ggf nur mit einer Diode), kippt der OK bei jedem Durchgang. Dann müßte man den IRQ halt auf jede Flanke sensibilisieren.

Du kannst das genauso (mit angepaßtem Vorwiderstand für den OK) sekundär des Trafos machen.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)