# PWM programmieren



## salih.kay@gmx.de (25 Oktober 2017)

Abend Leute,

Ich bin zeimlich alt aber auch neu auf dieser Seite. Bin eher ein Leser 😅.

Zu meiner Frage:
Ich muss eine Pulsweitenmodulation programmieren. D.h. Ich habe eine Stellgröße eines Reglers 4-20mA.
Mit dieser Stellgröße muss ich binär Ausgänge ansteuern. Das sind in meinem Fall Brenner in einer Zone. Die eine bestimmte Impulsdauer haben. Aber das kann ich selber programmieren. Ich habe auch die PWM programmiert aber das gibt es bestimmt auch in leicht.

Lösungsansätze zu dieser Aufgabenstellung:
Baustein der einen Analogeingang 0-100% und einen Binärausgang der in Abhängigkeit zu dem Analogeingang taktet.

Ich bedanke mich vorraus.


----------



## Mavorkit (25 Oktober 2017)

Guten Abend,

Zuerst würde ich eine Periode Dauer festlegen. Dann würde ich mir mit zwei ausschaltverzögerungen mit Rückkopplung einen Blinker bauen. Dann würde ich die Zeiten entsprechend des Einganges berechnen.
z.B.  bei 10s sind 67%=6,7s an und 10s-6,7s=3,3s aus.

Hoffe das hilft weiter.

Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## JanB1 (25 Oktober 2017)

"Such dir ne Bibliothek und nutz ein bereits vorfabrizierten Baustein" ist wohl nicht die Antwort die du suchst, oder? 




Mavorkit schrieb:


> Zuerst würde ich eine Periode Dauer festlegen. (...)



Aber anhand von was legst du die Periodendauer fest?


----------



## Senator42 (25 Oktober 2017)

an welche HW dachtest du dabei ?
welche Zeiten eigentlich ?  Sekunden oder schon in 0,1 bis 5 ms ?

Ab 1 Sekunde gehts, naja, mit selbst gemachten Ausgängen wie in #2
Wenn schneller, könnte es mit einer Zählerbaugruppe gehn.
Oder mit einem Mikrokontroller, 
dann aber selber löten (um aus 4-20mA -> 0-5V zu machen und von 5V via OptoKoppler, Transistor oder MOSFet dann raus.)
[ mit Mikrokontroller habe ich schon oft gemacht ]


----------



## JanB1 (25 Oktober 2017)

Senator42 schrieb:


> Ab 1 Sekunde gehts, naja, mit selbst gemachten Ausgängen wie in #2
> Wenn schneller, könnte es mit einer Zählerbaugruppe gehn.



Gibt ja z.B. von Wago extra PWM-Karten für so was.


----------



## weißnix_ (26 Oktober 2017)

Wie wäre ein Zähler von 0...99?
Der Zähler wird (bei konstanter Zykluszeit) z.B. in jedem Zyklus hochgezählt. Damit bekommst Du schon recht schnelles PWM.
Der Ausgang wird in Abhängigkeit vom Vergleich Sollwert-Zählerstand durchgeführt.

Die Frage ist aber: Was für eine PWM-Frequenz der Brenner erwartet. Oben skizzierte Möglichkeit ist die höchste Frequenz, die Du hinbekommst ohne spezielle Ausgangsbaugruppen.
(Mit Tricks gehts noch schneller: z.B. bezweifle ich die Fähigkeit des Brenners, 100 Modulationsstufen darzustellen. Will heißen, wenn Du nur bis 50 zählst, wird es doppelt so schnell)

Nachtrag: Übliche PWM-Frequenzen liegen im niedrigen Kiloherzbereich. Das skizzierte Verfahren schafft ~1..20Hz


----------



## Mavorkit (26 Oktober 2017)

JanB1 schrieb:


> "Such dir ne Bibliothek und nutz ein bereits vorfabrizierten Baustein" ist wohl nicht die Antwort die du suchst, oder?
> 
> 
> 
> Aber anhand von was legst du die Periodendauer fest?


Hi Jan,

Kommt auf den Anwendungsfall an, aber eine Periodendauer musst du auch bei dem fertigen Baustein festlegen.
Wenn das ganze natürlich schneller werden soll ist das mit normalen Ausgängen nichts. Aber dafür wurden ja schon die PWM Karten benannt.

Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## weißnix_ (26 Oktober 2017)

JanB1 schrieb:


> Aber anhand von was legst du die Periodendauer fest?



Ganz einfach: Das steht im Datenblatt des Aktors (Brenner).


----------



## salih.kay@gmx.de (26 Oktober 2017)

