Formel für Schwingungspaket-Steuerung

Gast #1455302
Lesenswert?

Hallo!

Ich versuche gerade folgendes zu realisieren:

Ich habe eine Platine mit 8 SSR (Solid State Relais) und einem 
PIC18F458. Ich möchte mit diesen Relais eine Schwingungspaket-Steuerung 
realisieren.

Mein Problem ist jedoch die Formel, mit der ich das Tastverhältnis 
ausrechnen kann, damit bei zB. 33% immer 1 Welle schaltet, dann 2 Wellen 
nicht mehr, dann wieder 1 schalten ....

Habe leider bei Google nichts gefunden, und selbst bin ich auch noch 
nicht draufgekommen.
Hat jemand von euch einen Tipp für mich?

Grüße
Mudla
#1455324
Lesenswert?

Keine Ahnung wie sich das Prinzip nennt, aber sowas wie bei DDS 
angewendet wird:
Du addierst den gewünschten Wert in jedem taktauf. Ist das Ergebnis >= 
100% wird der Ausgang eingeschaltet und 100% abgezogen, ansonsten ist er 
aus.
Für denen Fall sähe das dann so aus:
1. Takt: 33,3%, aus
2. Takt: 66,7%, aus
3. Takt: 100% -> 0%, an
usw.
Gast #1455350
Lesenswert?

Bei 50Hz hast du doch 50 Perioden pro Sekunde. Das bedeutet, dass jede 
Periode 2% entspricht. (Bezogen auf eine Sekunde)
Oder anders wenn man über die Nulldurchgänge argumentiert. Pro Periode 2 
Nulldurchgänge. Also jeder Nulldurchgang entspricht 1%.
Ich würde dir aber raten immer ganze Perioden durchzulassen sonst ist 
das Signal nicht mehr mittelwertfrei (gleichstromfrei). Wenn ein Trafo 
davor hängt wird der dann unsymmetrisch magnetisiert und kann in die 
Sättigung geraten.

Ich hoffe der kleine Denkanstoß bringt dich weiter.

Gruß

Mandrake
Gast #1455364
Lesenswert?

Danke für die schnelle Antwort, aber die Lösung funktioniert leider 
nicht wie gewünscht. Was ist zB be 30%? Da wird dann nur jede 4. Welle 
geschaltet, was dann 25% entspricht. Und ausserdem ist dieses Verfahren 
nur unter 50% anwendbar, wo auch mein größter Knackpunkt liegt.

Einerseits ist das Problem, daß ich nur in 2%-Schritten regeln kann 
(Netzbedingt, 50Hz), und andererseits muss ich auch zB 84% richtig 
aufteilen können.

Ich könnte ja eine Tabelle machen, in der ich die 50 Tastraten eintrage, 
aber ich würde es lieber mit Formeln machen.

Mudla
#1455371
Lesenswert?

Mudla schrieb:
> Danke für die schnelle Antwort, aber die Lösung funktioniert leider
> nicht wie gewünscht. Was ist zB be 30%? Da wird dann nur jede 4. Welle
> geschaltet, was dann 25% entspricht.

Nein, spiels mal durch:
1. Takt: 30%, aus
2. Takt: 60%, aus
3. Takt: 90%, aus
4. Takt: 120% -> 20%, an
5. Takt: 50%, aus
6. Takt: 80%, aus
7. Takt: 110% -> 10%, an
8. Takt: 40%, aus
9. Takt: 70%, aus
10. Takt: 100% -> 0%, an

Somit ist die Last in 3 von 10 Takten an, was genau den 30% entspricht.

> Und ausserdem ist dieses Verfahren
> nur unter 50% anwendbar, wo auch mein größter Knackpunkt liegt.

Nein, spiels auch hier mal durch, z.B. mit 90%:
1. Takt: 90%, aus
2. Takt: 180% -> 80%, an
3. Takt: 170% -> 70%, an
4. Takt: 160% -> 60%, an
5. Takt: 150% -> 50%, an
6. Takt: 140% -> 40%, an
7. Takt: 130% -> 30%, an
8. Takt: 120% -> 20%, an
9. Takt: 110% -> 10%, an
10. Takt: 100% -> 0%, an

Somit ist die Last in 9 von 10 Takten an.
#1455389
Lesenswert?

