C Attiny13 PWM

flecralf

Mitglied
25. Juli 2013
194
2
18
Sprachen
  1. ANSI C
Hallo alle zusammen,
die PT100-Auswertung ist nun mit Hängen und Würgen zum Laufen gebracht worden.
Nun versuche ich seit 2h das PWM-Programm eines atmega8(da läufts es) auf einen Attiny13 zu übertragen, ohne Erfolg.
Frage vorab, kann man den PWM-Ausgang auch auf PB4 legen? Oder, gibt es Einschränkungen?

DDRB = 1<<DDB0;
PORTB = (1<<PB0); //Zum Test hängt die Led wieder an PB0
TCCR0A=(1<<COM0A1) | (1<<WGM00) | (1<<WGM01);
TCCR0B=(1<<WGM02) | (1<<CS00) | (0<<CS01) | (1<<CS02);
OCR0A=Pwm_Wert;
while(1)
{
OCR0A= pwm-Wert
}

Es tut sich gar nix....
Wo liegt denn der Fehler?
Gruß
Ralf
P.S
die fusebits sind unverändert---> f=1.2E6
 
Hallo flecralf,
ich kann leider überhaupt kein C aber wenn ich deine Bitschieberei richtig interpretiere machst du folgendes:
Deine PWM läuft mit f=1.200.000/1024, weil CS02:0 = 101
Dein Mode ist 7:FastPWM mit OCRA als Top Wert
Dann kommt dein PWM Signal an PB1 raus, wenn du in OCRB einen Wert mit 0<=OCRB<=OCRA setzt.
Wenn du deinen Setup mit OCRA beibehalten willst, müsstest du WGM02 auf 0 setzen.

Edit: Ist eigentlich das (0<<CS01) korrekt, um ein Bit auf 0 zu setzen?
 
Nicht ganz...
(bzw nicht ganz genau begründet)

WGM7 (111) ist wie gesagt FastPWM mit OCR0A=Top. Insbesondere ist also auch WGM02 gesetzt.
Der Timer läuft also bei OCR0A über.
Mit Com0A1=1 hast Du jetzt zwar eigentlich eingestellt, daß der Pin (B0) beim Compare gelöscht, und beim Überlauf gesetzt wird, allerdings ist wegen des WGM OCR0A=Top, und in dem Fall sagt die Fußnote unter Table 11-3:
A special case occurs when OCR0A equals TOP and COM0A1 is set. In this case, the Compare
Match is ignored, but the set or clear is done at TOP. See “Fast PWM Mode” on page 64
for more Details.
Der Pin sollte also immer gesetzt sein...
Wenn Du OCR0A jetzt einen neuen Wert zuweist, änderst Du die PWM-Frequenz. Nicht den Duty-Cycle, klar? PWM kannst Du so (Frequenzkorrekt) mit diesem Timer nur an OC0B ausgeben.
Aber ich denke, Du hast dich einfach nur mit dem WGM vertan - in Wirklichkeit willst Du nur den FastPWM (Mode3=011) mit 0xFF also Topwert und Kanal A als Ausgabe.

Die Ausgänge des PWM von Timer0 sind in der Hardware festgelegt (eben OC0A und OC0B) - bei anderen Controllern gibt es inzwischen Möglichkeiten, unterschiedliche Pins (ggf sogar mehrere) an die OC-Units zu koppeln. Du kannst natürlich statt des Hardware-PWM auch 'nen Pin in Software schalten, und nur den OC-IRQ dazu verwenden. aber rein in Hardware sind beim Tiny13 die Pins festgelegt...

Zum Edit:

