Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM Augangsfrequenz an ATMega8
Hallo
Ich arbeite gerade an der Motor-Treiber Einheit an meinem Roboter.
Für die Berechnung von der Ausgangsfrequentz des Treibers habe ich die Formel aus der dem Wiki genommen:
(Quarzfrequenz/Prescale ) /(Timerauflösung*2)
Jedoch erhalte ich bei einer Messung mit dem Multimeter (Brymen BM805) immer ein total anderer Wert..
Hat irgendwer eine idee woran das liegen könnte? An der Ungenauigkeit des Gerätes kann es nicht liegen, denn der Unterschied beträgt immer eininge kHz..
mfg Borki90
Meine Page: www.Borki90.roboterbastler.de
Besserwessi
23.12.2007, 00:42
Im "Fast-PWM" Mode ist die Frequenz dopplet so hoch wie im "normalen" PWM Mode. Für Timerauflösung sollte die obere Grenze des Timers stehen.
Ein häufig gemachter Fehler ist ein Fehler in der Interpretation des Clock Settings. Wenn der RC Oszillator nicht auf der kalibrierten Frequenz schwingt, können die Abweichungen zum nominalen Wert recht groß sein.
Bei genügend hoher Frequenz sind Fehler von ein Paar kHz für die Frequenzanzeige bei billigen Multimetern nicht ungewöhnlich.
Ich sollte noch anmerken, dass ich mich noch nicht so mit Controller auskenne...
Was meinst du mit Fast-PWM?
Der AVR läuft im Moment mit einem externen 16MHz Quarz (Fusebits aktiviert) und wird mit Bascom Programmiert.
Wie kann man die Quarzfrequenz überprüfen?
Vielen Dank für die Antwort
mfg Borki90
PS: Soo billig ist das Multimeter auch nicht... ^^
Besserwessi
23.12.2007, 16:23
Es gibt 2 Sorten von PWM: Fast und PhaseCorrect. Die unterscheiden sich im wesenlichen durch die höhere Frequenz beim fast-PWM. Die Details stehen in den Datenblättern.
Bei einem 16 MHz Quarz merkt man eine falsche Frequenz eigentlich recht schnell, denn da kommen im wesentlichen 1 MHz vom internen RC in Frage oder ggf. der Takt Teiler bei einigen neueren MEGA.... Sonst ist das PWM Signal eine gute Wahl um die Frequenz nachzumessen, aber darum geht es ja gerade.
Welche Frequenzen werden denn erwartet und gemessen ? ggf. auch mal den Code posten, dann wird es einfache den Fehler zu finden.
Die Frequenz des Quarzes stimmt, soweit ich das messen kann.. einem "Wait 1" Enspringen auch etwa 1s Wartezeit..
Hier der aus meiner Sicht relevante teil des Codes:
$regfile = "m8def.dat"
$crystal = 16000000
$baud = 9600
Config Pinc.1 = Input
(...)
Config Pinb.2 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8
Daraus ergibt sich die erwünschte Frequenz: +/- 15kHz
Die gemessene Frequenz: 490Hz
Die gemessene Frequenz bleibt bei uterschiedlicher Abtastrate gleich, es kann also nicht daran liegen, dass das Multimeter die PWM nicht mag. (was auch nicht zu erwarten war..)
mfg Borki90
Besserwessi
23.12.2007, 23:09
Das sieht nach einem wirklich BASCOM spezifischen Problem aus. Es ist wirklich schwer zu sagen was der Compiler draus macht, außer man schaut sich den ASM Code an. Mit dem BASIC compiler kenne ich mich leider nicht so aus.
Trotztem Danke... Ich werde den Post mal im Bascom Forum Verlinken..
mfg Borki90
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.