PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit der PWM Ausgansfrequenz [Gelöst]



Borki90
23.12.2007, 22:18
Hallo

Ich arbeite gerade an der Motor-Treiber Einheit an meinem Roboter. Dabei bin ich auf ein Problem mit der PWM Ausgangsfrequenz gestossen: Die Gemessene Frequenz ist um ein Vielfaches kleiner, als die berechnete. Ich habe dazu einen Thread im Hardware-Forum eröffnet:

https://www.roboternetz.de/phpBB2/viewtopic.php?p=337405#337405

Dieser Tread hat ergeben, dass es sich wohl um ein Bascomspezifisches Problem handeln muss

Ich hoffe ihr findet eine Lösung..

mfg Borki90

Sauerbruch
24.12.2007, 10:22
Ich hab´ zwar erst 2 Projekte mit PWM realisiert (eines davon ebenfalls zur Servo-Ansteuerung), konnte aber nicht feststellen, dass es Bascom-spezifische Probleme gibt. Wenn, dann hätte ich sie mit Sicherheit entdeckt und "mitgenommen" O:)

Der Formel (Quarzfreuenz/Prescaler)/(Zählermaximum * 2) ist nichts hinzuzufügen - sie stimmt, und hat bei mir auch immer korrekte Ergebnisse geliefert. In Deinem Fall wären das (16.000.000 / 8 ) / (256 * 2) = 3906 Hz, und nicht 15kHz, das schon mal vorneweg.

Auffällig ist, dass zwischen den erwarteten 3906 Hz und den von Dir gemessenen ca. 480 Hz ziemlich genau der Faktor 8 liegt. Könnte es sein, dass in den Fuse-Bits ganz versteckt ein interner Takt-Teiler /8 aktiviert ist?

Borki90
24.12.2007, 10:33
Ohh Mann.... So wie es aussieht habe ich mich einfach verrechnet.... ](*,) ](*,) ](*,)

Prescaler ist 64. Ich habe wohl den Falschen Code ins Forum kopiert.. Daraus entstehen dann 490Hz...

Unter Auflösung habe ich nähmlich 8 (warum eigentlich :-s ) genommen..

EDIT: Ach ja, vielen dank für die Antwort (währe wohl nie selbst darauf gekommen... Frohe Festtage

Borki90
24.12.2007, 12:57
Es geht immer noch nicht.. Ich habe folgendes kleines Testprogramm geschreiben, um das ganze zu testen:


$regfile = "m8def.dat"

$crystal = 16000000

$baud = 9600


Config Pinb.1 = Output
Config Pinb.2 = Output

Config Timer1 = Pwm , Pwm = 9 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1


Wait 1
Print
Print "V 2.5.5_Test"
Print
Wait 1


Do

Wait 1

Pwm1a = 512
Pwm1b = 512

Wait 1

Pwm1a = 0
Pwm1b = 0

Loop

Laut meinem Wissen, sollte da die beiden LED's an den PWM Ausgängen nur blinken.. Jedoch leuchten sie auch, bei PWM1a = 512.. Ausserdem messe ich eine Frequenz von 7kHz
(Ist jetzt auch sicher der Richtige Code.. ^^)

Sauerbruch
24.12.2007, 16:47
Also - ich komme auf eine Frequenz von 15625 Hz (16.000.000)/(512*2). Was sich in diesem Bereich abspielt, wird dem bloßen Auge mit Sicherheit vorenthalten bleiben.

Mit PWM=9 legst Du ja fest, dass nur die ersten 9 Bits des Zählers mit den ersten 9 Bits des Output-Compare-Registers verglichen werden sollen. Da die 512 binär aber 1000000000 ist, sind die ersten 9 Bits absolut identisch mit denen der Zahl 0. Für den Controller ergibt sich also absolut kein Unterschied!

Versuch´s doch mal mit "0" und "511" (=111111111) - da müsste es einen sichtbaren Unterschied geben. Und bei "256" müsste die LED mit halber Helligkeit leuchten, da Du ein Ausgangssignal mit einem Impuls-Pausen-Verhältnis von 1:1 erhältst.

Bin gespannt auf weitere Ergebnisse - merry Xmas!

Borki90
24.12.2007, 17:15
Vielen Dank, werde das morgen ausprobieren..

Wünsche dir auch merry Xmas!

Borki90
25.12.2007, 08:57
Irgendwie scheint das mit 9Bit nicht zu klappen:

-Die LED leuchtet auch bei 511..
-Die Frequenz ist 7.8kHz (habe auch 15 kHz berechnet..)


Jetzt bin ich auf 10bit gegangen. Damit erreiche ich auch 7.8khz (gemessen und berechnet :D ), was für den L298 erträglich sein sollte.. Jetzt funktioniert alles einwandfrei.

Aber auch hier muss ich 1023 statt 1024 nehmen, wo ich nie darauf gekommen währe..

Vielen dank für die Hilfe

mfg Borki90

Sauerbruch
25.12.2007, 10:26
Jetzt funktioniert alles einwandfrei.


Das ist ja schön! By the way - "erträgliche" PWM-Frequenz klingt irgendwie so, als sei dieser Parameter eher kritisch. Auf diesem Gebiet hab´ ich leider eine ziemliche Wissenslücke, vielleicht kannst Du mir da weiterhelfen?
Ich möchte einen ziemlich groben Motor (12V, 2kW) für eine Modellflug-Winde PWM regeln. Als PWM-Frequenz hatte ich aber (aus Modellbau-Foren angeschaut) etwa 500Hz ausgewählt. Hängt die optimale PWM-Frequenz denn von der Leistung des Motors ab, oder was kann man dabei als Anhaltspunkt heranziehen?

Borki90
25.12.2007, 20:32
Ich war mal wieder zu voreilig.. läuft immer noch nicht :-k , aber der Fehler, liegt nicht an der Softwar, denn mit 2LED's Läuft das ganze herforragend..

Bezüglich der Frequenz bin ich leider auch nicht wirklich gebildet.. ich habe mich an diesem Thread orientiert:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=27866&highlight=l298+problem

Ich werde mich aber jetzt, da es immer noch nicht richtig läufft, genauer über dieses Thema orientieren.. Ich kann dann meine (hoffentlich) gewonnenen Kentnisse an dich weitergeben.

Borki90
20.02.2008, 18:04
So, das Problem ist endlich gelöst...
Es lag nicht an der Frequenz. Sondern, an der Schaltung. Ich habe mich am RN Wiki orientiert, dass man bei einer nicht benötigten Strommessung die Widerstände an den Sens Eingängen nicht einbauen muss. Inzwischen habe ich erfahren, dass diese Widerstände auch sonst benötigt werden. Mit ihnen lauft alles einwandfrei..

Ich habe auch gleich einen Vermerk im RN Wiki geschrieben..

Ein Video wird auf meiner Page Borki90.roboterbastler.de folgen

mfg Borki90

PS: Das Ganze läuft jetzt mit einer Frequenz von 4.7kHz