PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2 Servos mit Bascom - gehen nicht richtig



Jon
08.07.2006, 13:17
Hallo,
ich habe an meinem Roboter zwei Servos montiert. Bei einem habe ich das Poti entfernt, sodass er sich um 360Grad drehen kann und ich nur die Geschwindigkeit einstelle. Den zweiten habe ich nicht verändert.
Wenn ich jetzt dem zweiten sage, er soll die Posizion 100 einnehmen (also die Mitte) macht er das auch, der erste aber dreht sich bis das Programm zu ende ist.
Was kann ich da machen?
Das Programm kommt gleich nach.

Jon

Jon
08.07.2006, 13:23
Hier das Programm:

$regfile = "m32def.dat"
$crystal = 1000000
$baud = 1200

Config Servos = 2 , Servo1 = Portc.4 , Servo2 = Portc.3 , Reload = 10

Config Portc.4 = Output
Config Portc.3 = Output

Enable Interrupts


Servo(1) = 100 'unten
Waitms 175

End


Ich hoffe auf Antworten, die mir weiterhelfen.

Jon

PicNick
08.07.2006, 14:42
Öhm, du hast da aber schon eine Schleife drin ?


$regfile = "m32def.dat"
$crystal = 1000000
$baud = 1200

Config Servos = 2 , Servo1 = Portc.4 , Servo2 = Portc.3 , Reload = 10

Config Portc.4 = Output
Config Portc.3 = Output

Enable Interrupts
DO '---------------------------------------------------
Servo(1) = 100 'unten
Waitms 175
LOOP '---------------------------------------------------

End



Bei dem "END" isses sonst aus mit Servo

Jon
08.07.2006, 15:14
Warum sollte da eine Schleife drin sein?
Es geht bei mir auch so.
Das Programm stellt den Servo auf die Mitte.
Um das Selbe zu wiederhohlen muss ich erst ein neues Programm mit einem anderen Wert laden.
Dieses Programm ist nur zum Testen.



Bei dem "END" isses sonst aus mit Servo
Was meinst du damit?

Jon

PicNick
08.07.2006, 17:19
Bei "END" werden interrupts disabled, d.h. es gibt keine Servo-Pulse mehr.
Aber so, wie du das offenbar gedacht hast, ist das natürlich wurst

Jon
08.07.2006, 18:26
Beim Weiterexperimentieren habe ich festgestellt, dass sich der erste Servo immer in einer Geschwindigkeit und in eine Richtung dreht.
Vieleicht hilft dies anderen weiter.
Ich hoffe immernoch auf weitere Antworten.

jon

E-Fan
10.07.2006, 10:51
...Bei einem habe ich das Poti entfernt, sodass er sich um 360Grad drehen kann und ich nur die Geschwindigkeit einstelle....

???
Wie das? Wenn das Poti rausfliegt dreht der Motor immer so schnell er kann weil er das Poti zur Positionserkennung braucht. Den Regelkreis haste damit ausser Gefecht gesetzt.

Jon
10.07.2006, 12:39
...dreht der Motor immer so schnell er kann...

Das macht er bei mir nicht. Wenn ich 70 nehme dreht er sich ziemlich schnell und wenn ich 255 eingebe sehr langsam. Die Position des Servos ist in meinem Fall unwichtig.

jon

m.a.r.v.i.n
10.07.2006, 13:40
Hallo jan,

hast du den Poti durch 2 Fest Widerstände ersetzt (2 x 2,5kOhm)? Dann sollte der Servo etwa bei Mittelstellung stehenbleiben, bei kleineren Werten in eine Richtung drehen, bei größeren Werten in die andere Richtung.

Meine Servos habe ich immer nach dieser Anleitung (http://www.seattlerobotics.org/guide/servohack.html) gehackt.

Gruß m.a.r.v.i.n

Jon
10.07.2006, 14:11
Was heißt bei Mittelstellung stehen bleiben?
Das verstehe ich nicht so ganz.

Den Poti habe ich nicht durch Widerstände ersetzt.
Werde ich mal machen :-)
Scheint mir sinnvoll zu sein :-)