Danke für eure Antworten bzw. Lösungsvorschläge. Ich habe sogesehen keinen PWM als Ausgang.
Ich habe in einer Zone 4 Brenner. Diese Brenner laufen in der Regel für 20s. Danach gehen sie aus. Natürlich in Abhängigkeit zur Stellgröße. Wenn die Stellgröße hoch ist wird er wahrscheinlich erneut anlaufen. Es ist am Ausgang ein Recht langsammer PWM. 

Ich möchte das gerne in eine SPS integrieren und am besten ohne Mikrocontroller arbeiten.


----------



## weißnix_ (26 Oktober 2017)

Dann gibt eigentlich die Mindesteinschaltzeit des Brenners die PWM-Periode vor.
Wenn Du mit einem 5 stufigen PWM-Zähler arbeitest wäre die PWM-Periode ~ 5 fache Mindesteinschaltzeit.
In meinem Beispielkonzept musst Du also nur einen passenden Zeittakt generieren.


----------



## salih.kay@gmx.de (26 Oktober 2017)

Die Periodendauer wird nicht auf den Brenner ausgelegt sondern auf das Material, dass im Ofen ist. Falls man zu hohe Perioden hat, dann bekommt das Material punktuelle Temperaturpeaks. Diese sind natürlich zu vermeiden.


----------



## JanB1 (26 Oktober 2017)

weißnix_ schrieb:


> Ganz einfach: Das steht im Datenblatt des Aktors (Brenner).



Nah, ich mein jetzt z.B. wenn man eine Dimmsteuerung für LEDs machen will. Wie lange ist die Periodendauer da? 
Und einfach Datenblatt reicht nicht. Man will ja mit der PWM-Steuerung Dinge die nur Ein- oder Ausgeschaltet werden können so takten, dass ein bestimmter Durchschnittswert erreicht wird. 
Nehmen wir also einen Motor, der nur Ein- oder Ausgeschaltet werden kann und man will eine bestimmte Anzahl Umdrehungen pro Minute erreichen. Man kann ihn natürlich einfach so lange laufen lassen, bis x Umdrehungen erreicht sind und ihn dann ausschalten. Oder man taktet ihn so, dass er nur so schnell dreht, dass er am Ende der 60s genau die Anzahl Umdrehungen erreicht hat, die er soll. 
Verstehst du was ich meine? 
Wenn er mit dem Brenner eine bestimmte Temperatur zur Erhitzung eines Mediums erreichen will, so kann er ihn nicht für 40s Einschalten und dann für 20s auslassen. Das gibt zwar im Mittelwert eine bestimmte Temperatur, aber während der 40s kann das Medium an einer Stelle so heiss werden, dass es eventuell unbrauchbar wird und an der anderen Stelle ist gar nix.

Edit: Also genau, was er hier beschrieben hat. 



salih.kay@gmx.de schrieb:


> Die Periodendauer wird nicht auf den Brenner ausgelegt sondern auf das Material, dass im Ofen ist. Falls man zu hohe Perioden hat, dann bekommt das Material punktuelle Temperaturpeaks. Diese sind natürlich zu vermeiden.


Man muss die PWM-Periodendauer auf die Anwendung, nicht auf das zu steuernde Objekt (LED, Brenner, Motor, usw.), abstimmen.


----------



## weißnix_ (26 Oktober 2017)

Ich war bis zu dem Zeitpunkt og. Antwort von einem Aktor (Brenner) ausgegangen, der Modulierend arbeitet und den Leistungssollwert via PWM empfängt. Typisches Beispiel wären modulierende Gasbrenner in Gasheizungen.
Hier handelt es sich aber eher um eine Zweipunktregelung. Da findet man im Datenblatt natürlich nix über PWM.
Deswegen hatte ich die Mindesteinschaltdauer erwähnt. Wenn der Brenner 10s Taktungen zulässt, dann kann die PWM-Periode bei z.B. 60s liegen.
Nimm einen Zähler 0...6. Stufe 0 ist klar.
Stufe 1  10s an 50 aus
Stufe 2  20s an 40 aus
Stufe 3 30s an 30s aus
Stufe 4 40s an 20 aus
usw.
Das ist PWM (eigentlich PLM) mit einer Periode von 1min (0.16Hz). Aber wie gesagt: Das macht nicht jeder Brenner mit. Stichwort Vorlüftung, Flammüberwachung und Schalthäufigkeit Gebläse. Im Datenblatt findet man dann ggf. was zu den Takten/Stunde.

Bei LED-Steuerungen muss die PWM-Frequenz oberhalb der Flimmerfrequenz (>100Hz) liegen - so am Rande.


----------

