PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo hacking mal anders?!



Wrangler
07.07.2010, 20:43
Hi @all

Bin neu hier, drum erst mal ein freundliches hallo.
Bin zufällig auf diese seite gestoßen, auch wenn ich nicht wirklich (zumindest im moment) an robotik interessiert bin.

Trotzdem habe ich eine frage, und hoffe einer von euch kann mir diese beantworten.

Ich möchte einen modellbau-servo ganz einfach mittels eines wechselkontaktes von einem zum anderen anschlag fahren lassen.
(ohne zwischenpositionen, ohne präzision, also ganz schlicht links/rechts).
Ist soweit wohl auch noch kein problem. Habe einfach vor den servo-tester vom großen C nachzubauen, mit wenigen änderungen.

Sollte soweit also funktionieren.

Allerdings, sollte ich einfach den poti des servotesters gegen meinen wechsler mit festwiderständen ersetzen, würde der servo wohl mit maximaler geschwindigkeit fahren. Ich möchte ihn aber relativ langsam fahren lassen. Mal so als hausnummer evt. 90°/s.

Meines wissens, bei "standart-servo-hacks", läßt sich die geschwindigkeit über die pulsbreite regeln, also in meinem fall über die größe der festwiderstände an meinem wechsler. ist das so korrekt?

Sollte diese annahme also stimmen, dann fährt ein servo über eine weite strecke (z.B. 180°) mit maximaler geschwindigkeit, eine kurze strecke jedoch (wenn er nur z.B. 10° machen soll) mit langsamer geschwindigkeit?

So weit so gut... allerdings bringt mir der standart-hack nicht viel, da ich keine 360° will, sondern die anschläge so belassen wie sie sind.

Drum meine überlegung: könnte ich den servo-poti austauschen, z.B. nur halb so viel ohm, zusätzlich im servo ein wid. in reihe zu dem ausgetauschten poti (um wieder auf die mittelstellung zu kommen)?
Ich denke, der servo würde also weiterhin die vollen 180° fahren, jedoch "denkt" der servo er würde nur 90° fahren, und fährt deshalb langsamer?

Ok, sollte ich soweit mit meiner vermutung richtig liegen, und, mal angenommen es gibt noch jemanden, der meinen wirren gedanken folgen kann, dann:

...denke ich, den poti zu tauschen wäre nicht gerade einfach (zwecks beschaffung des richtigen potis, da es sich um einen micro-servo handelt, also die kleinste bauform).

Drum weitere gedankengänge um der beschaffung eines mechanisch und elektrisch passenden potis aus dem weg zu gehen:

könnte ich, paralell zum poti, einen festwiderstand (gleiche größe wie poti) um den poti zu halbieren, einen weiteren festwiderstand in reihe um auf den der 0-stellung entsprechenden widerstandswert zu kommen einlöten?

Also nochmal zusammenfassend:
(habe keine ahnung welche werte der servo poti hat, drum nur mal beispielhaft)

im servo ist ein poti (original), linksanschlag 0ohm, rechtsanschlag 100 ohm.
Paralell zum poti schalte ich 100 ohm fest. (was mir den poti halbiert)
in serie schalte ich 25 ohm, wenn der servo also in der mitte ist habe ich insgesamt 25 ohm wie original.

drehe ich den servotester auf 45° links (also halb links) fährt der servo bis 25 ohm, macht dabei aber (ohne es zu merken) 90° links?
andersrum, 45° rechts am tester, heißt servo bis 75 ohm, was wiederum einem vollausschlag gleicht? Der servo also im endeffekt immer nur halb fährt, deshalb nur halb so schnell, und trotzdem von anschlag bis anschlag? (besser gesagt von mitte bis anschlag)

Ok, und sollte es immernoch jemanden geben, der bis hier durchgehalten hat, mir folgen konnte und mein verwirrtes hirn versteht, dann bitte antworten, würde mich freuen.
Aber bitte jetzt keine konstruktiven vorschläge wie avr, bascom, oder was auch immer. Die lösung sollte einfach sein und keinen platz und kosten benötigen (jedenfalls nicht mehr als 2 smd-widerstände).
(nicht böse gemeint, nur verstehe ich von dem zeug nix, und möchte ich mich im moment auch nicht damit beschäftigen)

Dann schon mal vielen dank, Markus...

Manf
08.07.2010, 07:23
Konzeptvorschlag:
Der Motor soll sich hin und her drehen und das Poti soll angeben, zwischen welchen Positionen es hin und her dreht.
3 Anschlüsse Poti, 2 Anschlüsse Motor.
Das Poti wird an eine feste Spannung angeschlossen und liefert am Schleifer die Spannung für einen Schmitt-Trigger der den Motor ansteuert.
Die Motorgeschwindigkeit wird dabei über die Versorgungsspannung eingestellt.

