Go Down

Topic: PWM-Signal (Read 6664 times) previous topic - next topic

strohhirn

Hallo,
ich möchte z.B. eine Led mit 1V versorgen.
Da der arduno kein analoges Signal ausgeben kann. Muss ich PWM benutzen. 255 ist das maximum also 5V, richtig?
Wenn man 255 durch 5 teilt erhält man 51, also 1V.
Wenn ich den befehl gebe :
analogWrite(LedPin, 51);
denn müsste doch die Led mit 1V versorgt werden. Laut meinem Messgerät wird aber 0,8V angezeigt und bei 255 also 5V wird mir 4,3V gezeigt.

Wieso ist das PWM signal so ungenau? Mach ich irgendetwas falsch?
Gruß

strohhirn

0AlphaOmega

PWM senden 5V bei allen Werten. Es ist die Länge des Impulses, die nicht die Spannung ändert. Allerdings, wenn Sie die Ausgabe integrieren, erhalten Sie einen mittleren Wert. z.B. 127 = 2,5 V, obwohl der Ausgang 5V für die Hälfte der Zeit von 0V für die Hälfte der Zeit gefolgt.
For whom does the clock pulse? It pulses for you!

uwefed

Zur Erklärung:
Integrieren meint man, man nimmt eine Kondensator und lädt ich über einen Widerstand mit dem PWM-Signal. Der Kondensator bzw Widerstand wird in Funktion der PWM-Frequenz und des Stroms des Verbrauchers gewählt.

Andere Sache. Kein LED funktioniert mit 1,0V.  Dein Ansatz das problem zu lösen ist einfach falsch.
Der Strom eines LED MUß immer durch eine Vorrichtung begrenzt werden (Widerstand oder Konstantstromquelle).

Wenn Du die Helligkeit des LED vermindern willst, dann wähle einen niedrigeren LED-Strom.
Wenn Du die Helligkeit über Arduino regeln willst, dann benutze ein PWM-Signal es muß nicht in eine Gleichspannung überführt werden. Die Helligkeit der LED ist dann proportional zum Verhältnis der Ein-zur Auszeit des PWM-Signale (Tastverhältnis).

Grüße Uwe

dertester

@uwefed

Ich hoffe ich gehe hier nicht zu Offtopic aber vll passt es ja gerade mit rein.

Das was du ansprichst ist doch ein Tiefpass?
Ich hab dazu schon ein wenig gelesen, werde allerdings nicht ganz schlau wie ich den Tiefpass richtig dimensioniere.
Bei mir ist das Problem ein Fiepen am Motor von PWM wegzubekommen.

http://de.wikipedia.org/wiki/Tiefpass ist ein wenig Info.

Ich würde jetzt die Formel nehmen:
U(Ausgang) = U(Eingang)*1/(Wurzel(1+(2*Pi*F*C*R)^2)

Ich habe
U(Eingang)=5V
F müsste laut http://arduino.cc/en/Tutorial/PWM 500Hz sein

Wie dimensioniere ich jetzt aber C für den Kondensator und R für den Widerstand richtig?
Wenn ich mir das anschaulich vorstelle, wird ja die Rechteckspannung des Arduino über den Kondensator "geglättet"...

Es wäre schön wenn die Antwort etwas erklärend wäre :)
Oder wenn ich im Grundkonzept schon den falschen Ansatz habe nicht gleich zerreißen bitte ;)

strohhirn

Die Led ist nur ein Beispiel.

Dieses integrieren habe ich noch nicht richtig verstanden. Was bewirkt es?
Gruß

strohhirn

0AlphaOmega

Die Spannung in den LED ist bei 5V - egal, was PWM-Wert über Null gewählt wird.
Weil es auf schaltet und aus (Hochfrequenz) Ihre Auge nimmt die Helligkeit auf im gleichen Verhältnis wie die PWM-Wert sein. Einfache Werte wäre 0/127/255 - So würde "sehen" nichts, halbe Helligkeit, volle Helligkeit.
Dies ist für einen Motor simmilar. Die volle Leistung wird in Impulsen angewandt. Der Motor scheint zu "sehen" die Spannung als Prozentsatz der vollen Leistung 255 / n angewendet

Vergessen Sie nicht, wenn Sie ein Messgerät zu verwenden, müssen Sie AC Einstellung. Wenn Sie einen "echten" durchschnittliche Gleichspannung sehen möchten, mus man die Wellenform (einfachste Methode) chosing einen Widerstandskämpfer und capapcitor deren Werte am besten passen die Frequenz des PWM-Signals intergrate.

