PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Andere Elektronik in Servos verbauen?



forgoden
25.09.2014, 08:00
Hallo,

ich habe schon eine Weile mit Servos beschäftigt, so ganz zufrieden bin ich damit nicht. Es gibt hin und mal wieder Störungen und zweitens weiss der Mikroprozessor (bei mir Arduino) gar nicht wo der Servo wirklich steht und ob er zittert, und wieviel Strom er zieht und und und...

Ich habe zum Beispiel viele MG995 aus China bestellt. Irgendwie sind die nicht so dolle. Sie haben alle unterschiedliche Bereiche, manche stottern in bestimmten Drehbereichen etc... Ich denke dass die Elektronik die da drin verbaut ist sowieso Müll ist.

Daher dachte ich jetzt:
Man könnte eigentlich die Elektronik aus den Servos rausschmeissen und eine komplett neue einsetzen welche auch Daten an Mikroprozessor zurückliefern kann damit er weiss wo der Servo steht und ob er zittert. Beim Zittern soll der Mikroprozessor den Servo automatisch abschalten, beziehungsweise einen anderen Wert geben bis er eben nicht zittert. Ein weiterer Vorteil wäre, falls der Servos mechanisch gegen das Ende stösst, dann kalibriert der Mikroprozessor automatisch und weiss wo das Ende ist.

Jetzt meine eigentliche Frage: Gibt es solche Schaltpläne schon fertig zum auswechseln und zu kaufen?

oberallgeier
25.09.2014, 08:20
... die Elektronik aus den Servos ... neue einsetzen ... Gibt es solche Schaltpläne schon fertig ...Klar:
http://www.openservo.com/

Peter(TOO)
25.09.2014, 09:57
Hallo,

Hallo,Ich habe zum Beispiel viele MG995 aus China bestellt. Irgendwie sind die nicht so dolle. Sie haben alle unterschiedliche Bereiche, manche stottern in bestimmten Drehbereichen etc... Ich denke dass die Elektronik die da drin verbaut ist sowieso Müll ist.

Neben der Elektronik kann es auch an der Mechanik liegen.

Wenn das Getriebe zu viel Spiel hat, muss der Motor erst einmal eine Weile drehen, bis sich das Potentiometer beweg und eine Rückmeldung über die veränderte Position liefern kann. Auch das Potentiometer selbst kann ruckeln.

MfG Peter(TOO)

forgoden
25.09.2014, 17:14
Klar:
http://www.openservo.com/

Ah, es gibt also tatsächlich doch sowas. Bei OpenServo bekommt jeder einen eigenen Mikroprozessor? Wäre das nicht ein bißchen übertrieben? Jedenfalls sehe ich die Preise pro Platine.
Mein Projekt hat 16 Servos, das würde die Kosten sprengen. Wäre es nicht besser wenn nur ein Mikroprozessor alles Servos steuert? Es müsste eine Platine ohne Mikroprozessor, nur Daten an Arduino zurückliefern. Oder wird etwa der ATMega zu langsam sein bei den 16 Servos?

White_Fox
25.09.2014, 20:20
Bei OpenServo bekommt jeder einen eigenen Mikroprozessor? Wäre das nicht ein bißchen übertrieben? Jedenfalls sehe ich die Preise pro Platine.
[...]
Wäre es nicht besser wenn nur ein Mikroprozessor alles Servos steuert? Es müsste eine Platine ohne Mikroprozessor, nur Daten an Arduino zurückliefern. Oder wird etwa der ATMega zu langsam sein bei den 16 Servos?

Schau dir doch mal deine Anforderungen an:

Daher dachte ich jetzt:
Man könnte eigentlich die Elektronik aus den Servos rausschmeissen und eine komplett neue einsetzen welche auch Daten an Mikroprozessor zurückliefern kann damit er weiss wo der Servo steht und ob er zittert. Beim Zittern soll der Mikroprozessor den Servo automatisch abschalten, beziehungsweise einen anderen Wert geben bis er eben nicht zittert. Ein weiterer Vorteil wäre, falls der Servos mechanisch gegen das Ende stösst, dann kalibriert der Mikroprozessor automatisch und weiss wo das Ende ist.
Die normale Servosteuerung besteht aus einer einzelnen Leitung wo man dem Servo seine aktuelle Position diktiert.
Wenn du Daten zurückliefern willst brauchst du definitiv entweder eine zweite Leitung bzw. ein ausgeklügeltes Kommunikationssystem.
Dann willst du zittern erkennen (=Position bzw. Spannung über Poti messen).
Und mechanischen Anshlag (Wie willst du das realisieren? Kraft messen? Stromaufnahme und Potiänderung vergleichen? Oder ganz anders?)