Wrangler
08.07.2010, 07:33
ok, und danke erstmal.

doch so ganz kann ich dir nicht folgen. könntest du das näher erklären?
wie kann ich den motor von a nach b drehen, daß er dann auch anhält?
Die geschwindigkeit über spannung regeln, verliere ich da nicht enorm drehmoment?

gruß markus

ranke
08.07.2010, 08:04
Soweit ich es verstanden habe, geht Dein (Wranglers) Vorschlag dahin, der Servoelektronik kleinere Verfahrwinkel vorzutäuschen als das Servo tatsächlich ausführt. Das soll durch zusätzliche Widerstände am Servopoti erreicht werden. Ziel der Massnahme soll eine verringerte Verfahrgeschwindigkeit des Servos sein.

Ich glaube nicht, dass das so geht, der Servoregler ist so ausgelegt, dass er bis kurz vor erreichen der Sollstellung auf "Vollgas" fährt. Ers wenn die Ist-Stellung sehr nahe an der Sollstellung liegt, wird der Motor gedrosselt. Bei der genannten Maßnahme wird dieser Drosselbereich nur etwas erweitert (aber sicher nicht über den gewünschten Verfahrbereich).

Mögliche alternative Lösungsvorschläge:

1. Zusätzliche Getriebestufe, neues Servopoti kommt an neue Abtriebswelle. Nachteil: großer Mechanischer Aufwand, loht nur, wenn man das zusätzlich gewonnenene Drehmoment auch nutzt.

2. Verringern der Betriebsspannung am Servo: Einfach zu machen aber Drehmomentverlust, deshalb wahrscheinlich nicht praktikabel.

3. Langsames Ändern des Signals des Servotesters. Bei den meisten Schaltungen für Servotester gibt es intern eine Spannung, die dem dem PWM-Signal proportional ist (das wäre oft die Spannung am Mittelabgriff des Einstellpotis). Durch elektrische Maßnahmen (RC-Glied) kann man den maximalen Anstieg dieser Spannung begrenzen und dadurch Langsamlauf erzielen. Vorteil: keine Modifikation am Servo notwendig. Nachteil: Man muss wenigstens in der Lage sein eine Servotester Schaltung soweit abzuwandeln, damit man den gewünschten Erfolg erzielt.

Manf
08.07.2010, 08:26
Für die Beurteilung der langsamen Fahrt wäre es gut wenn man prüfen könnte, ob der Motor bei reduzierter Spannung genügend Moment aufbringen kann.

Die Lösung mit dem Schmitt Trigger ist für ein Hin und her -Fahren ohne Pause besonders einfach.

In der relativ einfachen Steuerung hier wurde schon ein Controller eingesetzt der die Servos in ca. 10 Schritten ansteuert.

http://i3.ytimg.com/vi/B5b77TkEQmg/default.jpg

http://www.youtube.com/profile?user=manf1234#p/u/38/B5b77TkEQmg

Hessibaby
08.07.2010, 08:53
Zur Verringerung der Stellgeschwindigkeit braucht man ( bei dem M51660 ) nur den Widerstand zwischen den PINs 9 & 11 ( üblicherweise 1K ) gegen ein 5k Poti auszutauschen. Sinvollerweise sollte man aber einen 220R Widerstand in Reihe schalten damit 9&11 nicht kurzgeschlossen werden.

Wrangler
08.07.2010, 18:01
Hi...

danke für die vielen vorschläge erstmal.

@ranke: ok, daß der servo bis fast kurz vor schluß volle geschwindigkeit macht war auch mein erster gedanke, aber wie vielfach im internet zu lesen, lässt sich bei gehackten servos, also ohne poti und ohne endanschlag, jedoch mit pwm, die geschwindigkeit über die pulslänge des testers steuern. Das widerspricht sich aber gegenseitig. Außerdem könnte ich ja bis "kurz vor Ende" vorgaukeln... hängt ja nur von den widerstandswerten ab. Hat das noch niemand probiert?

zu 1.: zusätzliches getriebe oder zahnrad fällt flach, absolut kein platz.

zu 2.: brauche zumindest annähernd volles drehmoment, geht also nicht.

zu 3.: könnte prinzipiell gehen, jedoch brauche ich keinen sanftanlauf, sondern durchgehend langsame geschwindigkeit. Außerdem ist mir nicht ganz klar wie das gehen kann, die pulsbreite entspricht ja der position, hat also folglich mit der geschwindigkeit nix zu tun. Die pausenzeit ist voreingestellt auf 20ms. würde ich die erhöhen, würde der servo im endeffekt wohl langsamer werden, jedoch kann man nicht mehr von fahren, sondern eher von ruckeln sprechen. oder liege ich da falsch?