Der Effekt ist wie das Ausfüllen ein Bad ohne das Plug! Aber anstatt einen stetigen Strom von einem Abgriff, verwenden wir eine Schaufel (die Schaufel repräsentiert die Zeit-Frame) mit unterschiedlichen Mengen von Wasser bei einer regulären Zeit aufgetragen. die scheinbare "Spannung" wird durch die durchschnittliche Höhe des Wassers in dem Bad repräsentiert. Ich hoffe, tha gut :) übersetzt

siehe http://de.wikipedia.org/wiki/Pulsweitenmodulation
http://hermes.eee.nott.ac.uk/teaching/cal/h61sig/sig0011.html
For whom does the clock pulse? It pulses for you!

uwefed


Die Led ist nur ein Beispiel.

Dieses integrieren habe ich noch nicht richtig verstanden. Was bewirkt es?


Statt eines Beispiels, das dann nicht auf das Endprojekt anwendbar ist, ist doch besser entweder das Endprojekt zu erklären oder zu fragen wie das prinzipiell funktioniert.
Je anch Projekt können andere Lösungen einfacher oder besser sein oder wie im Falle einer LED mit PWM angesteuert eine PWM-Analogwandlun schlichtweg nicht notwendig.

Integrieren ist in diesem Fall eine Mittelwertberechnung. Der Kondensator wird während der Ein-Zeit des PWM geladen und während der AUS-Zeit entladen. Bei richtiger bemessung des Kondensators stelt sich seine Spannung auf einen Mittelwert ein.

Grüße Uwe

strohhirn

OK, um genau zu sein möchte ich mit dem arduino eine Heizung steuern.
Dazu habe ich mir einen :
Kemo M028
http://www.kemo-electronic.de/datasheets/m028.pdf
und einen:
Kemo M150
http://www.kemo-electronic.de/datasheets/m150.pdf
geholt.
Mit dem M028 kann ich mit hilfe eines potis eine Lampe (oder in meinem fall auch Heizung) steuern.
Um den poti zu ersetzen habe ich mir den Kemo M150 geholt .Er wird anstatt des potis angeschlossen und kann mit PWM signal gesteuert werden.

So nun habe ich alles ohne Kondensatoren oder Wiederstände angeschlossen und wenn ich das PWM signal 255 gebe und denn den Strom bei der heizung messe steht da nur 180V statt 220V.

Sorry ich hab immernoch nicht verstanden was ich mit dem Kondensator tun muss. Ich bin blutiger Anfänger und weiß um ehrlich zu sein noch nicht mal was ein Kondensator bewirkt ,wozu er da is.
Wie bemesse ich nen Kondensator? Was für ne Mittelwertberechnung? Was für nen Kondensator brauch ich überhaupt? Wo schließe ich ihn an? Erhöht er die Spannung von 0,8V auf 1V?


Gruß

strohhirn

mkl0815


... denn den Strom bei der heizung messe steht da nur 180V statt 220V.
... Ich bin blutiger Anfänger ...

Bist Du sicher, das dies eine gute Kobmination ist. Ich werde mich hier mit weitern Hinweisen auf jeden Fall zurück halten. Das ist mir zu heiss.
Mario.

uwefed

Laut Datenblatt kann der Kemo M028 ohne Kühlung nur ca 800W schalten Das genügt nciht für einen Heizkörper. Die Beschreibung ist etwas unklar aber mir Scheint daß die Hühlfläche Spannungsführend ist und deshalb isoliert auf einen Kühlkörper geschraubt werden muß.
Grüße Uwe

guntherb

Drei Anmerkungen:

1.)  Dein M150 verlangt, wenn ich das Datenblatt richtig verstehe, eine PWM am Eingang.
Wenn du an den Arduino-Ausgang einen Tiefpass anschliesst, dann hast du keine PWM mehr.

2.) Zweitens: Integrieren / Mittelwerbildung.
PWM bedeutet etwas schnell Ein und Aus zu schalten. Um bei deinem LED-Beispiel zu bleiben:
Die LED dauernd ein: Hell
Die LED 50% EIN, 50% AUS: mittelhell    (oder blinkend, je nach Frequenz)
Die LED 10% EIN, 90% AUS: recht dunkel.

