PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM, Problem mit Servoansteuerung



Jörg_
22.05.2004, 22:09
Wo wir schon beim Thema PWM sind.
Ich habe da ein Problem mit dem ansteuern von einigen Servos.

Ich Schreibe grade ein Programm in Assembler für den
AT90S8515 AVR Mikrocontroller.
Das Programm soll Servos steuern macht dies aber nicht :-(

Hat jemand nähere Informationen darüber wie man
einen SANWA 1301 Servo ansteuert. Bei Google habe ich nichts
gefunden.
Ich bin davon ausgegangen das alle 20ms ein Impuls von 1-2ms
folgt und das damit die Position festgelegt wird.
Bei mir dreht sich der Servo nur in eine Richtung(nach rechts)
und das macht nicht nur einer(also an einem defekten Servo liegts nicht).

.....HILFEEEEEeeeee......
bin schon völlig genervt wegen meinen Servos.
Bin für konstruktive Hilfe dankbar.

Matthias
22.05.2004, 22:10
Hast du eine Modellbaufernsteueranlage und ein Oszi? Dann köntest du nämlich mal nachgucken.

Jörg_
22.05.2004, 22:17
Einen Osziloscop besitze ich nicht.
Montag kann ich aber einen benutzen. Dann kann ich es Testen.
Allerdings glaub ich eher das der Fehler bei mir liegt.
Mit meiner Fernsteuerung funktionieren die Servos.
......warum auch immer.....

recycle
23.05.2004, 02:35
Hat jemand nähere Informationen darüber wie man
einen SANWA 1301 Servo ansteuert. Bei Google habe ich nichts
gefunden.

Wenn der Servo komplett anders angesteuert werden müsste als andere Servos, würde der doch auch mit den die üblichen Schaltungenund Fernsteuerungen wie sie im Modelbau verwendet werden nicht funktionieren.

Ich glaube dann wärst du bestimmt nicht der einzige der Problem mit den Dingern hat und würdest irgendwas über Google zu den Dingern finden. Wenn auch keine Lösung dann wenigstens Hilferufe von anderen die das gleiche Problem haben.

Kannst du es statt mit deinem selbstgeschriebenen Programm nicht erst mal mit einem fertigen Programm versuchen? Bei Bascom ist z.B. ein Beispiel für die Steuerung von Servos dabei. Für andere Controller und andere Sprachen müsste sich da doch auch was finden lassen. Servos werden ja recht häufig im Zusammenhang mit µCs verwendet.

Wenn du wüsstest, dass der Servo und deine Schaltung funktionieren wärst ja schon einen guten Schritt weiter.

Jörg_
23.05.2004, 07:28
Bascom ??? Eigentlich wollte ich in Assembler Programmieren.
Ist Bascom nicht Basic-compiler ?

Ich werde mir meine Schaltung noch einmal gründlich ansehen.
Wie gesagt Montag habe ich ja nen Oszi.

Grade hab ich mich hier auf den Seiten mal umgesehen,
da ist mir aufgefallen das ich die Artikel nicht lesen kann.
Da kommt die Aufforderung sich nochmal ein zu logen und
dann kommt die Nachricht Artikel nicht vorhanden.

Gibts da nen Trick ???

Langsam bekomme ich das Gefühl.... wie... ](*,)

Aber erstmal danke.

Jörg_
23.05.2004, 10:05
HEUREKA :cheesy:
mein Servo lässt sich steuern.
Es war ein Programmfehler.
Ich hatte den Servo direkt mit ein paar Kabeln
an die STK500 angeschlossen. dabei habe ich nicht
daran gedacht das ich high und low signal Programmtechnisch
vertauschen muss.
Kaum macht man was richtig, funktioniert es auch.
:wink:

Javik
28.05.2004, 15:24
Sorry, wenn ich jetzt hier mein eingenes Problem reinschreibe, aber ich wollte net nochmal ein Artikell aufmachen, zumal da ich auch ein Problem mit nem Servo und dem PMW Signal habe...
Ich habe ein C-COntrol I. Jetzt will ich mit dem PWM Signal einen Servo ansteuern. Des verkabeln ist kein Problem, aber ich kann den Servo irgendwie nur 60° drehen.
Also: Wenn ich sage PWM=1 dann dreht er zum Anfang, des funst gut, aber wenn ich dem PWM Port den Wert 255, also den größten zuweise, dann dreht der Servo eben nur bis 60°, und des ist mir etwas zu weing... Kann mir da jemand helfen ??

Gruß Julian

Matthias
28.05.2004, 15:58
Ich glaub, dass das daran liegt, dass das mit den frequenzen net hinhaut. nimm doch einfach einen sd20.

Michael
28.05.2004, 16:11
Hallo Javik,
es gibt Servos, deren Drehbereich nur 60° beträgt, da hast du halt die falschen gekauft.
@Matthias:
ich denke, du solltest etwas sorgfältiger mit deinen Beiträgen _vor_ dem Posten umgehen. Es entsteht sonst schnell der Eindruck, dass du nichts zu sagen hast. Speziell dein Beitrag von 16:58 geht einfach am Thema vorbei, schade.
Gruss, Michael

28.05.2004, 16:43
Die C-Control kann keine Servos ansteuern, ist dafür zu langsam

Kjion
28.05.2004, 16:51
Doch kann sie, allerdings muss man dafür Assemblerprogramme benutzen und kann nebenbei dann fast nix mehr machen ;-) ( wenn man die Servos direkt ansteuern will )

