www.mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Formel für Schwingungspaket-Steuerung


Autor: Mudla (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mandrake (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mudla (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Raimund Rabe (corvuscorax)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Raimund Rabe (corvuscorax)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mudla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Benedikt K.

Dane, jetzt hab ich´s begriffen. Genau sowas habe ich gesucht.

Danke an alle fürs mithelfen :)

Mudla

Autor: Michael O. (mischu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solltest Du nennenswert Leistung stellen und auch noch ein kommerzielles 
Gerät entwickeln wirst Du mit Flicker ein Problem bekommen.
http://www.voigt-trafo.de/documents/emission-netzr...

Wenn nicht, aber trotzdem große Leistung wird die Norm nicht dein 
Problem sein - möglicherweise jedoch das Flackern deiner Lampen nerven.

Autor: Mudla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ein kommerzielles Gerät sollte es schon werden, aber für den 
italienischen Markt. Und die Leistung ist eh begrenzt, da die SSR, die 
ich verwende, nur für 1A ausgelegt sind, dh max 250W.

Ich will hier keine Schleichwerbung machen, aber schau mal unter 
http://www.daitec.it/daitec/produkte/steuerungen-r..., das 
Modbus-RIO-Modul.

Autor: Michael O. (mischu)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Raimund Rabe (corvuscorax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre nicht das erste mal, daß ein Produkt beworben wird, was noch nicht 
einmal entwickelt ist, bzw. nocht nicht alle Features enthält, die man 
angepriesen hat ...

Autor: Mudla (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dummi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
benedikt wrote:
>Keine Ahnung wie sich das Prinzip nennt, aber sowas wie bei DDS
>angewendet wird:

Erinnert mich an dithering.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dummi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Delta Sigma war mir auch in den Sinn gekommen (aus 1 bit PC Sound 
zeiten),
war mir aber nicht sicher.

Hab so auf Atari ST Graustufenbilder auf dem SW-Monitor angezeigt.

Autor: Michael O. (mischu)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Heiko Krämer (heikokraemer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin mir jetzt nicht ganz sicher, ob ich das so verstanden habe, aber 
so könnte es Funktionieren.
Nach dem Motto Bilder sagen mehr als Worte habe ein kleines Programm
gebastelt. Darf ich überhaupt ausführbare Dateien hochladen ?

Autor: Heiko Krämer (heikokraemer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
nochmal mit anderer Einstellung

Autor: Anselm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anselm 68 (anselm68)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, habs kapiert ^^

Autor: heikokraemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Anselm 68 (anselm68)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meine Nulldurchgangserkennung löst kurz davor aus, ich muss nur ein wait 
einfügen dait es klappt. und nur alle 2 durchgänge die berechnung zu 
machen ist auch okay ;)

Autor: Simon N. (jahusi)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dummi schrieb:
> Erinnert mich an dithering.
Wohl eher "Phasenakkumulator"

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leichenschänder ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.