Du brauchst also, sagen wir mal, 4 EA-pins, wovon zwei ADWs sein müssen. Jetzt schau mal, wieviele ADWs dein Arduino hat.
Wenn du einigermaßen präzise arbeiten willst kommst du auch um 16-Bit-Arythmetik nicht mehr herum, das kann man mit einem AVR zwar machen, kostet aber schon ein wenig Rechenzeit, zumindest solche Geschichten wie Division und Subtraktion.

Für ein Servo ist das kein größeres Problem, aber meines Wissens hat ein AVR maximal acht ADWs, also kannst du vier Servos steuern. Da wirst du ein paar ms Verzugszeit schon zu spüren bekommen, schätze ich. Und ich vermute fast dein AVR soll noch mehr als nur Servos steuern...

Rabenauge
25.09.2014, 20:31
Bei diesen biligen "Gerümpel-Servos" (sorry, ich nutze die auch, aber mehr sind die einfach nicht) hilft ne bessere Elektronik nix.
Da ist einfach durchweg alles nur Billigramsch, das fängt bei den Gehäusen an und hört beim Stecker auf.
Wenn man ordentliche braucht, sind die ja auch zu bekommen-für entsprechende Preise. Man kriegt halt auch in China nicht mehr, als man bezahlt.
Allerdings: bei richtiger Ansteuerung (die Arduino-Servo-Lib ist _nicht_ der Weisheit letzter Schluss!) zittern auch die Dinger nicht, sondern haben einfach nur gewisse "bauartbedingte" Toleranzen.
Ganz ehrlich: diese Dinger "verbessern" zu wollen,scheitert daran, dass man sie dann neu bauen müsste. Einzig, vielleicht recht sinnvolle Möglichkeit: das Poti auslesen-das geht im Grunde mit nem einzelnen zusätzlichen Draht (kenn die Werte der verbauten Potis nicht, evtl. muss da was angepasst werden), damit man das Feedback hat.
Aber dann hörts auf-mehr sind die Dinger nunmal insgesamt einfach nich wert.

Klebwax
25.09.2014, 21:11
Ah, es gibt also tatsächlich doch sowas. Bei OpenServo bekommt jeder einen eigenen Mikroprozessor? Wäre das nicht ein bißchen übertrieben?
Ein µC ist auch nur ein komplexer digitaler Schaltkreis. Im Vergleich zu einem Servoschaltkreis sind seine Herstellkosten vermutlich niedriger (unter anderem weil er moderner ist). Sein Einsatz ist aber wesentlich flexibler. Für einen PIC, der ADC und PWM an Board hat, findet man bei Microchip öffentlich zugängliche Preise von unter 40 Cent bei 5000 Stück. Das ist aber keine wirkliche Stückzahl und erst recht kein verhandelter Preis (wobei man diesen auch für weniger als 60 Cent in Einzelstück bekommt).