Um in 1%-Schritten zu regeln brauchst Du halt 100 Halb- oder 
Vollsinuswellen.
Auf eine Art von PWM gemünzt würde das bedeuten, daß Deine 
(Pseudo-)PWM-Periodendauer folglich 0,5s oder gar 1s dauert. Bei 
Heizungsregelungen ist das vollkommen ausreichend - aber da Du nichts 
weiter zur Anwendung gesagt hast, kann ich nur mutmaßen.
Also, für die Ein- zu Ausschaltdauer mußt Du einfach die Anzahl der 
Halb- bzw. Vollwellen mitzählen. Wo liegt da das Problem?!?
Soll die (Pseudo-)PWM-Periodendauer kürzer sein, geht das nur auf Kosten 
der Auflösung. Aber selbst dann kann man die gröbere Auflösung wieder 
über mehrere (Pseudo-)PWM-Perioden mitteln - wenn man's denn gescheit 
macht.

Möglicherweise suchst Du ja aber nach einem Algorithmus, der Dir bei 
beliebigen Tastverhältnissen der (Pseudo-)PWM, die eingeschalteten Halb- 
bzw. Vollwellen dann auf die Gesamtperiodendauer einigermaßen 
gleichmäßig zu verteil versucht?! D.h. z.B. bei 2% Einschaltdauer eine 
Halb-/Vollwelle am Anfang der (Pseudo-)PWM-Periode und eine weitere 
Halb-/Vollwelle nach Ablauf von 50% der (Pseudo-)PWM-Periodendauer 
anstatt beide Halb-/Vollwellen unmittelbar hintereinander einzuschalten.
Da wird es dann schon schwieriger aber auch nicht unmöglich. Eine Lösung 
dazu habe ich z.Z. aber nicht greifbar.
#1455394
Lesenswert?

Raimund Rabe schrieb:
> Möglicherweise suchst Du ja aber nach einem Algorithmus, der Dir bei
> beliebigen Tastverhältnissen der (Pseudo-)PWM, die eingeschalteten Halb-
> bzw. Vollwellen dann auf die Gesamtperiodendauer einigermaßen
> gleichmäßig zu verteil versucht?! D.h. z.B. bei 2% Einschaltdauer eine
> Halb-/Vollwelle am Anfang der (Pseudo-)PWM-Periode und eine weitere
> Halb-/Vollwelle nach Ablauf von 50% der (Pseudo-)PWM-Periodendauer
> anstatt beide Halb-/Vollwellen unmittelbar hintereinander einzuschalten.

Genau das macht das von mir beschriebene Verfahren:
Die Periodendauer ist so kurz wie möglich, bei 50% liegt sie bei 2 
Takten, bei 1% bei logischerweise 100 Takten, bei krummen Werten wie 3% 
bei 33 bzw. 34 Takten usw.
#1455450
Lesenswert?

Benedikt K. schrieb:
> Raimund Rabe schrieb:
>> Möglicherweise suchst Du ja aber nach einem Algorithmus, der Dir bei
>> beliebigen Tastverhältnissen der (Pseudo-)PWM, die eingeschalteten Halb-
>> bzw. Vollwellen dann auf die Gesamtperiodendauer einigermaßen
>> gleichmäßig zu verteil versucht?! D.h. z.B. bei 2% Einschaltdauer eine
>> Halb-/Vollwelle am Anfang der (Pseudo-)PWM-Periode und eine weitere
>> Halb-/Vollwelle nach Ablauf von 50% der (Pseudo-)PWM-Periodendauer
>> anstatt beide Halb-/Vollwellen unmittelbar hintereinander einzuschalten.
>
> Genau das macht das von mir beschriebene Verfahren:
> Die Periodendauer ist so kurz wie möglich, bei 50% liegt sie bei 2
> Takten, bei 1% bei logischerweise 100 Takten, bei krummen Werten wie 3%
> bei 33 bzw. 34 Takten usw.

Kann Dir nur zustimmen Benedikt.
Leider hatte ich meinen Post gerade geschrieben (mit Unterbrechungen 
durch Kunden hier, die ich 'bedienen' mußte) als ihr schon eure ersten 
Antworten gegeben hattet. Das mit dem DDS-Prinzip hätte mir eigentlich 
auch einfallen müssen, wo ich doch ein kleiner Fan dieses Verfahrens 
bin. ;-)
Aber wie immer - das Naheliegende fällt einem immer als Letztes ein.
#1455677
Lesenswert?

Ja, sieht nett aus.

Im Text steht: "Das Modul verfügt über 8 Relais-Ausgänge (250VAC/6A), 
welche auch Schwingungspaket-Steuerung (250VAC/1A) unterstützen;"

Kann aber eigentlich nicht sein, wenn Du erst am Entwickeln bist :)

Apropos, entwickelt ihr hier in Deutschland? Wenn ja, wo?

