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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.