Spannungsgesteuerte PWM

Gast #80141
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
Angehängte Dateien:
#80142
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
Gast #80143
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
#80144
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
Gast #80148
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
Gast #80149
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.
Gast #80151
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

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