Das kannst du sehr schön mit dem Arduino Einstiegsprogramm "Blink" ausprobieren, in dem du die Zeiten entsprechend kürzer machst.
DAs Geheimnis ist die Frequenz, also wie oft pro sekunde geschalten wird. ab ca. 20-30Hz kann dein Auge die einzelnen Lichtblitze nicht mehr unterscheiden, dein Auge INTEGRIERT die einzelnen kurzen Lichtblitze zu einer mittleren Helligkeit.

Dieses physikalische Integrieren passiert, wenn das System (hier das Auge) langsamer ist als die PWM-Frequenz (Schalthäufigkeit)

Das bringt mich zu

3.) Deine Heizung
Eine Heizung ist per se ein Integrator!
Nichts integriert besser als eine Heizung! Warum? Weil eine Heizung etwas sehr langsames ist.
Die meisten Heizungsregler für elektrische Heizungen sind klassische 2-Punkt regler:  Einschalten bei T1, ausschalten bei T2.
Wenn du es genauer haben willst, dann kannst du im Arduino auch einen PID-Regler programmieren, aber die Schaltfrequenz für eine Heizung kann meist im Minutenbereich liegen. Du mußt also nicht den Strom regeln (vergiss den m028) sondern einfach nur schalten (nimm ein Relais!)

Aber generell muß ich Mario recht geben: Wer keine Ahnung von Strom hat, der sollte von tödlichen Spannungen die Finger lassen!

Gunther
Grüße
Gunther

strohhirn

Hallo,
Wie ein PWM signal fuktioniert verstehe ich.
Ich habe einen Elektriker Kolegen, deswegen keine Sorgen. Ich muss es nur mit dem arduino  zum funktionieren bringen.
Ich habe einen Kühlkörper angeschloßen und ohne den M150 funktioniert auch alles wunderbar mit dem poti.(klappt alles seit 1 Jahr)
Nun möchte ich das halt nur automatisieren mit dem arduino. D.h ich möchte einen sketch schreiben der bewirkt:
1. die heizung mit 100V versorgen
2. nach ner stunde( oder minute) mit 200V
3. nach ner weiteren stunde ( oder minute) mit 220V versorgen

doch jetzt ist mein problem wenn ich das maximale PWM signal, also 255, gebe denn müsste doch die heizung mit 220V versorgt werden.
denn 255 entspricht ja eingentlich 5V und 5V sind dorch den Kemo 220 bei der Heizung. Richtig?

Nun bekommt die Heizung aber nur maximal 180V da das PWM signal keinen Mittelwert von 5V sondern einen von ca. 4,3V hat.
Laut Datasheet können bei 5V nur 90% der Leistung erreicht werden,sowie ich verstanden habe(s. Tabelle).90% von 220V sind 198V aber doch nicht 180V . Richtig?

Wie kriege ich es nun hin die Heizung proportional zum PWM signal zu steuern also
255 = 5V=220V
51=1V= 44V
usw. ....



Mfg

strohhirn

Gruß

strohhirn

sth77

#12
Feb 05, 2013, 07:46 pm Last Edit: Feb 05, 2013, 07:54 pm by sth77 Reason: 1

doch jetzt ist mein problem wenn ich das maximale PWM signal, also 255, gebe denn müsste doch die heizung mit 220V versorgt werden.
denn 255 entspricht ja eingentlich 5V und 5V sind dorch den Kemo 220 bei der Heizung. Richtig?

Dauerhafte 5V am Steuereingang bedeuten 100% Leistung, soweit kann ich dir noch folgen.

Quote

Nun bekommt die Heizung aber nur maximal 180V da das PWM signal keinen Mittelwert von 5V sondern einen von ca. 4,3V hat.
Laut Datasheet können bei 5V nur 90% der Leistung erreicht werden,sowie ich verstanden habe(s. Tabelle).90% von 220V sind 198V aber doch nicht 180V . Richtig?

Nee, nicht richtig. Ab einer 90% Duty-Cycle der PWM wird etwa 100% Heizleistung erreicht, zumindest sollte es so sein. Deine ganze Rechnerei (und ich befürchte auch Messerei) mit geringeren Spannungen an der Leistungsseite ist hier fehl am Platze. Du regelst hier über einen Phasenanschnitt, das kannst du nicht einfach als linearen Spannungsverlauf sehen und messen.

Quote
Wie kriege ich es nun hin die Heizung proportional zum PWM signal zu steuern also
255 = 5V=220V
51=1V= 44V
usw. ....

So wie du es schreibst geht das erst mal nicht. Ab 10% Duty-Cycle gibt es erst Leistung, also etwa ab einem PWM-Wert von 25. Bei einem PWM-Wert von ca. 128 (50%) gibt es auch 50% Leistung, bei einem PWM-Wert von etwa 230 (90%) ist auch das Maximum an Leistung erreicht. Sieht über die 3 gegebenen Punkte erst mal linear aus.

[edit] Kurzer Nachtrag: Die abgegebene Heizleistung hängt nicht nur von der Spannung ab, auf die du dich hier immer beziehst. Dein Modul kann ja ohmsche Verbraucher ansteuern, dazu zählt deine Heizung in erster Näherung auch. Und da gilt auch, dass die Leistung proportional zu U² ist, eine tatsächliche Halbierung des effektivwertes der Spannung bewirkt nur noch ein Viertel Heizleistung.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

strohhirn

So ich hab das jetzt mal mit den genannten werten ausprobiert.
Bei einem PWM-Signal von 128 habe ich eine Spannung von 130V an der Heizung und bei 230 eine Spannung von 186V.

Quote
Du regelst hier über einen Phasenanschnitt, das kannst du nicht einfach als linearen Spannungsverlauf sehen und messen.

Diesen satz habe ich nicht verstanden, was meinst du mit Phasenanschnitte?

Quote
Und da gilt auch, dass die Leistung proportional zu U² ist, eine tatsächliche Halbierung des effektivwertes der Spannung bewirkt nur noch ein Viertel Heizleistung.

Was ist U^2 ? Und was ist der Effektivwert?

Und wie schaffe ich es den jetzt wenigstens annähernd ( über200V) an die 220 V zu kommen?
Gruß

strohhirn

marau

Hallo,

google einfach mal nach 'Phasenanschnittsteuerung'.
So ziemlich als erster Eintrag kommt ein WIKIPEDIA-Artikel, in dem das seh anschaulich mit Skizzen erklärt ist.

Zu Deinen restliche Fragen:

U² ist ganz einfach das Quadrat der Spannung (U = Formelzeichen für Spannung)

Zum Effektivwert:
Da wir es in den Lichtnetzten mit Wechselspannungen zu tun haben, wird hier üblicherweise mit dem Effektivwert gerechnet.
Das sind z.B. die 230V der Netzspannung.

Würdest Du Dir die Netzspannung auf einem Oszilloskop ansehen, so könntest Du sehen, dass bei den genannten 230V Effektivspannung der Scheitelwert 230V * 1,41 = 324V ist.
Der Scheitelwert ist der Abstand von der Nulllinie des Sinussignals bis zur Spitze der Sinuskurve.
Die Effektivspannung kann man sich nun so vorstellen, dass der Effektivwert die von der Sinuswelle bedeckte Fläche wäre, wenn Du das ganze auf ein Blatt Papier skizzieren würdest.
(So hat uns das unser Dozent in Leistungselektronik erklärt)
Im übrigen haben gerade mit der Effektivwertbildung inbesondere die preiswerteren unter den Multimetern Probleme, hier sind Messfehler von mehreren % keine Seltenheit!
Gutgemeinter Rat: Befasse Dich erstmal mit Elektronikgrundlagen, ruhig nebenher zur Ergänzung der Programmierarbeit am Arduino.
Zumindest sollte Dir das Ohm'sche Gesetz sowie der Leistungssatz (P = U*I) in 'Fleisch und Blut' übergehen, wenn du mit elektrischen Dingen basteln willst!
Das Ohm'sche Gesetz benötigts Du schon um einen Vorwiderstand für eine LED berechnen zu können!
Einfach mal 'Tante Google' befragen.

Nun noch zu Deinem Problem mit den KEMO-Modulen:
Im Datenblatt des Ansteuermoduls ist mir aufgefallen, dass dort ein Hinweis steht, dass die PWM-Frequenz 1..10 KHz betragen soll.
Möglicherweise ist das des Rätsels Lösung.
Ich weiß nur nicht auswendig, welcher PWM-Ausgang mit welcher Frequenz bedient wird, aber das sollte in den Sezifikationen Deines Boards zu finden sein.


Grüße

Martin


Go Up