PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu pwm



tanger
03.11.2008, 12:10
Hallo,
ich habe meinen atmega16 nach datenblatt so eingerichtet:

er läuft mit internem Quarz 1mhz

TCCR1A = (1<<WGM10)|(1<<WGM11); //10bit
TCCR1B = (1<<CS11); //Prescaler = 8
TCCR1A |= (1<<COM1B1); // inverse Mode
TCCR1A |= (1<<COM1A1); //

=> Ausgangsfrequenz 61Hz, 10bit für OCR1A/B Register

müsste ich dann nicht in meine Register OCR1A/B werte von 10bit (1024) reinschreiben können ? bekomme irgendwie schon bei OCR1A=128 2,5V ???
da passt doch was nicht oder?
Vielen Dank im voraus
Martin

zerush
03.11.2008, 12:41
Erhälst du nur bei 128 2,5V oder auch bei anderen Werten? Womit misst du das? Vielleicht ist das Messgerät einfach zu träge. Hast du ein Oszilloskop zur Verfügung?

Probiere doch zum Testen mal einen Prescaler von 1024 und schau, wie lang die on/off Verhältnisse sind.

Gruß,
Thomas

fhs
03.11.2008, 12:43
Hallo,

1. Deine Erklärung
" OCR1A=128 2,5V" ist komplett unverständlich. Welcher Zusammenhang bei Deiner Schaltung zwischen PWM und Spannung besteht, kann hier niemand wissen.
2. Einen "internen Quarz" hat keiner der AVRs.

Du wählst den Mode 3 mit TOP=0x3FF. Natürlich kannst Du Werte bis 1023 in OCR1A schreiben. Wenn TCNT1==OCR1A, dann wird die Zählrichtung geändert. Wenn Du alle 16 Bit ausnutzen möchtest, wähle Mode 11.

Falls Du Probleme mit dem AVR Studio hast: das ist ein bekannter Bug -- die 16 Bit Zähler funktionieren dort mit PWM nicht richtig.

Gruß

Fred

zerush
03.11.2008, 12:57
Wenn TCNT1==OCR1A, dann wird die Zählrichtung geändert.

Nein!

Der Timer zählt immer(im Mode 3) bis 1023 und dann wieder abwärts.
Der Zusammenhang zu OCR1A:


Clear OC1A/OC1B on compare match when
up-counting. Set OC1A/OC1B on compare
match when downcounting.

fhs
03.11.2008, 14:17
Stimmt, was ich schrieb, gilt nur für Mode 11.

tanger
04.11.2008, 18:29
ok vielen dank, da ich nicht mehr an den controller komme und kein ozii habe, werde ich einfach die theoretischen werte uebernehmen.

Ceos
05.11.2008, 07:57
schliess doch einen tiefpass an und geh dann nochmal mit dem messgerät ran




PWM -[ 10k ]-------- Vout
|
---
--- 330nF
|
GND


Formel: f = 1/(2*PI*C*R)

die frequenz sollte sehr deutlich unter der PWM frequenz liegen, wenns ne gleichspannung sein soll am besten unter 50Hz wie im beispiel (wenn ein starker verbraucher angeschlossen wird, solltest du C vergrößern und R verkleinern aber die Grenzfrequenz nicht unnötig vergrößern)

wenn dein messgerät zu träge ist, bekommst du nur krumme werte, ist es zu empfindlich schwankt es viel zu sehr um es zuverlässig abzulesen

EDIT: ich komme auf 122 Hz PWM frequenz und nicht 61(ich prüfe es nachher nochmal nach, irrtum nicht ausgeschlossen :p) da solltest du den tiefpass schon auf 10Hz runterdrücken! also werte nochmal anpassen