EDIT:
jeder Kanal für sich hat vielleicht nur 250VA, aber 8 Kanäle die 
gleichzeitig gesteuert werden, macht ... 2kVA!
Gast #1455704
Lesenswert?

Naja, die Platine ist ja schon entwickelt, das was du auf der Page 
siehst, ist ein Foto vom 1. fertigen Teil. Den Text habe ich kurz vor 
meinem letzten Post eingefügt. Nur mit der Programmierung war das noch 
ein wenig ein Problem. Jetzt haben wir jedenfalls die Wellensteuerung 
implementiert, und dann fehlt nur noch die PWM, ist aber kein Problem, 
das sie schon vom PIC gemacht wird. Ist nur noch zu programmieren 
(Modbus).

Wir haben unseren Betrieb hier in Südtirol (Italien), liefern aber auch 
ins Ausland. Solltest du Interesse haben, melde dich bitte via eMail.
#1455743
Lesenswert?

Ja, es ist ist ja quasi eine Form von Fehlerverteilung über mehrere 
Takte.
Ich denke es ist eine Variante der Delta-Sigma Modulation:
http://de.wikipedia.org/wiki/Delta-Sigma-Modulation

PS: Damit kann man alles mögliche "dithern" wie z.B. Frequenz durch 
periodisches Umschalten zwischen 2 Teilerfaktoren, oder die Auflösung 
einer PWM Stufe durch periodisches Umschalten zwischen 2 PWM Werten zu 
erhöhen. Manche µC haben mittlerweile sowas hardwaremäßig eingebaut, da 
man dadurch immer mit der maximal möglichen Frequenz arbeitet.
#1455934
Lesenswert?

Das wäre ja quasi was wie Spread Spektrum (zumindest was die Frequenz 
angeht).
Wenn man das SNR (höhö) verbessern möchte, kann man ja auch noch 
Noise-Shaping implementieren.
Ist dann quasi ein DAC mit 50Hz Samplefrequenz. Dann fehlt nur noch ein 
Tiefpassfilter für die Abtastfrequenz und fertig ist die 100kVA 
ShakerEndstufe zum Simulieren von Erbeben im mHz-Bereich :)
Gast #2319359
Lesenswert?

Eine Impulsgruppensteuerung verwende ich auch.
Jedoch sieht dies hier besser aus.

Könnte mir jemand mal einen Beispielcode posten?
Ich würde das gerne mal in Bascom nachprogrammieren ;)
Zur Zeit habe ich eine Wertetabelle aus der ich herauslesen kann ob ich 
den triac einschalte, oder nicht.(Ich zähle die Netznulldurchgänge)
Die ganze Geschichte ist doch recht aufwändig. Wenn ich das 
Programmplatzsparender hin bekommen wäre dass super.

Gruß Anselm
Gast #2320499
Lesenswert?

@Anselm

Ich nehme mal an du zählst die Nulldurchgänge in einer
Interruptroutine.
Leider kenn ich mich in Basic nicht mehr aus, QBasic-Zeiten
sind schon lange her.
Und ich hab auch noch nix zum ausprobieren.
Will mir demnächst eine kleine Steuerung für meine
Schrottige thermische Solaranlage
bauen und da möchte ich auch die Pumpendrehzahl variieren können.

var Zähler
var SollLeistung
var NullZähler


Interruptroutine Nulldurchgänge

Nullzähler=NullZähler+1
wenn NullZähler < 2 verlasse Interruptroutine Nulldurchgänge
dann

   Zähler=Zähler+SollLeistung
   wenn ZählerNulldurchgänge >= 100 dann
                                       Triac_an
                                       Zähler=0
                                    sonst
                                       Triac_aus

Interruptroutine Nulldurchgänge ende

Das Problem ist von einem zum anderen Nulldurchgang ist keine
komplette Sinuswelle. Und wann trifft der Interrupt wirklich ein
kurz vor oder nach dem Nulldurchgang, oder besser wann würde
der Controller den Triac zünden?
Eigentlich (mit einem Nullspannungsschalter) muss die Steuerpannung
ja kurz vor oder während des Nulldurchgangs anliegen (oder weg sein
das der Triac abschaltet).
#2663260
Lesenswert?

hallo,

das Thema ist zwar schon länger unberührt, aber vielleicht...
Ich habe auch vor sowas zu bauen, aber in 2-Kanal Ausführung mit relativ 
großen Lasten.
Hat Jemand eine Idee wie man es schafft, dass die Triacs soweit als 
möglich abwechselnd einschalten, und nur bei Einschaltdauer_Kanal_A + 
Einschaltdauer_Kanal_B >100% gleichzeitig eingeschaltet werden müssen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren