Forum: Projekte & Code Spannungsgesteuerte PWM


von Markus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
wer kann mir einen Tipp geben, wie ich eine Spannungsabhängige PWM
hinkriege. Beispiel: PIC16F876, am ADC kommt die Spannung von 0-5 Volt
an, Steuerung eines PWM mit 300 Hz bis 1.2 kHz. Im Dateianhang ist ein
ASM-File bei dem nur das Tastverhältniss je nach Spannung verändert
wird.  Hat jemand einen Tipp? (Bin Anfänger und lerne noch heftigst,
mein Schädel raucht schon, mein PIC noch nicht:-))

Gruß
Markus

von Peter D. (peda)


Lesenswert?

Eine PWM hält die Frequenz konstant und ändert nur das Tastverhältnis,
kann also nicht gehen.
Du must die Reload-Funktion des Timers nehmen.

Von PICs habe ich keine Ahnung, ich würds mit nem ATTiny26 machen.

Ich würds in C schreiben, damit man es Frequenz linear entzerren kann.


Peter

von Markus (Gast)


Lesenswert?

Hallo

danke für die Antwort. Schade ich habe bis jetzt nur mit PIC´s
experimentiert. Gibt es prinzipiell eine andere Möglichkeit einen
fließenden Ton von 300 Hz bis 1.2 kHz abhängig von der Spannung am ADC
zu erzeugen? Das ganze auch noch mit einem Pic.

Markus

von Peter D. (peda)


Lesenswert?

Wie gesagt, Du must die Auto-Reload Funktion auswählen. Beim AVR nennt
sich das "Clear On Compare Match".

Etwas tricky ist es aber eine konstante Frequenzschrittweite
einzustellen, da man ja die Periodendauer ändert.

Am einfachsten ist das mit einer Tabelle, die für jeden ADC-Wert den
entsprechenden Reloadwert enthält (z.B. mit Excel ausrechnen lassen und
einfügen).


Peter

von Michael Knapp (Gast)


Lesenswert?

Hallo

@Markus

läuft dein Programm auch auf einem ATmega8? bzw kann ich es einfach
umschreiben für den mega?

Gruss Michael

von Markus (Gast)


Lesenswert?

Hallo

@Michael
ich weis nicht ob es so auf einem ATmega8 läuft. Sicher kannst das
Programm umschreiben. Wie gesagt ich habe gerade angefangen und mich
bis jezt nur mit PIC´s beschäftigt.

Gruß
Markus

von Markus (Gast)


Lesenswert?

Hallo

@Peter

Danke für die Tipps. Werde es mal versuchen.

Gruß
Markus

von Peter (Gast)


Lesenswert?

Hallo,
habe ein ähnliches Problem,
gibt es eine fertige Funktion in C,
die ein PWM-Modul simuliert?

Ich wollte gern 3 LED´s dimmen und das am besten mit dem pic12f675,
der hat kein pwm, aber es sollte doch auch so gehen.

Da ich leider kein Programmierexperte bin, wäre es schon praktisch,
wenn sowas gäb, der man z.B. nur das Verhältnis und Frequenz übergeben
würde.

gruß
peter

von Marco (Gast)


Lesenswert?

Hallo Peter

Die LED's per PWM dimmen ist okay, wenn die Spannung gleich bleibt.
Dann mußt Du einen Zähler Programmieren, der entweder immer von 0 nach
oben Zählt und von vorn oder hin und her Zwischen 0 und Wert X. Dann
nimmst Du deinen Wert Y denn du nach jedem Zählschritt mit dem Wert der
Zählers vergleichst und bei Übereinstümmung (>= bzw. <=) Pin Z setzen
bzw. löschen. Über den Wert Y veränderst Du das Tastverhältnis und über
X die Periodenlänge und Auflösung.

So macht es der PWM im Tiny und anderen Atmels.

von Peter (Gast)


Lesenswert?

Hi Marco,
danke für Deine Antwort.
Ich werds mal so probieren.

von Stefan Kleinwort (Gast)


Lesenswert?

@Peter:
Bei der PWM-Ansteuerung der LEDs musst Du beachten, dass
Helligkeitseindruck und PWM-Verhältnis nicht linear sind.

Beispiel:
Um 10% Helligkeitseindruck zu erhalten, brauchst Du nur 1%
PWM-On-Zeit.

Das Verhältnis ist ungefähr quadratisch.

Stefan

von Claus Thaler (Gast)


Lesenswert?


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
Noch kein Account? Hier anmelden.