@manf: schmitt trigger mag eine einfache lösung sein, jedoch erstens nicht für mich, 2tens erscheinen mir zumindest im moment 2 widerstände noch einfacher. lasse mich aber gerne vom gegenteil überzeugen.

@hessibaby: ok, DAS hört sich einfach an! vorrausgesetzt man hat einen M51660, in dem Servotester von C ist jedoch ein CD 4001. Womit ich wieder bei der frage wäre, was passiert wenn ich puls/pause auf mehr als 20 ms stelle, bezüglich ruckeln meine ich.

so long... markus

ranke
08.07.2010, 20:09
zu 3.: könnte prinzipiell gehen, jedoch brauche ich keinen sanftanlauf, sondern durchgehend langsame geschwindigkeit. Außerdem ist mir nicht ganz klar wie das gehen kann, die pulsbreite entspricht ja der position, hat also folglich mit der geschwindigkeit nix zu tun. Die pausenzeit ist voreingestellt auf 20ms. würde ich die erhöhen, würde der servo im endeffekt wohl langsamer werden, jedoch kann man nicht mehr von fahren, sondern eher von ruckeln sprechen. oder liege ich da falsch?


Durchgehend langsame Geschwindigkeit bei diesem Vorschlag sollte erreicht werden. Die Wirkung sollte so sein, wie wenn jemand langsam und gleichmäßig am Poti des Servotesters dreht, der Servo folgt dann der langsamen Drehung. Die Pausenzeit soll sich nicht (wesentlich) verändern, sondern die Impulszeit.

Der Vorschlag von hessibaby klingt auch sehr interessant, der M51660 ist nicht im Servotester, sondern im Servo verbaut (wenn man Glück hat).

Wrangler
09.07.2010, 19:34
hi...

ok, dann hört sich vorschlag 3 wirklich vernünftig an.
Der ic im servo... ok, hört sich auch gut an.
Dann werde ich auf gut glück einfach mal meinen wunschservo kaufen und zerlegen, aber da seh ich ziemlich schwarz, der servo den ich will hat 15Ncm und ist ca. 1x1x1,5 cm. schätze daß da kein standart ic mehr drin sein wird, eher smd oder nur so ne schwarze bolle, (ich mein diese aufgegossenen ic´s ohne gehäuse).
Aber mal gucken.
Zu dem vorschlag 3: wie müsste das rc glied denn so ungefähr aussehen und angeordnet sein? c und paralell dazu der r?

gruß markus

ranke
12.07.2010, 07:25
Zu dem vorschlag 3: wie müsste das rc glied denn so ungefähr aussehen und angeordnet sein? c und paralell dazu der r?


Ich habe am Wochenende ein paar Versuche in der Richtung gemacht, die Ergebnisse waren aber nicht sooo überzeugend. Ein langsames Verfahren zwischen zwei Stellungen ist möglich, allerdings ist die Geschwindigkeit nicht so gleichmäßig, wie ich mir das vorgestellt hatte. Außerdem war es notwendig, die Betriebsspannung recht genau einzuhalten. Also nichts wirklich praxistaugliches.
Als Alternative käme noch in Frage, den Servotester auf Basis eines Mikrocontrollers aufzubauen, der wäre dann frei programmierbar. User Oberallgeier hat so etwas - glaube ich - mal gemacht und es sollte hier im Forum noch einige Infos darüber geben.

Richard
12.07.2010, 11:08
Die pausenzeit ist voreingestellt auf 20ms. würde ich die erhöhen, würde der servo im endeffekt wohl langsamer werden, jedoch kann man nicht mehr von fahren, sondern eher von ruckeln sprechen. oder liege ich da falsch?