m.a.r.v.i.n
10.07.2006, 14:29
Hallo jon,

wie E-fan schon sagte wird der Poti zur Positionserkennung gebraucht.
Wenn man den Poti durch ein Widerstandspaar ersetzt, heist das für die Servo-Regelung, das die Servo-Mittelstellung (Position 100) erreicht ist und der Motor anzuhalten ist. Den genauen Wert muß man durch Versuch herauskriegen. Den Wert solange ändern bis der Servo stehen bleibt.

Bei kleineren Werten (0..99) dreht der Motor mit abnehmenden Werten immer schneller in eine Richtung.

Bei höheren Werten (101..200) mit zunehmenden Werten immer schneller in die andere Richtung.

Da die mechanische Sperre und der Poti fehlen, dreht sich der Servo kontinuierlich.

Gruß m.a.r.v.i.n

Jon
10.07.2006, 15:39
Das würde in deinem Fall heißen, dass der Servo in deinem Fall bei 100 stehen würde.
In der Mitte oder dort wo er gerade ist?

Ich werde es jetzt einfach mal ausprobieren, nur dürfte es kompliziert werden die Widerstände im Servo unter zu kriegen.

Ganz verstehen tue ich es zwar immer noch nicht, aber vielleicht verstehe ich es, wenn ich es einfach mal ausprobiert habe.

Danke für die Hilfe.

jon

Jon
10.07.2006, 18:06
Hallo,
ich habe jetzt mal 3,3kOhm Widerstände genommen (was ja nach deiner Seite funktionieren soll), ich kann aber keinen Wert finden, bei dem der Servo stehen bleibt.
Liegt das am Widerstand oder hat das einen anderen Grund?

Auf jeden Fall glaube ich jetzt, dass ich verstanden habe, wie das funktioniert.

jon

PicNick
10.07.2006, 18:42
..kann aber keinen Wert finden, bei dem der Servo stehen bleibt.
Du meinst, er dreht mal vor, mal zurück ? Oder immer in eine Richtung ?

Jon
10.07.2006, 18:50
Er dreht mal vor und zurück nur halt unterschiedlich schnell. Das langsamste was ich gefunden habe ist ein Wert, bei dem der Servo 3min für eine Umdrehung braucht. Für mich muss er aber richtig stehen.
Als Idee hatte ich noch, dass ich einen Opptokoppler einbaue, der einfach zum Stehen die Versorgung abklemmt. Bräuchte ich aber noch einen weiteren Port :-(
Dafür müsste ich herausbekommen, wie viel Strom ein Servo normalerweise zieht.
Mein Messgerät ist mir nur kaputt gegengen, weshalb ich nichts nachmessen kann.

jon

PicNick
10.07.2006, 19:07
Ideal wär ein Trimmer zwischen den beiden Widerständen, damit du das genau justieren kannst.

Vorher versuch's aber noch mal mit einzelschritten.

Ich hab leider noch kein gehacktes Servo verwendet, mich wundert, daß keiner Probleme mit der Null-Stellung hat.

Jon
10.07.2006, 19:22
Vorher versuch's aber noch mal mit einzelschritten.
Was meinst du mit Einzelschritten?
Ich habe es so versucht, dass ich eine Variable von 0-255 hochgezählt habe und den Inhalt über Print mir anzeigen ließ und dann eine Pause von 4sek hatte und wieder von vorne angefangen habe.
Verstanden???? [-o<

Was ist ein Trimmer? :-#

jon

PicNick
11.07.2006, 06:45
Trimmer ist ein regelbarer Widerstand, wie ein Poti, nur muß es mit einem Schraubenzieher oder so eingestellt werden.
Da kannst du dann deinen Spannungsteiler (2 x 3k3) genau einstellen

Jon
11.07.2006, 13:49
Einen Trimmer einzubauen wäre etwas schwer. Ich hatte schon bei den beiden Widerständen Probleme. Der Servo ist halt extrem klein. Ich habe mir nochmal andere Widerstände gekauft und werde die mal testen.
Wenn es nicht gehen sollte muss ich halt mit einen Opptokoppler arbeiten.

Nochmal Danke für eure Hilfe!

jon