ja, das geht. Der Präprozessor rechnet das entsprechend zusammen (als Byte vorher war es 0, jetzt wird 'ne 0 nach links geschoben -> bleibt 0) - insgesamt 5. Im Flash landet dann letztendlich:
lade 5 in ein Rechenregister
kopiere Inhalt des Rechenregisters in das I/O-Register mit der Adresse von TCCR0B.
 
Nicht ganz...
(bzw nicht ganz genau begründet)

WGM7 (111) ist wie gesagt FastPWM mit OCR0A=Top. Insbesondere ist also auch WGM02 gesetzt.
Der Timer läuft also bei OCR0A über.
Mit Com0A1=1 hast Du jetzt zwar eigentlich eingestellt, daß der Pin (B0) beim Compare gelöscht, und beim Überlauf gesetzt wird, allerdings ist wegen des WGM OCR0A=Top, und in dem Fall sagt die Fußnote unter Table 11-3:

Der Pin sollte also immer gesetzt sein...
Wenn Du OCR0A jetzt einen neuen Wert zuweist, änderst Du die PWM-Frequenz. Nicht den Duty-Cycle, klar? PWM kannst Du so (Frequenzkorrekt) mit diesem Timer nur an OC0B ausgeben.
Aber ich denke, Du hast dich einfach nur mit dem WGM vertan - in Wirklichkeit willst Du nur den FastPWM (Mode3=011) mit 0xFF also Topwert und Kanal A als Ausgabe.

Die Ausgänge des PWM von Timer0 sind in der Hardware festgelegt (eben OC0A und OC0B) - bei anderen Controllern gibt es inzwischen Möglichkeiten, unterschiedliche Pins (ggf sogar mehrere) an die OC-Units zu koppeln. Du kannst natürlich statt des Hardware-PWM auch 'nen Pin in Software schalten, und nur den OC-IRQ dazu verwenden. aber rein in Hardware sind beim Tiny13 die Pins festgelegt...

Zum Edit:

ja, das geht. Der Präprozessor rechnet das entsprechend zusammen (als Byte vorher war es 0, jetzt wird 'ne 0 nach links geschoben -> bleibt 0) - insgesamt 5. Im Flash landet dann letztendlich:
lade 5 in ein Rechenregister
kopiere Inhalt des Rechenregisters in das I/O-Register mit der Adresse von TCCR0B.

N'Abend allerseits !
So, bin wieder mal dran...Das mt dem Überlauf und dem Compare hatte ich irgendwie vor lauter Schaum vorm Mund und Ungeduld übersehen. Ich werde das ganze nochmal berarbeiten und dann hochladen.
Die PWM funktioniert soweit. Das Problem nun, dass der über den adc-Wandler eingelesene Wert, ein unrhythmisches Flackern verursacht. Gebe ich einen Wert direkt an OCR0A läufts gut.
Die PWM-Frequenz einzustellen ist nicht ganz ohne Bedeutung, da ich aus planwirtschaftlichen Gründen einen BU208A als Schalter nutze. Außerdem pfeift die Glühlampe, wohl doch kein rein Ohmsch'er Verbraucher.
;-).

Gruß und Danke schonmal
Ralf
 
hi,

du gibst das ADC Signal in dein OCR Register und dann flackert es?

Naja da gibts eigentlich nur zwei "grobe" Fehler die man machen kann,

(aus der Ferne und ohne Source kann ich da nur mal ins blaue raten *g*).

1. dein ADC Value (10 bit 0 - 1023) ist nicht auf 8 Bit begrenzt (du hast ja nur nen 8Bit Timer).
2. dein ADC Value ist so "verrauscht", dass du es erst durch mittelwert Bildung glätten musst
3. (kombination aus 1 und 2 *g*).

ev. hilft es ja :)

Gruß,
Manuel
 
Hmm... Glühlampe+Hochspannungstransistor -> WAS genau hast Du vor?

PWM-Frequenz: wenn Du die ändern willst, kannst Du mit diesem Timer (diesem Controller) eigentlich nur entweder am Systemtakt (und SystemClockPrescaler) oder am Vorteiler des Timers grob "drehen", und zum "Feintuning" die Zählreichweite des Timers begrenzen. In Software könnte man den Timerzähler bei jedem Durchlauf vorsetzen (preload), in Hardware den Überlaufpunkt auf einen Wert kleiner Max (0xFF) setzen. Letzteres geht bei dem Controller/Timer nur mit OCR0A als Vergleichsregister (Mode7 - singleSlope, Mode5 - dualSlope) - dann kann KanalA logischerweise nicht für Hardware-PWM genutzt werden. Aber immerhin noch KanalB.

Wenn die Frequenz auf diesem Wege eingestellt wird, der Timer also weniger weit zählt, muß natürlich auch beachtet werden, was Du jetzt in das PWM-Register (jetzt B) als Vorgabe schreibst.

