Nabend zusammen, im moment bin ich etwas verwirrt, wie ich den Sharp S202S02 ansteuern muss an welchem ein Heizelement (250W/230V) angeschlossen ist. Ich habe einige Beiträge hier im Forum gelesen dazu. Unter anderem steht da in fast allen drinne, das man eine Schwingungspaketsteuerung realisieren soll. Nur mal so zum wissen, ob ich es verstanden habe. Schwingungspaketsteuerung bedeutet, das von den 50Hz Netzfrequenz (100 Nulldurchgänge) immer nur ein teil zB 50 Nulldurchgänge das Relais angezogen ist. Das ergäbe dann eine Schaltfrequenz von 25Hz. Wie steuere ich das nun am besten an? Folgendes habe ich bis jetzt. Es läuft ein Timer0_Overflow Interrupt. Bei 8MHz des Atmega8 und einem Prescaler von 1024 wird der Interrupt ca alle 30ms ausgelöst. Soweit denke ich mal, dürfte das alles noch passen. Wie geht es da nun weiter. Ich meine aus den Posts gelesen zu haben, das eine PWM schlecht sein soll. Erreichen möchte ich, das von den 100 Nulldurchgängen pro Sekunde 70 oder so das Relais schaltet. In den restlichen 30 dann eben aus. So habe ich das ja verstanden. Hier mal was ich mir denke und mal eine kleine Rechnung. Wenn ich 70 Nulldurchgänge lang das Relais anziehen möchte, dann muss ich in der annahme das die 28ms in der ISR stimmen, 25 ISR durchgänge das Relais angezogen lassen und dann den Rest der Sekunde (1000ms) aus lassen. Hoffe das ist nicht alles zu verwirrend geschrieben :)
Stephan W. schrieb: > Ich meine aus den Posts gelesen zu haben, das > eine PWM schlecht sein soll. Das funktioniert mit dem Sharp sowieso nicht, da er eine Nulldurchgangserkennung hat - er schaltet ein, wenn die LED leuchtet und ein Nulldurchgang erkannt wird. Bis zum Rest der Halbwelle ist er dann aktiviert. Dein Ansatz ist doch schon ganz ok. Du musst dich dank der o.a. Nulldurchgangserkennung eigentlich gar nicht um Halbwellen kümmern, sondern nur noch um die absoluten Zeiten. Bei einem gewünschten Verhältnis von 70:30 Ein/Aus den Sharp also 70% der Zeit anschalten und die restlichen 30% aus. Du könntest 1% als eine Vollwelle definieren (20mSec), dann kommt also raus 70*20mS = 1400 mSec 'Anzeit' und 30*20mSec = 600mSec 'Auszeit. Eine langsame PWM wäre auch denkbar. Der Timer läuft z.B. in 2000 mSec einmal durch (100%) . Ein OCR Register könnte dann daraus das Schaltsignal für den Sharp gewinnen.
Matthias Sch. schrieb: > Das funktioniert mit dem Sharp sowieso nicht, da er eine > Nulldurchgangserkennung hat - er schaltet ein, wenn die LED leuchtet und > ein Nulldurchgang erkannt wird. Bis zum Rest der Halbwelle ist er dann > aktiviert. Das weis ich. Genau deshalb hab ich den Typen auch gewählt, da der mir den Nulldurchgang selbst schalten kann. Beim S202S01 müsste ich das ja auch noch regeln. > Dein Ansatz ist doch schon ganz ok. Du musst dich dank der o.a. > Nulldurchgangserkennung eigentlich gar nicht um Halbwellen kümmern, > sondern nur noch um die absoluten Zeiten. Bei einem gewünschten > Verhältnis von 70:30 Ein/Aus den Sharp also 70% der Zeit anschalten und > die restlichen 30% aus. > Du könntest 1% als eine Vollwelle definieren (20mSec), dann kommt also > raus 70*20mS = 1400 mSec 'Anzeit' und 30*20mSec = 600mSec 'Auszeit. Hier komme ich nun nicht ganz mit, was Du da meinst. 1400mSec sind doch mehr als 1Sekunde. Somit werden doch nicht die 100 Nulldurchgänge (50Hz) des Netzes beschnitten. Oder liege ich da falsch. Müsste es so heisen, das von sagen wir mal 10 Minuten Heizzeit 7 Minuten das Heizelement an ist und 3 Minuten abgeschalten, egal zu welchem Zeitpunkt dann die der 50Hz Netzfrequenz abgeschalten wird? > Ein OCR Register könnte dann daraus das Schaltsignal für den Sharp gewinnen. Das mit dem OCR Register musst Du mir mal noch genauer erklären. Da steigen ich nun gerade garnicht durch, was Du damit meinst.
Stephan W. schrieb: > Hier komme ich nun nicht ganz mit, was Du da meinst. 1400mSec sind doch > mehr als 1Sekunde. Somit werden doch nicht die 100 Nulldurchgänge (50Hz) > des Netzes beschnitten. Oder liege ich da falsch. Nein, mein Ansatz war willkürlkich gewählt, da ich, um eine Schieflage der Netzbelastung zu vermeiden, immer mit Vollwellen gerechnet habe, die ja 20mS lang sind. Um einfach rechnen zu können, habe ich jetzt angenommen, jede Vollwelle entspricht einem Prozent deiner gewünschten Einschaltdauer. Es käme bei 100% ED also 100*20mS = 2000 mS raus, 2 Sekunden pro kompletter 'PWM' Periode. 50% entssprächen dann 1 Sekunde aus, 1 Sekunde an - durchaus zulässig für deine träge Last. Für eine Controllersteuerung ist es praktisch, ein PWM Register zu benutzen, da dann die gesamte SSR Ansteuerung im Hintergrund laufen kann, das Puls/Pausenverhältnis wird in diesem Fall durch ein OCR Register bestimmt. Ein Beispiel: Der 8-bit Timer0 eines AVR zählt von 0 bis 255 und springt dann wieder auf 0. PWM Modus sei aktiviert und die Ausgänge des PWM freigegeben. Das OCR Register sei mit 128 besetzt. In dem Moment, wo der Timer die 128 erreicht, wird dann 'automagisch' der Ausgang OCR0A auf high geschaltet. Sobald der Timer überläuft ( bei 255->0) wird der Ausgang wieder auf low gesetzt - fertig ist die PWM. ( siehe Datenblatt jedes AVR mit Timer PWM) Die Kunst bei der Programmierung der Schwingungspaketsteuerung besteht nun darin, Timerwert und Netzperioden unter einen Hut zu bringen. Du könntest 1. den Timer mit der Netzfrequenz laufen lassen ( per T0 oder T1 Eingang und einem Optokoppler) Vorteil ist, das du dich um praktisch nix kümmern musst, was Periodendauer usw. betrifft und dich voll auf die PWM Programmierung konzentrieren kannst. Nachteil ist der erhöhte Hardwareaufwand. 2. Den Timer sehr langsam laufen lassen, so das z.B. jeder Zählimpuls 10 oder 20mSec lang ist. Vorteil: Keine Hardware nötig, das SSR geht mehr oder weniger direkt an den AVR, sonst nix. Nachteil: Ha, probier erstmal einen Timer so langsam laufen zu lassen. Vermutlich wäre da ein 16-bit Timer besser und es erfordert ein bisschen Rechnerei, um auf vernünftige Werte zu kommen. Gibt bestimmt noch andere Wege, die Forenteilnehmer haben da garantiert noch andere Rezepte auf Lager. Bsp. ein 'Timer Overflow' Getriebe, was einen schnellen Timer runterteilt. Da muss dann allerdings auch die PWM Steuerung 'zu Fuss' gemacht werden.
hi, das spiel heißt (zero crossing detector) nulldurchgang erkennung.ein microcontroller zählt die Nulldurchgänge und führt entsprechend ein befehl aus.Nulldurchgang detektor, microcontroller atmega8 und programiersprache bascom.viel spaß
Matthias Sch. schrieb: > Gibt bestimmt noch andere Wege, die Forenteilnehmer haben da garantiert > noch andere Rezepte auf Lager. Bsp. ein 'Timer Overflow' Getriebe, was > einen schnellen Timer runterteilt. Da muss dann allerdings auch die PWM > Steuerung 'zu Fuss' gemacht werden. Ein 1 Byte Zähler, der z.B. mit 1 Hz Takt oder langsamer immer in der Runde läuft, beim Nulldurchgang die Heizung einschaltet und beim Erreichen eines Vergleichswertes wieder aus, sollte auch zu Fuß irgendwie hinzukriegen sein, ohne den ATmega8 auszureizen - selbst in BASCOM.
Matthias Sch. schrieb: > In > dem Moment, wo der Timer die 128 erreicht, wird dann 'automagisch' der > Ausgang OCR0A auf high geschaltet. Sobald der Timer überläuft ( bei > 255->0) wird der Ausgang wieder auf low gesetzt Das ist natürlich genau umgekehrt, sorry. Der PWM Ausgang wird low, wenn der OCR Wert erreicht ist, bei positiver Logik. Damit ist die PWM Dauer direkt proportional zum OCR Wert.
Hi >Das ist natürlich genau umgekehrt, sorry. Der PWM Ausgang wird low, wenn >der OCR Wert erreicht ist, bei positiver Logik. Damit ist die PWM Dauer >direkt proportional zum OCR Wert. Damit kommst du aber mit der PWM nicht auf Null. Bei OCR=0 ist die PWM immer noch einen Timertakt eingeschaltet. MfG Spess
spess53 schrieb: > Damit kommst du aber mit der PWM nicht auf Null. Bei OCR=0 ist die PWM > immer noch einen Timertakt eingeschaltet. Das ist richtig für den 'Fast PWM Mode' beim ATMega8 - das Datenblatt nennt einen 'Small Glitch' der am Ausgang auftritt, wenn OCR = 0 ist. Anscheinend kann das aber mit dem 'Phase Correct Mode' in Timer 1 und Timer 2 vermieden werden: 'The extreme values for the OCR1x Register represent special cases when generating a PWM waveform output in the phase correct PWM mode. If the OCR1x is set equal to BOTTOM the output will be continuously low and if set equal to TOP the output will be continuously high for non-inverted PWM mode. For inverted PWM the output will have the opposite logic values. '
Hi >Das ist richtig für den 'Fast PWM Mode' beim ATMega8 - das Datenblatt >nennt einen 'Small Glitch' der am Ausgang auftritt, wenn OCR = 0 ist. Der 'Small Glitch' ist soweit mich mich erinnere 1 Timertakt. D.h. die On-Zeit ist im 'non-inverting mode' gleich OCR+1. Der Glitch lässt sich auch bei Fast-PWM vermeiden, indem man den 'inverting mode' benutzt und den OCR-Wert umrechnet. MfG Spess
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.