PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servos modifizieren mit digitalem Potentiometer



x-ryder
11.07.2004, 13:13
Hi

Ich habe zwei Servos modifiziert und das Potentiometer mit zwei Widerständen ersetzt.
Funktioniert alles ganz gut aber das Problem ist, das die Widerstände ne Toleranz von 10% haben... 8-[
Nun kann man sich vorstellen was passiert: in der einen Richtung dreht der Motor schneller als in der anderen.
Nun will ich die Widerstände durch ein digitales 3-Draht Potentiometer CAT522P ersetzen und mit einer Lichtschranke und einer Lochscheibe abgleichen.

Nun bitte ich euch um eure Meinung dazu.
Denkt ihr das könnte funktionieren?

Martin

Michael
11.07.2004, 13:22
Och nööö, x-ryder,
willst du jetzt Fliegen mit Elefanten erschlagen?
was kann hier ein digitales Poti besser als ein analoges? Verlänger das alte Poti mit 3 Leitungen und kleb es aussen auf das Servo. Damit kannst du die Mitte einstellen. Dass das Servo in einer Richtung schneller läuft ist normal, das musst du mit Software ausgleichen.
Gruss, Michael

x-ryder
11.07.2004, 13:24
Jaja iss schon richtig die Mwethode kenn ich auch aber mit nem digitalen und ner Lichtschranke mit Lochscheibe kann ich das auch noch automatisch abgleichen wenn der Motor schon ne Weile gelaufen ist.

Martin

Michael
11.07.2004, 13:35
Hallo x-ryder,
ich glaube, du verstehst da was falsch. Mit dem Poti kannst du nicht die unterschiedlichen Geschwindigkeiten für den rechts/links-Lauf beeinflussen, sondern nur die Mittelstellung. Im (Bascom-)Programm also auf servo(1) = 150 und mit dem Poti dann auf Ruhepunkt stellen. Die unterschiedlichen Drehzahlen haben was mit der Mechanik zu tun, da musst du mit Software nachregeln.
Gruss, Michael

x-ryder
11.07.2004, 13:38
Mann du kennst dich echt aus...
Nochmal Danke!

x-ryder
11.07.2004, 14:08
Tach nochmal!

Das mit der Mittelstellung iss ne gute Idee aber wenn ich das so eingestellt habe, das der Motor sich kein bisschen bewegt und ich ihn dann wieder laufen lasse, dann hat sich das Poti durch die Vibration schon wieder verstellt...
Hast du vielleicht dafür auch eine Idee?

Martin

Michael
11.07.2004, 15:49
Hallo x-ryder,

Hast du vielleicht dafür auch eine Idee?
Version1: Du stellst das Poti ein, lötest es aus und ersetzt es durch entsprechende Festwiderstände. Mit Widerstandsberechnungen kennst du dich doch aus?
Version2: Du ersetzt das Poti durch Festwiderstände von je halben Potiwert und machst den Rest in Software. Das ist dann eine einfache Dreisatz-Geschichte.
Version3: Du stellst das Poti ein und klebst es danach z.B. mit Sekundenkleber fest.
Selber find ich die 2. Version am elegantesten.
Gruss, Michael

x-ryder
11.07.2004, 22:53
Hi

Kannst du die zweite Methode mal etwas näher erklären?
8-[

Denn das die Software den Rest macht iss nen bisschen kompliziert.
Ich möchte den Servo auch anhalten können und deswegen nicht gleich zwei Pins (Transistoren zum Trennen der Betriebsspannung zum Servo) verschwenden.
Und die Software kann das nicht so genau Regeln, das der Servo wirklich stehen bleibt sondern er bewegt sich dann noch etwas.

Martin

Michael
12.07.2004, 00:37
Hallo x-ryder,

Kannst du die zweite Methode mal etwas näher erklären?
ich versuchs:
Durch Probieren stellst du fest, dass dein Servo bei 145* stillsteht.
Weiterhin stellst du fest, dass bei 100 das Servo voll rückwärts und bei 210 dein Servo vorwärts dreht.
Du willst 40%rückwärts:
145-100 = 45(100%) 45*0,4 = 18 -> 145-18 = Wert 127 für 40%rückwärts.
Du willst 80% vorwärts:
210-145 = 65(100%) 65*0,8 = 52 -> 145+52 = Wert 197 für 80% vorwärts.
Durch Probieren musst du halt rausfinden, wie gross der Unterschied zwischen rechts und links ist und den jeweiligen Höchstwert anpassen.

Gruss, Michael

*hier ist die Pulszeit des Servos im Bascom-Programm gemeint, sie wird noch mit der Reloadzeit von 10 multipliziert und das ergibt die Zeit in µS.

12.07.2004, 04:03
@x-ryder

Die Rechnerei die Michael dir vergerechnet hat, kannst du auch sparen, indem du einfach ausprobierst bei welchem Wert die Servos stehen bleiben.
Als ich mit zwei Servos als Antrieb rumgespielt habe, habe ich die Werte einfach in einer Schleife alle paar Sekunden erhöht und den Wert jeweils über die serielle Schnittstelle ausgegeben.
Dann konnte ich einfach ablesen, bei welchem Wert sie stehen bleiben.

Damit es nicht so lange dauert, würde ich die Schleife allerdings nicht über den kompletten Bereich laufen lassen.
Statt die Werte auszugeben, könntest du de Schleife auch mit einem Taster kombinieren. Wenn die Servos stillstehen drückst du den Taster und der Controller speichert den Wert als Nullstellung.

Wenn du das fest in deinen Robby integrierst, kannst du ihn so jeder Zeit wieder abgleichen. Bei Widerständen mit 10% Toleranz könnte ich mir nämlich vorstellen, dass der Wert bei dem die Servos stillstehen sich von Zeit zu Zeit etwas verlagert.

Bei meinen Servos habe ich allerdings gar keinen Wert gefunden, bei dem sie 100% stillstanden. Ein ganz bischen ruckeln hörte man sie immer.
Ich habe allerdings auch nicht sehr intensiv probiert das wegzubekommen, weil ich das Gefühl hatte, dass das Problem bei meinem Controller liegt und der die Impulsdauer gar nicht genau genug schaltet.
Mit einer Servoansteuerung hat so ein Controller ja ganz ordentlich zu tun.

Eine völlig andere Möglichkeit wäre, die Servo-Elektronik komplett auszuräumen und die Servos wie normale Getriebemotoren anzusteuern. Das Problem, dass sie immer ein bischen vorwärts oder rückwärts ruckeln und nicht ganz stoppen, bist du dann auf jeden Fall los.

Du brauchst dann allerdings irgendeinen Motortreiber, z.B. eine H-Brücke oder einen L293D und für 2 Servos mindestens 4 Pins + 2 Inverter.
Dafür ist der Controller dann aber auch weniger ausgelastet und kann sich noch um ein paar andere Sachen als die Servos kümmern.

Michael
12.07.2004, 10:56
Hallo Gast-Namenlos,

Die Rechnerei die Michael dir vergerechnet hat, kannst du auch sparen
leider erwähnst du mit keinem Wort, wie du das Problem mit den unterschiedlichen Drehzahlen gelöst hast :( Ich bin aber gerne bereit, andere Rechenvarianten zu probieren.

Mit einer Servoansteuerung hat so ein Controller ja ganz ordentlich zu tun.
Hmmm, wir reden hier über den Atmega8, die 2 Servos rauben ihm vielleicht 3/20stel seiner Zeit, den Rest langweilt er sich mehr oder weniger.

Eine völlig andere Möglichkeit...
Alternativen waren vom OP nicht gewünscht :)
Gruss, Michael

Bucas
28.06.2007, 20:20
Hallo alle zusammen...

das Thema is gut und ich hätte mal die Frage ob es vom Prinzip her möglich ist einen Servo mit nem Digitalen Wiederstand auszustatten!!!

mfg Michi