Die Preisunterschiede zwischen digitalen (http://www.hobbyking.com/hobbyking/store/__10346__Corona_939MG_Digital_Metal_Gear_Servo_2_7 kg_12_5g_0_13sec.html) und analogen (http://www.hobbyking.com/hobbyking/store/__14458__HobbyKing_939MG_Metal_Gear_Servo_2_5kg_12 _5g_0_14sec.html) Servos unterscheidet sich nicht sehr. Von den Herstellkosten könnte das digitale wahrscheinlich billiger sein, unter anderem weil man das digitale vollständig in SMD ausfüheren und damit vollautomatisch herstellen kann. Da aber die Kunden wie du denken, kann man am Markt einen höheren Preis realisieren.

MfG Klebwax

forgoden
25.09.2014, 23:24
Einzig, vielleicht recht sinnvolle Möglichkeit: das Poti auslesen-das geht im Grunde mit nem einzelnen zusätzlichen Draht (kenn die Werte der verbauten Potis nicht, evtl. muss da was angepasst werden), damit man das Feedback hat.


Hm, das würde ich gerne mal probieren. Vielleicht gibt es irgendwo Infos, Anleitungen dafür?


Ein µC ist auch nur ein komplexer digitaler Schaltkreis. Im Vergleich zu einem Servoschaltkreis sind seine Herstellkosten vermutlich niedriger (unter anderem weil er moderner ist). Sein Einsatz ist aber wesentlich flexibler. Für einen PIC, der ADC und PWM an Board hat, findet man bei Microchip öffentlich zugängliche Preise von unter 40 Cent bei 5000 Stück. Das ist aber keine wirkliche Stückzahl und erst recht kein verhandelter Preis (wobei man diesen auch für weniger als 60 Cent in Einzelstück bekommt).

Die Preisunterschiede zwischen digitalen (http://www.hobbyking.com/hobbyking/store/__10346__Corona_939MG_Digital_Metal_Gear_Servo_2_7 kg_12_5g_0_13sec.html) und analogen (http://www.hobbyking.com/hobbyking/store/__14458__HobbyKing_939MG_Metal_Gear_Servo_2_5kg_12 _5g_0_14sec.html) Servos unterscheidet sich nicht sehr. Von den Herstellkosten könnte das digitale wahrscheinlich billiger sein, unter anderem weil man das digitale vollständig in SMD ausfüheren und damit vollautomatisch herstellen kann. Da aber die Kunden wie du denken, kann man am Markt einen höheren Preis realisieren.

MfG Klebwax

Ah, deshalb heissen sie "digitale Servos", weil µC verbaut sind? Ich hatte bis jetzt immer nur analoge Servos bestellt. Lässt sich ein digitaler Servo denn programmieren beziehungsweise an Arduino Feedback liefern, wenn er nur 3 Anschlüsse (+, -, S) hat?

Peter(TOO)
26.09.2014, 00:31
Hallo,

Ah, deshalb heissen sie "digitale Servos", weil µC verbaut sind? Ich hatte bis jetzt immer nur analoge Servos bestellt. Lässt sich ein digitaler Servo denn programmieren beziehungsweise an Arduino Feedback liefern, wenn er nur 3 Anschlüsse (+, -, S) hat?

Nein, sondern weil diese mit einem digitalen Signal gesteuert werden.

Üblich ist ein Impuls mit etwa 1-2ms Breite.
http://rn-wissen.de/wiki/index.php/Servos#Ansteuerung:_Signalform_und_Schaltung

MfG Peter(TOO)

forgoden
26.09.2014, 01:43
Hmm schwierig ... gibt es neben OpenServo noch Platinen ohne Prozessor, die einfach nur Feedback zurückliefern? Bei 16 oder mehr Servos dürfen die Kosten nicht so sprengen. Es wäre wirklich von Vorteil wenn Arduino einfach die Drehrichtung ermitteln kann.

Andere Ansätze sind glaub ich zu teuer.

- - - Aktualisiert - - -

Ich probiers einfach mal aus mit Poti an Arduino anschließen. http://arduino.cc/en/uploads/Tutorial/potentiometer.jpg

Ich denke dass ich einfach den mittleren Pin von Poti im Servo an Arduino "analog in" anschließen kann. Die Stromversorgung bekommt er ja von Servoelektronik.

Dann bleibt noch die Frage wie ich 16 Potis (und mehr) an einem Pin von Arduino anschließen kann?

Klebwax
26.09.2014, 06:28
Nein, sondern weil diese mit einem digitalen Signal gesteuert werden.

Nope.
Üblich ist ein Impuls mit etwa 1-2ms Breite.

Das gilt für analoge und digitale Servos gleichermaßen. Sie müssen ja kompatibel sein. Bei den analogen Servos werden die bekannten Servo ICs eingesetzt, bei den digitalen ist es ein µC mit einer Brücke. Bei den ganz feinen wird statt des Potis ein magnetischer Winkelsensor eingesetzt. Und da sie austauschbar mit den gleichen Steuerungen einsetzbar sein müssen, liefern sie natürlich keine Daten auf der Steuerleitung zurück.

MfG Klebwax

Geistesblitz
26.09.2014, 09:28
Gibt höchstens noch busfähige Servos, deren Preise liegen in der Regel aber jenseits von Gut und Böse. Kenn da aber bisher auch nur hauptsächlich die Dynamixel-Servos. Einfach einen Draht nehmen und an das Poti anschließen kannst du gerne machen, besser wäre es aber, wenn du zusätzlich noch ein weiteres Massekabel unabhängig von dem bereits vorhandenen verlegst, damit du da keine Störungen bekommst. Sonst misst du da nur Datenmüll. Gegen sowas haben die anderen aber sicher noch bessere Tipps. Wegen 16 Potis an AVR bekommen: da fällt mir nur Analogmultiplexer-ic ein, da könntest du zwischen den Leitungen wechseln und zB. zwei mal hintereinander 8 Potis messen. Hab aber auch keine Ahnung, ob es da was besseres gäbe.

Klebwax
26.09.2014, 10:20
Gibt höchstens noch busfähige Servos, deren Preise liegen in der Regel aber jenseits von Gut und Böse. Kenn da aber bisher auch nur hauptsächlich die Dynamixel-Servos.

So ist es. Sie beseitigen aber auch eine weitere Schwachstelle der RC-Servos: der Motor wird nicht aus der Logikspannung versorgt. Man muß also nicht damit rechnen, daß, so Murphy es will, mehrere oder alle Servos gleichzeitig anlaufen und die Elektronik zum Absturz bringen. Die Preise sind aber ein ganz anderes Kapitel.

MfG Klebwax

White_Fox
26.09.2014, 11:59
@forgoden:
Wenn ich deine Beiträge so lese (Ich schließe die Datenleitung des Servos einfach mal an "an analog in" an) meine ich, du solltest dir wenigstens ein paar Grundkenntnisse Elektronik/Digitaltechnik anlesen.

Ich weiß zwar nicht wie du dazu kommst, einen Arduino programmieren zu wollen (Hast du das überhaupt schonmal gemacht?), mir scheint aber du hast nur eine sehr geringe Vorstellung von dem, was du da vorhast.

Rabenauge
26.09.2014, 18:24
Sehe ich ähnlich. Um ne Strippe vom Potiabgriff zu nem analogen Eingang zu ziehen, muss man nun wirklich kein Genie sein- trotzdem würd ich, _vor_ dem anschliessen, mal das Multimeter befragen, was dort rauskommt...gibt ja Leute die glauben, aus nem billigen Mickerigservo mit genug Spannung doch nen Highend-Teil kochen zu können. ;)

oberallgeier
27.09.2014, 12:01
... Ich denke dass ich einfach den mittleren Pin von Poti im Servo an Arduino "analog in" anschließen kann ...So in diese Richtung hatte radbruch vor ner Weile mit Servos experimentiert und interessante Ergebnisse gefunden.
https://www.roboternetz.de/community/threads/33909-Minimall%C3%B6sung-Servo-Sensor?highlight=servo+sensor
Er konnte hier, klick mal, (https://www.roboternetz.de/community/threads/33909-Minimall%C3%B6sung-Servo-Sensor?p=322255&viewfull=1#post322255) auch wirklich Signale in der Servo-Steuerleitung messen und sinnvoll auswerten. Es war ihm und anderen aber nicht wirklich, schlüssig bzw. endgültig klar geworden, wieso das geht; ausführlicher stehts im Thread und zugehörigen Links. Ähnliche Ergebnisse habe ich auch bekommen aber ich habe dieses Thema sehr bald verlassen.

Als sehr breite Information über Servos empfehle ich dies hier
https://www.youtube.com/watch?v=yQMcr3PNxV8

und ansonsten das R n - Wissen zu Servos.
http://rn-wissen.de/wiki/index.php/Servos

Ganz grob bzw. ganz allgmein gesagt: übliche Modellbauservos, auch die aus dem hochpreisigen Segment, sind nicht dazu gemacht die aktuelle Position zurückzumelden. Es sind Stellantriebe die im Rahmen ihrer Leistungsfähigkeit ein nach einem Beinahestandard gepulstes Signal in eine Winkelstellung der Abtriebswelle umsetzen.