Ich hatte (Dir?) in 'nem anderen Thread ja mal'ne Übersicht über die WGM eines potenteren Timers erstellt - hier ist das eigentlich dasselbe. Nur eben wesentlich kleiner...
 
Hmm... Glühlampe+Hochspannungstransistor -> WAS genau hast Du vor?

PWM-Frequenz: wenn Du die ändern willst, kannst Du mit diesem Timer (diesem Controller) eigentlich nur entweder am Systemtakt (und SystemClockPrescaler) oder am Vorteiler des Timers grob "drehen", und zum "Feintuning" die Zählreichweite des Timers begrenzen. In Software könnte man den Timerzähler bei jedem Durchlauf vorsetzen (preload), in Hardware den Überlaufpunkt auf einen Wert kleiner Max (0xFF) setzen. Letzteres geht bei dem Controller/Timer nur mit OCR0A als Vergleichsregister (Mode7 - singleSlope, Mode5 - dualSlope) - dann kann KanalA logischerweise nicht für Hardware-PWM genutzt werden. Aber immerhin noch KanalB.

Wenn die Frequenz auf diesem Wege eingestellt wird, der Timer also weniger weit zählt, muß natürlich auch beachtet werden, was Du jetzt in das PWM-Register (jetzt B) als Vorgabe schreibst.

Ich hatte (Dir?) in 'nem anderen Thread ja mal'ne Übersicht über die WGM eines potenteren Timers erstellt - hier ist das eigentlich dasselbe. Nur eben wesentlich kleiner...


Moin moin,
ich hab' noch einen Weller Lötkolben einer Lötstation hier rumliegen, keine Magnastat, sondern Temperaturen von 50 C° bis 450 °C .
Die Lampe dient nur zur Veranschaulichung.
Damit wollte ich mir eine Ersatzlötstation aufbauen.
Die Ursache für das Flackern wohl zum größten Teil auf das Poti zurückzuführen.
Zudem war noch der adc-Wert an die PWM anzupassen.
ADC----->PWM
0-1024 ---> 0--->255
Der Bu208 liegt hier unnütz rum, also findet er Verwendung.
Gruß
 
Du kannst das ADC-10bit-Ergebnis natürlich durch zweimaliges rechtsschieben in ein 8bit-Ergebnis konvertieren, welches dann direkt in das verwendete Output-Compare-Register des 8bit-Timers geschrieben werden kann.
Da die 10 Bit aber vom ADC eh in 2 8bit-Registern abgelegt werden, kannst Du auch (wenn C das ermöglicht) das Ergebnis linksorientiert in den beiden Registern ablegen lassen (Bit ADLAR in ADMUX), dann stehen in ADCH bereits die meistwertigsten 8 Bits des Ergebnisses - das kannst Du also direkt in das OCR kopieren. Allerdings auch nur solange, wie der verwendete Timer mit 8bit läuft (also nicht via preload etc in der Reichweite abgeschnitten ist).

Du willst dann eine irgendwie geartete Gleichspannung zerhacken (PWM), und auf das Heizelement packen?
 
Du kannst das ADC-10bit-Ergebnis natürlich durch zweimaliges rechtsschieben in ein 8bit-Ergebnis konvertieren, welches dann direkt in das verwendete Output-Compare-Register des 8bit-Timers geschrieben werden kann.
Da die 10 Bit aber vom ADC eh in 2 8bit-Registern abgelegt werden, kannst Du auch (wenn C das ermöglicht) das Ergebnis linksorientiert in den beiden Registern ablegen lassen (Bit ADLAR in ADMUX), dann stehen in ADCH bereits die meistwertigsten 8 Bits des Ergebnisses - das kannst Du also direkt in das OCR kopieren. Allerdings auch nur solange, wie der verwendete Timer mit 8bit läuft (also nicht via preload etc in der Reichweite abgeschnitten ist).

Du willst dann eine irgendwie geartete Gleichspannung zerhacken (PWM), und auf das Heizelement packen?

Hallo,
so, soweit läuft es....
Mit dem Pt100 wirds wohl nix, da ich keine Ahnung hab' wie ich das Ding in die Lötspitze fixieren kann.
Also werde ich ein Thermoelement nehmen. Zuerst muss ich die PWM etwas kultivieren.
Die funktioniert, aber es pfeift- sowohl im Lötkolben als auch im Gerät.
Relativ zentraler Massepunkt, kurze Strippen zwischen Transistor, Gleichrichter und Elkos.
220 n verstärken die beiden 2200u-Elkos bei höhreren Frequenzen.
Trotzdem pfeift das Ding wie ein alter Fernseher (der Geist des BU208???).
Ich werde nochmal 4700u parallel dazuklemmen und berichten.
Zu Deiner Frage: Ja, Trafo 230 V/ 24 V ->Gleichrichter und dann mit PWM zerhacken.
Mit der PWM bin ich noch nicht ganz vetraut.
Mein altes EO213-Glaskugel-Oszi zeigt mir eine f=2,5 kHz.
Das passt bei prescale=1 und damit f=fclk/(n*510)=1,2*10^6/510=2,35kHz.
Somit ist f=const. und t_on/T=f(Uadc).
Das Pfeifen ist damit wohl erklärt. Außer dem 50 Hz Brummen bzw 100 Hz hinter der Brücke
zeigt das Oszi nix Außergewöhnliches.
Kann ich die Frequenz noch irgendwie erhöhen?
Mit Prescale = 1 sehe ich erst mal keine Möglichkeit.
Gruß
Ralf

Gruß
 
Hallo Ralf,

Die funktioniert, aber es pfeift- sowohl im Lötkolben als auch im Gerät.
...
Trotzdem pfeift das Ding wie ein alter Fernseher (der Geist des BU208???).
...
Mein altes EO213-Glaskugel-Oszi zeigt mir eine f=2,5 kHz.
Das passt bei prescale=1 und damit f=fclk/(n*510)=1,2*10^6/510=2,35kHz.
Somit ist f=const. und t_on/T=f(Uadc).
Das Pfeifen ist damit wohl erklärt.
...
Kann ich die Frequenz noch irgendwie erhöhen?
das Pfeifen wird wohl von Bewegungen des Heizdrahtes kommen. Der ist ja im Heizelement nicht unbedingt fest einzementiert. Also schwingt er durch den vom Strom ausgelösten Magnetfelder mit der PWM-Frequenz.

Warum machst du die Frequenz nicht kleiner (um die 30-150Hz)? Das Heizelement sollte träge genug sein. Man sieht sich ja auch nicht an in welchem Rhythmus der Draht leuchtet (wird wohl bei der Temperatur auch nicht leuchten).

Gruß
Dino
 
Vorweg: Welchen PWM-Modus verwendest Du denn?
Im FastPWM sollten es Takt/Prescaler/Timerreichweite sein, also ca 4,7 kHz. Oder verwendet Du einen dualSlope-Modus?
Trotz Dinos Hinweis mal 'ne Antwort auf Deine Frage, Du hast (da der Timer bereits mit Systemfrequenz läuft) noch folgende Möglichkeiten:
-Systemtakt erhöhen
-Reichweite des Timers verringern

Frage am Rande: wird da nicht normalerweise die (runtertransformierte) Wechselspannung auf das Heizelement gelegt? Geregelt dann mit angeschnittenen Phasen?

Edit: hatte ich eigentlich bereits in #6 schon geschrieben...
 
Vorweg: Welchen PWM-Modus verwendest Du denn?
Im FastPWM sollten es Takt/Prescaler/Timerreichweite sein, also ca 4,7 kHz. Oder verwendet Du einen dualSlope-Modus?
Trotz Dinos Hinweis mal 'ne Antwort auf Deine Frage, Du hast (da der Timer bereits mit Systemfrequenz läuft) noch folgende Möglichkeiten:
-Systemtakt erhöhen
-Reichweite des Timers verringern

Frage am Rande: wird da nicht normalerweise die (runtertransformierte) Wechselspannung auf das Heizelement gelegt? Geregelt dann mit angeschnittenen Phasen?

Edit: hatte ich eigentlich bereits in #6 schon geschrieben...


Genau, normalweise wird in den Lötstationen, zumindest in den alten Weller-Stationen, 24 VAC/50 Hz über einen U106+TIC225 Phasenanschnitt oder Phasenabschnitt betrieben.
Ich wollte den Triacs aus dem Weg gehen und.... die BU208 lagen hier nutzlos rum...
FastPWM.... dualSlope.... Uuppps muss nochmal lesen.
Soweit ich sehe, nutze ich den "irgendwie tut sich da was-Modus". ;-)
Also hier der Code dazu:
TCCR0A |= (1<<COM0A1) | (1<<WGM00); // PWM Phase correct mode 1
TCCR0B |= (1<<CS00);// --no prescale
DDRB |= (1<<PORTB0); // PB0 (Pin 5) --->>>> Ausgang

Gruß
 
Hallo Ralf,


das Pfeifen wird wohl von Bewegungen des Heizdrahtes kommen. Der ist ja im Heizelement nicht unbedingt fest einzementiert. Also schwingt er durch den vom Strom ausgelösten Magnetfelder mit der PWM-Frequenz.

Warum machst du die Frequenz nicht kleiner (um die 30-150Hz)? Das Heizelement sollte träge genug sein. Man sieht sich ja auch nicht an in welchem Rhythmus der Draht leuchtet (wird wohl bei der Temperatur auch nicht leuchten).

Gruß
Dino

Hi Dino,
noch dienen 2x 12 V Kfz-Scheinwerferlampen als Last. Die pfeifen zwar auch, aber auch aus Ecke des Transistors pfeifts.
Zuerst hatte ich den Ringkerntrafo im Visier... Nachdem ich dann allerdings die Schaltung extern mit DC versorgt hatte, hatte sich dieser
Verdacht wieder aufgelöst. Auch ein dickerer Elko (Summe knapp 10000 uF) + 2,2 u MKP brachten nix.
Die Frequenz hatte ich über prescale schon mal runtergedreht, aber dennoch störend hörbar.
Nachtrag:prescale 1024 es flackert, aber dem Lötkolben dürfte das wohl egal sein.... ;-)
Gruß
Ralf
 
Phasekorrekt bzw dualSlope...
Mit dem fastPWM hättest Du effektiv die doppelte PWM-Frequenz. Allerdings keine Symmetrie mehr. Die brauchst Du hier aber auch nicht.

Mit den 2Hz (über den Daumen durchs Fensterkreuz...) fiepts nicht mehr? Dann nimm den.
 
Hallo Ralf,


das Pfeifen wird wohl von Bewegungen des Heizdrahtes kommen. Der ist ja im Heizelement nicht unbedingt fest einzementiert. Also schwingt er durch den vom Strom ausgelösten Magnetfelder mit der PWM-Frequenz.

Warum machst du die Frequenz nicht kleiner (um die 30-150Hz)? Das Heizelement sollte träge genug sein. Man sieht sich ja auch nicht an in welchem Rhythmus der Draht leuchtet (wird wohl bei der Temperatur auch nicht leuchten).

Gruß
Dino

Hi Dino,
scheinbar hat der BU208 doch etwas zu hohe Erwartungen bezüglich des Basisstroms.
Er wurde bei einem Laststrom von 2 A nach 10 Min. garstig warm.
Kam wohl daher, dass er nicht ganz zumachte und teilweise im linearen Betrieb verweilte.
Von welchem Typen habe ich noch mehr auf Lager als von dem des BU208 ?
Richtig, jede Menge 2N3055 liegen hier sinnlos rum.
Den Bux85 hab' ich durch einen BD243 ersetzt, gemäß dem Motto altes TV-HV-Zeugs raus und altes NF-Verstärker-
Zeugs rein. Der BD243 treibt jetzt in Darlington-Schaltung den 2N3055. Und das funktioniert bei
allen Geschwindigkeiten, zum Hören und Sehen. :)
Was mich jetzt noch, man fast sagen quält, ist das Prinzip mit einem Triac als Phasen(an)abschnittsteuerung.
Dazu gibts wohl einen MOC3041 als Optokoppler mit integriertem Triac.
Den habe ich allerdings nicht zu Händen, dauert somit noch.
Gruß
 
Was denn nun? Phasenan- oder -abschnitt?

