Pwm?

apfelwolle

Neues Mitglied
13. Sep. 2009
54
0
0
Rheinhessen
Sprachen
Ich versuche gerade PWM unter Bascom zu verstehen. Aber so richtig finde ich nichts was mir weiterhilft.

Ich kann mit PWM ja einen Port in der Ausgangsspannung regeln? Das geht beim Atmega8 Mit den Ports b1, b2 und b3!?

Wenn ich nun an einen oder mehreren dieser Ports eine LED hänge kann ich nun wie die Helligkeit beeinflussen?

Gibt es wo eine gute Anleitung zu dem Thema oder kann mir jemand von Euch helfen?
 
Hallo apfelwolle,

die Aussage
Ich kann mit PWM ja einen Port in der Ausgangsspannung regeln?
ist nicht ganz korrekt. Die Spannung eines pulsweitenmodulierten Ausgangs ist immer GND für LOW und z.B. +5V für High. Die Signale sind und bleiben Digital. Wenn Du unterschiedliche Spannungen erzeugen möchtest so benötigst Du externe Peripherie, z.B. einen nachgeschalteten RC-Filter.

Es ist aber richtig, dass mittels PWM ein Motor gesteuert oder auch die Helligkeit einer LED geändert werden kann.
Bei der Puls-Weiten-Modulation (PWM) wird ein digitales Ausgangssignal erzeugt, dessen Tastverhältnis moduliert wird.
Das Tastverhältnis gibt das Verhältnis der Länge des eingeschalteten Zustands zur Periodendauer an. Dabei bleiben die Frequenz und der Pegel des Signals immer gleich! Es ändert sich nur die Länge von High zu Low.

In BASCOM hast Du zwei Möglichkeiten PWM zu machen:
1. SW-PWM
2. HW-PWM mittels Timer

Software PWM:
Die Vorteile der SW-PWM ist, das Du fast jeden beleibeigen PIN dazu verwenden kannst. Du kannst so auch mehrere PWM's mit einem Timer implementieren die unterschiedliche Signale auf verschiedenen PIN's erzeugen.
Der Nachteil dieser Methode liegt ganz klar im Programmieraufwand.

Hardware PWM:
Die Vorteile der HW-PWM ist, dass die sehr schnell ist und vom Programm unabhängig da sie vollständig über HW mit Timern funktioniert.
Der Nachteile ist halt, dass Du bzgl. der HW Ressource an die entsprechenden PIN's des ATmegas gebunden bist und den Timer damit belegst.

Z.B. beim ATMega8 stehen 4 HW-PWM-Ausgänge von 2 Timer zur Verfügung.

Mit Timer1 können zwei PWM Signale erzeugt werden (Compare A => OC1A - Pin 15 und Compare B => OC1B - Pin 16).
Die Auflösung kann auf 8, 9 und 10 Bit eingestellt werden.
Timer2 kann ein PWM-Signal mit einer Auflösung von 8 Bit erzeugen (Compare Register => OC2 - Pin 17)

So, nun schauen wir mal rein in die Praxis....

Im Anhang findest Du zunächst ein Beispielprogramm von mir, wie ich zwei PWM's für eine LCD-Hintergrundbeleuchtung und einen Lüfter umgesetzt habe.

Sorry, wenn ich nun auf ein anderes Forum verlinken muss aber dort habe ich mal einen tollen Beitrag zum Thema BASCOM PWM gefunden und besser kann ich es auch nicht erklären. Ich müsste den Inhalt ja kopieren :cool: Schau mal hier: http://www.rn-wissen.de/index.php/Bascom_und_PWM
Vielleicht wird Dir damit einiges klarer.

So, nun glaube ich, dass Du zunächst ausreichend Stoff hast.

Grüße,
Markus
 

Anhänge

  • PWM_LCD_und_FAN.bas
    15,9 KB · Aufrufe: 39
Vielen Dank für die Antworten,
jetzt habe ich es verstanden und kann es auch anwenden. Klasse Forum hier!

Mal noch eine Frage am Rande kann mir jemand ein gutes Buch über Atmega und Bascom empfehlen?
 
Ich empfehle gerne das folgende Buch:

Programmieren der AVR RISC Microcontroller mit BASCOM-AVR
Taschenbuch: 376 Seiten
Verlag: Skript Verlag Kühnel; Auflage: 2., veränd. Neuaufl. (10. Juni 2004)
Sprache: Deutsch
ISBN-10: 3907857046
ISBN-13: 978-3907857045
Größe und/oder Gewicht: 22 x 16,6 x 2,4 cm

Das Buch ist zwar schon älter aber ich finde es ist mit der EInführung und den Praxisbeispielen ganz gut geschrieben. Mit dem habe ich angefangen und ich kam gut damit zurecht. Gut, ich hatte schon ne ganze Menge Hintergrundwissen aber ..... ich finde es ist ein gelungener Einstieg.

Grüße,
Markus
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)