www.mikrocontroller.net

Forum: Projekte & Code Spannungsgesteuerte PWM


Autor: Markus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Knapp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

@Markus

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

Gruss Michael

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

@Peter

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

Gruß
Markus

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Marco,
danke für Deine Antwort.
Ich werds mal so probieren.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Claus Thaler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.