Sollte in gewissen Grenzen klappen, Mit einem normalen servo und
das Bascom Servo.bas Programm sollte sich das schnell testen
lassen. Ich muss leider erst einmal ein paar h aufräumen ehe ich
an mein Material herankomme.......:-(

Gruß Richard

oberallgeier
12.07.2010, 11:40
... Ein langsames Verfahren zwischen zwei Stellungen ist möglich, allerdings ist die Geschwindigkeit nicht so gleichmäßig ...Langsames Verfahren ist (z.B. mit nem Servotester, aber auch mit üblichen Ansteuerungen durch µC´s) ohne Probleme und recht gleichmäßig möglich - WENN der Servoabtrieb nicht mehr direkt mit dem Poti gekoppelt ist. Hier ist der Einbau von zwei ziemlich gleichen Festwiderständen als Spannungsteiler sinnvoll (geht recht einfach in SMD - sozusagen als eine erste SMD-Lötübung). Dabei wird der umgebaute Se rvo normal angeschlossen und ein Signal für "Mittelstellung anfahren" ausgegeben - z.B. 1 ms von 20 ms. Je nachdem, wie genau das für den individuellen Se rvo passt, bleibt der dann stehen. WENN jetzt ein Signal knapp über oder knapp unter dieser Mittelstellung ausgegeben wird, fährt der Se rvo vor oder zurück. Je nachdem wie weit dieses "knapp" von der Mittelstellung entfernt ist, fährt der Se rvo schneller oder langsamer. Ich hatte das bei meinen Billigservos prima hingekriegt.
Nachteil: Es ist jetzt nur noch der mechanische Anschlag aktiv. Wenn man hier an einen definierten Anschlag fahren will, muss man Endtaster oder etwas Ähnliches nehmen - oder eine externe Wegmessung.


... Alternative ... Servotester ... aufzubauen ... Oberallgeier ... einige Infos darüber geben.
................http://oberallgeier.ob.funpic.de/servotester_1663.jpg

Wenns nicht mehr sein soll, bitte:
Ein Posting zum Servotester + Bauteilliste (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=401021&sid=09d832f0eae75e8ba7f4429b6866b13c#401021)
nochn Posting (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=466370&sid=f7eab23d8a55fd78ab762a55aaec4a24#466370)
und Posting mit Schalt- und Bestückungsplan und Quellcode (ASM). (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=401093&sid=b104e0e8852684ffb267ee8271ab4af4#401093)
Natürlich könnte ich mein hex für den tiny13 beistellen . . . .

Heute würde ich das nicht mehr mit nem tiny13 machen, lieber mit nem 2313 oder höher - und den aktuellen Ansteuerwert, also die aktuelle Länge des Pulses, in Digits oder gar in Millisekunden über eine x232 ausgeben. Dann könnte man den Ansteuerwert (für irgendwelche späteren Zwecke) auf einem Terminal verfolgen.

Viel Erfolg

Wrangler
12.07.2010, 14:32
Hi @ all...

wow, da habt ihr euch ja richtig mühe gegeben. Danke vielmals.

@oberallgaier: genau das, was du da beschreibst, wollte ich ja eigentlich wissen, bzw realisieren, nur eben ohne den servointernen poti zu entfernen. Dem servo einfach vorgaukeln, er habe nur einen minimalen weg zu fahren, in wirklichkeit hat er aber noch den vollen weg vor sich. Abschaltung dann eben doch über den internen poti.

naja, mal schauen, die geposteten lösungen sind durchaus auch interessant, werde mal bisschen rumprobieren.

trotzdem danke an all die bemühungen, und schöne grüße aus dem ostallgai, markus...

oberallgeier
12.07.2010, 16:10
... ohne den servointernen poti zu entfernen. Dem servo einfach vorgaukeln, er habe ...Ja, so hatte ich das Eingangsposting verstanden, nur dachte ich, alles sollte ohne µC laufen, einfach mit zwei Schaltern: linker Anschlag - rechter Anschlag. Und mit so etwas habe ich keine Ahnung. WENN Du einen Controller die Arbeit überlässt, könntest Du natürlich etwa so arbeiten:
Poti komplett drinlassen, aber ablöten. Als Ersatz die angesprochenen Widerstände als festen Spannungsteiler einlöten. Das originale Poti als Stellungsmessung verwenden, also an einen ADC des Controllers schalten. Damit kannst Du nun - wie die originale Elektronik auch - den aktuellen Schwenkwinkel des Se rvoabtriebs feststellen. Weiter: mit dem oben angesprochenen Verfahren den Se rvo langsam bewegen und abschalten, sobald das Poti die gewünschte Stellung signalisiert. Dies nur als Idee/Vorschlag - ich habe so etwas noch nicht gebaut.

Searcher
12.07.2010, 17:31
Hallo,

ich hatte mal zu Versuchszwecken einen langsam laufenden Timer mit einem NE555 aufgebaut. Den THRS Pin des NE555 liefert je nach Dimensionierung ein brauchbares Dreiecksignal. Das über einen OpAmp (LM358) auf den CV Eingang eines weiteren NE555 geschaltet, der als Servosignalgenerator geschaltet war. Durch Veränderung der Spannung an CV ändert sich die Länge des Steuerpulses für den Servo.

Ist zwar keine Präzisonsschaltung und es kommt einiges auf die Beschaltung an aber der Lenkservo tat seine Arbeit:

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

EDIT: hab noch die damals verwendete Schaltung angefügt. Stammt direkt aus einer Simulation. In der Praxis muß man noch ein bißchen fummeln, um auf die gewünschte Servobewegung zu kommen :-)

Gruß
Searcher

Hessibaby
13.07.2010, 09:03
@Wrangler, der M51660 ist das IC im Servo, nicht im Servotester.