PWM

Das Thema pwm ist ja sehr beliebt unter AVR Freunden. 🙂 Daher habe ich für euch ein kleines Programm hochgeladen mit dem man einen Motor oder eine Pumpe leicht per pwm steuern kann.

Den Code dazu gibt es wie immer in meinem SVN.

Die Software ist für 16MHz getestet.

Kurze Erklärung

Zum regulieren der Geschwindigkeit verwende ich einen ADC Wert der durch ein einfaches 10k Ohm Potentiometer generiert wird. Der ADC wird im 8 bit Modus ausgelesen und kann daher eins zu eins in das Timer Register für die pwm geschrieben werden. So kann man die Geschwindigkeit fast stufenlos einstellen.

Darüber hinaus kann eine kleine Debugausgabe per UART erfolgen. Dazu einfach in der main.h die Kommentardefinition vor "#define DEBUG"  entfernen.

Als Ausgang wird OC1A verwendet. Für den Atmega8, 16 und 32 ist dieser Pin in der Software vorkonfiguriert. Für andere Controller muss dies noch angepasst werden. Des Weiteren benötigt man noch eine H-Brücke, oder ein Transistor (MOSFET).
Falls ihr einen ATtiny oder so verwendet muss ein anderer Timer gewählt werden. Darauf ist zu achten, dass der "Phase Correct" Modus genutzt wird.isp avr

Beispiellayout

Bei Strömen über 1,5A sollte anstatt des IRF530 ein IRL530 verwendet werden, da der IRF530 erst bei Vgs=10V voll durch schaltet. Der IRL530 ist für 5V optimiert.

Viel Spaß damit

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.