der MOC304x ist doch der mit integrierter Nulldurchgangserkennung, oder? Damit ginge also Anschnitt nicht.
Ich habe hier sowohl von diesem, als auch von dessen Pedant ohne Erkennung diverse rumzuliegen... ab grad nicht im Kopf, welche...

Kann ja mal suchen, ob hier zu meiner Pumpendimmung schon was steht...

Nachtrag: hier hatte ich lediglich mal (wegen einem anderen Problem) was dazu geschrieben - immerhin in Grundzügen den Algorythmus des Programmes...
Aber eben Anschnitt mit den "schwarzen" MOCs (meine 3041er sind "weiße" PDIPs)

Aber Cassio hat irgendwo schon über An- und Abschnitt mit den beiden MOCs ausführlich geschrieben...

Cassio... link?

Noch'n Nachtrag: Meine MOCs sind 3023 und 3043 (also geringerer LED-Strom)
Da's bei mir um Netzspannung geht, steuert der MOC dann einen Leistungstriac an...
 
Was denn nun? Phasenan- oder -abschnitt?

der MOC304x ist doch der mit integrierter Nulldurchgangserkennung, oder? Damit ginge also Anschnitt nicht.
Ich habe hier sowohl von diesem, als auch von dessen Pedant ohne Erkennung diverse rumzuliegen... ab grad nicht im Kopf, welche...

Kann ja mal suchen, ob hier zu meiner Pumpendimmung schon was steht...

Nachtrag: hier hatte ich lediglich mal (wegen einem anderen Problem) was dazu geschrieben - immerhin in Grundzügen den Algorythmus des Programmes...
Aber eben Anschnitt mit den "schwarzen" MOCs (meine 3041er sind "weiße" PDIPs)

Aber Cassio hat irgendwo schon über An- und Abschnitt mit den beiden MOCs ausführlich geschrieben...

Cassio... link?

Noch'n Nachtrag: Meine MOCs sind 3023 und 3043 (also geringerer LED-Strom)
Da's bei mir um Netzspannung geht, steuert der MOC dann einen Leistungstriac an...


Hallo LotadaC,
da es ja eine quasi rein Ohm'sche Last ist, wäre doch eine Abschnittssteuerung besser, oder?
Dann wären die geschalteteten Ströme nicht so hoch, wenn man bei Nulldurchgang einschaltet.
Und, abschalten bei Ohmscher Last ist ja kein Problem, verglichen mit einer Induktivität.
Bin noch am grübeln.. das ganze läuft ja erstmal ohnehin über einen 230 V / 24 V Trafo....
Ob es eine Lösung ohne Optokoppler gibt? Könnte man sich evtl. einen Optokoppler aus einem ordinären CNY17 selber stricken?
Triacs kenne ich auch nur aus Dimmern und Bohrmaschinen.
Gruß
 
???
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.
 
???
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.


Mit einem Triac geht das schon. Man schiebt über ein RC-Glied einfach die Gatespannung nach hinten. Bei 90 ° macht das Gate dann auf, wenn die Spannung von Anode-Kathode auf 0 V steht
Bei 0 ° liegen beide in Phase und man hat 100 % Leistung. Gelöscht wird der Triac beim Nulldurchgang.
Aber, dies nur beim klassischen Dimmer... Beim Avr, keine Ahnung...

Der Strom ist im Scheitelpunkt gleich, egal ob Abschnitt oder Anschnitt.
Aber, mein Gedanke war, das bei Abschnittssteuerung der Strom gemäß dem Sinusverlauf anläuft und nicht mittendrin "reinknallt".
Das Abschalten bei max. Strom wäre beim Ohmschen Verbraucher Wurscht, das es ja zu keinem Spannungsanstieg käme wie bei einer
Induktivität.
So meine Gedanken...
Gruß
 
Hi,

Mit einem Triac geht das schon. Man schiebt über ein RC-Glied einfach die Gatespannung nach hinten. Bei 90 ° macht das Gate dann auf, wenn die Spannung von Anode-Kathode auf 0 V steht
Bei 0 ° liegen beide in Phase und man hat 100 % Leistung. Gelöscht wird der Triac beim Nulldurchgang.
Aber, dies nur beim klassischen Dimmer... Beim Avr, keine Ahnung...
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
 

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