PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Drehzahlregelung mit Poti



johndost
13.09.2011, 19:38
Hallo,

als uC einsteiger bin ich jetzt in der situation, dass ich gerne 2 getriebemotoren mittels PWM ansteuern will.
Ich nutze Bascom und habe einen avr mega32 und einen L293 motortreiber...
Nun möchte ich mit je einem joystickpoti die drehzahl der motoren steuern. Wenn der joystick in ruhe ist soll der motor in seiner position verharren.
Wie muss die software dazu aussehen? (insb. bzgl des inputs / wandlung in PWM signal...)
Kann jemand ein gutes tutorial/beitrag empfehlen der sich mit einer solchen thematik befasst, oder hat jemand ein ähnliches programm anhand dessen ich die funktion nachvollziehen kann?

Liebe Grüße,
John

Kampi
13.09.2011, 20:00
Ja wie sieht der Joystick den aus? Ist es ein richtiges Poti? Weil dann musst du mit einem A/D-Wandler arbeiten und den Spannungsabfall am Poti einlesen und daraus dann eine PWM machen.
Wenn der Joystick einer mit Tasten ist machst du einfach eine If-Else Abfrage oder eine Select-Case Abfrage wo, je nachdem welcher Taster gedrückt wird, ein unterschiedlicher PWM Wert genutzt wird.

radbruch
13.09.2011, 21:27
Hallo

Also ich hab das schon mal gemacht, allerdings in C, mit einem RP6 und mit einem normalen Poti als Joystickersatz:


http://www.youtube.com/watch?v=orBghV1S_L4

Im Prinzip ist es einfach: Das Verhältniss PWM zur PWM-Auflösung muss wie Poti zur Poti-Auflösung sein. Eine mittelschülerisch und integerfreundlich umgestellte Formel zur Errechnung von PWM bei vorhandenem Potiwert könnte ich mir so vorstellen:

Poti * PWM-Auflösung
---------------------- = PWM
Poti-Auflösung

Bei einem 10-bit-ADC und 8-bit-PWM wären das bei Potiwert 511 (=Mittelstellung) also:

511 * 256
---------- = 127
1024

Das wäre der Ansatz für eine Ansteuerung von 0% bis 100% PWM ohne Berücksichtigung der Richtung. Um die Richtung ebenfalls einfliessen zu lassen, muss man vor der Umrechnung überprüfen, ob der Potiwert unter- oder oberhalb des Mittenwertes liegt:


Poti-Mitte = Poti-Auflösung / 2

If Poti > Poti-Mitte

(Poti - Poti-Mitte) * PWM-Auflösung
---------------------------------- = PWM
(Poti-Auflösung / 2)

else

(Poti-Mitte - Poti) * PWM-Auflösung
---------------------------------- = PWM
(Poti-Auflösung / 2)

End If


(bascomähnlicher Pseudocode)
Dass die ADC-Auflösung dabei quasi halbiert wird, fliest so auch in die Berechnung ein.

Noch kurz ein Hinweis zu 15-poligen Joysticks für den Gameport:
https://www.roboternetz.de/community/threads/51544-Joystick-mit-Potentiometer-und-0-Stellung?p=516619&viewfull=1#post516619

Ich hoffe, das hilft dir. *grins*

Gruß

mic

johndost
14.09.2011, 05:53
Vielen Dank für eure Antworten.
Werde das heut Abend gleich mal probieren...

Liebe Grüße,
John

RoboDome
14.09.2011, 06:43
Hallo ich habe fast das gleiche vor und weis nicht genau was die Auflösung ist, ist das die obere Wertgrenze oder wie:(
und übernimmt das Arduino Uno dann die Aufgabe des A/D Wandlers