@Javik
Hast du das Servo direkt an den PWM Ausgang angeschloßen ?? Das kann eigentlich nicht funktionieren, da deren PWM Frequenz irgendwas mit 2 kHz hat. Oder hab ich da irgendwas falsch verstanden ??

MfG Kjion

Manf
28.05.2004, 17:01
Okay, jetzt komme ich noch, aber was solls:

Sorry, wenn ich jetzt hier mein eingenes Problem reinschreibe, aber ich wollte net nochmal ein Artikell aufmachen, zumal da ich auch ein Problem mit nem Servo und dem PMW Signal habe...
Ich habe ein C-COntrol I. Jetzt will ich mit dem PWM Signal einen Servo ansteuern. Des verkabeln ist kein Problem, aber ich kann den Servo irgendwie nur 60° drehen.
Also: Wenn ich sage PWM=1 dann dreht er zum Anfang, des funst gut, aber wenn ich dem PWM Port den Wert 255, also den größten zuweise, dann dreht der Servo eben nur bis 60°, und des ist mir etwas zu weing... Kann mir da jemand helfen ??

Gruß Julian

Ein Servo Ansteuersignal ist Pulsbreiten Codiert. Ein paar andere Bedingungen gibt es aber schon noch.
Der Servo wird mit der absoluten Pulsdauer eingestellt, zwischen den Pulsen müssen Abstände sein.

Das PWM Signal der C-Control gibt mit einer für Servos relativ hohen Rate von 2kHz die Pulse die in der Dauer bis zu Periodendauer einstellbar sind (duty cycle =1, bei 255).

Es wäre schon interessant, ob sich das vereinbaren läßt. Was passiert denn bei den Werten PWM=1,2,3,4,5...
Geht der Servo dann mit?. Wenn er das macht und dabei nur bis 60° geht, dann ist die Pulsfrequenz zu hoch.

Man kann dann wohl über den Beep Ausgang noch Pulse einstellbarer Dauer ausgeben. Das wäre ein weiterer Versuch.

Matthias
28.05.2004, 17:06
1953Hz... und damit ca 39 mal zu schnell...

Ich wollte mit meinem ersten Beitrag zu diesem Thema sagen, dass er mal beide an ein Oszi hängen sollte, um unterschiede zu erkennen. Hätte letztlich ja auch geholfen...

Man kann Servos auch in basic stellen! Man kann eben nur nicht, in der Zeit, in der man sie stellt, was anderes Rechnen. Es gehen sogar mehrere gleichzeitig. Man muss ja nur 50Hz wiederholfrequenz hinkriegen

Matthias
28.05.2004, 17:08
Oh, war wohl zu langsam...

Man kann das servo schon mit dem PWM stellen, nur eben nicht Stufenlos, da das Servo geheimnissvoller Weise auf einige Zahlen anspricht.

Javik
28.05.2004, 17:58
Ich habe mit einer Schleife den PWM Port mal hochzählen lassen, da hat er sich schon seeeehr langsam mitbewegt, aber er hat ^^
Allerdings geht es nicht weiter als die 60° ( der servos lässt sich per Hand noch ziemlich weit weiter drehen...) Aber wenn ich ihm den Wert 1 ausgebe, dann reagiert er ziemlich gut drauf...
Also soll ich des signal lieber über den Beeper port ausgeben oder ?
Danke schon mal
Julian

Matthias
28.05.2004, 18:25
Du kannst es mal mit dem Beepport ausprobieren. Vielleicht funtzt es. Ich würds zwar gerne machen, doch hab ich im moment nur Servos ohne Elktronik und ohne Poti zur hand...

Das wäre aber auch ne idee. Nimm die Elektronik raus, häng das poti an nen AD und den Motor an einen Digitalen port (nartürlich mit Treiber). Ist doch viel einfacher...

Manf
28.05.2004, 20:57
Der Unterschied liegt ein bischen in dem Regelalgorithmus, der im Servo schon abgegeglichen und stabil ist.
Es ist sicher eine prägende und auch wertvolle Erfahrung den Regelkreis über den Controller zu schließen.
(ganz im Ernst)
Manfred

Matthias
29.05.2004, 11:37
Also ich hab's ausgeprobt und es funtzt super. Einfach nen AD an das Poti (nartürlich an den Schleifer, die Beiden anderen an + und Masse) und den Motor über nen L293 an nen Digitalport. Wenn man ne Stellung angibt (z.B. 128) fragt sich der MC68 zuerst, ob der Wert grösser oder kleiner als die jetzzige stellung ist und dreht sich in die Richtige Richtung. Währenddessen wird nun immer abgefragt, ob das Poti schon richtig steht und wenn es das Tut, der Motor gestoppt.

29.05.2004, 12:17
@Jörg_



Bascom ??? Eigentlich wollte ich in Assembler Programmieren.
Ist Bascom nicht Basic-compiler ?

Klar ist Bascom ein Basic-Compiler.

Einem Servo ist es aber reichlich egal, in welcher Sprache du das Programm für deinen Microcontroller programmierst.

Deine Frage war ja ob jemand weiss wie man den "SANWA 1301 Servo" ansteuert und nicht wo der Fehler in deinem Assembler Programm oder deiner Schaltung liegt.

Um erst mal festzustellen ob der Servo sich ganz normal wie jeder andere auch ansteuern lässt hätte ein Bascom Programm wohl genauso funktioniert.
Manchmal führt ein kleiner Umweg schneller zum Ziel.

Javik
29.05.2004, 19:05
Gute Idee des mit dem Poti !! aber ich möchte des doch lieber im Hintergrund machen....
Zwischen wievielen herz soll ich den des Beepsignal wählen ??
Gruß Javik