Archiv verlassen und diese Seite im Standarddesign anzeigen : Welcher Pin für PWM Signal?
Hallo zusammen,
ich habe ein RN-Mega2560 http://www.robotikhardware.de/download/rnmega2560.pdf und möchte damit den Motortreiber 18V15 http://www.robotikhardware.de/download/High_PowerMotortreiber18V15.pdf steuern. Ich finde in der Doku vom RN-Mega2560 aber nicht welchen Pin ich für ein PWM Signal nutzen kann. In der Doku steht was von vier 8 Bit PWM Kanäle und zwölf PWM Kanäle (programmierbar 2 bis 16 Bit). Sagt mir aber nichts. Welche Pins kann ich nutzen?
Vielen Dank für die Hilfe.:confused:
Grüße
datatom
Das was Du suchst dürften die OCxx Pins sein.
OC0 ist ein Output Comparematch Ausgang des Timers 0.
OC1A ist der erste Output Comparematch des Timers 1.
OC1B ist der zweite Output Comparematch des Timers 1.
usw.
An diesen Pin's kann man das Hardware PWM abgreifen.
Ob der Timer maximal 8 oder 16 Bit Auflösung hat kannst Du im Datenblatt nachlesen.
Die 16 Bit Timer kann man in bestimmten PWM Modi auf geringere Auflösung, z.B. 12Bit zurückschalten.
Ein Timer kann nur eine PWM Frequenz erzeugen, aber mit verschiedenen Comparematchwerten verschiedene Impulsbreiten auf seinen Ausgängen.
Guck Dir die entsprechenden Rubriken / Registerbeschreibungen des entsprechenden Timers an!
Ok, danke. Welcher Timer 8 Bit bzw. 16 Bit hat, habe ich im Datenblatt gefunden. Mir fällt allerdings kein Beispiel ein, wann ich den 8 Bit Timer bzw. den 16 Bit Timer verwenden soll. Kann mir jemand ein Beispiel nennen?
Das kommt drauf an was für Zeiten du erreichen willst. Ein 16-Bit Timer kann (dadurch das er ein 16-Bit Timerregister hat) weiter zählen und braucht dem entsprechend länger um einen Überlauf zu bekommen als ein 8-Bit Timer.
Für eine Pause von 1 Sekunde nimmst du z.B. einen 16-Bit Timer bei 16MHz. Für kurze Pausen (im ms Bereich) reicht der 8-Bit Timer. Du kannst aber den 8-Bit Timer durch eine Zählerschleife erweitern, sodass du damit auch längere Pausen erzeugen kannst.
Bei der PWM ist das ähnlich. Wenn du ein 16-Bit PWM-Register hast, kannst du die PWM viel feiner einstellen als mit 8 Bit.
Ein 16Bit Timer ermöglicht eine höhere Auflösung der PWM Schritte ( 65536 ), das bedeutet die Schritte sind feiner.
Ein 8 Bit Timer macht nur 256 Schritte ist also gröber.
Haben beide die gleiche Taktquelle wird die Ausgabefrequenz des 8 Bit Timers um den Faktor 256 über der des 16 Bit Timers liegen.
Es kommt also drauf an, was Du willst. Höhere Auflösung oder höhere PWM Wiederholfrequenz.
Die 10, 12 und 14 Bit Stufen sind dann mögliche Kompromisse aus den beiden Extremen.
Bei der PWM Ausgabefrequenz kann man noch mal einen drauf setzen, idem man FAST PWM verwendet, was aber wieder andere Nachteile hat.
Letztlich entscheidest Du und Deine Anwendung welche PWM Einstellungen Du verwendest.
Es kommt also drauf an, was Du willst. Höhere Auflösung oder höhere PWM Wiederholfrequenz.
Also, ich möchte einen Motor steuern und habe mich zur Zeit entschieden mit 10 Bit zu arbeiten:
'PWM Testprogram
$regfile = "m2560def.dat"
$hwstack = 82
$framesize = 68
$swstack = 68
$crystal = 16000000 'Quarzfrequenz
Config Pinc.0 = Output ' Stiftleiste JP 2; Pin 3; PC0
Motorboard_reset Alias Portc.0
Config Pinc.1 = Output ' Stiftleiste JP 2; Pin 4; PC1
Motorboard_dir Alias Portc.1
' Timer 3 ist ein 16 Bit Timer und kann auch auf 10 Bit gesetzt werden => Pwm = 10 => 2 hoch 10 = 1024 bzw. 0 bis 1023
Config Timer3 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 8 ' Stiftleiste JP 1; Pin 5
' ---------------------------------------------------
Dim P As Word
Motorboard_reset = 1 ' Stiftleiste JP 2; Pin 3; PC0
Enable Timer3
Motorboard_dir = 1 ' Stiftleiste JP 2; Pin 4; PC1 => gibt die Drehrichtung vor
Do
Pwm3b = 102 ' Motor hat bei 102 90% Leistung ' Stiftleiste JP 1; Pin 5
Loop
End
Der Motor soll die Achse eines Roboters antreiben. Wenn das Programm funktioniert werde ich sehen ob die Drehzahl so in Ordnung ist. Allerdings dreht sich im Moment noch nichts. Ich bin grad unterwegs auf Dienstreise und habe kein LED dabei, sonst könnt ich testen, ob von dem Pin der das PWM-Signal wiedergibt, Strom kommt.
Eine Frage habe ich allerdings noch: Auf Seite 6 von meiner Motortreiberdoku http://www.robotikhardware.de/download/High_PowerMotortreiber18V15.pdf steht, dass auf beiden Seiten des Boards V+ und GND Anschlüsse sind. Zur Zeit habe ich V+ und GND nur auf der Seite von OUTA und OUTB angeschlossen. Bevor ich das Board zerstöre, frage ich lieber nach: Muss ich die beiden anderen Pins auch mit V+ und GND verbinden?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.