360° Micro-Servo FS90R

Hallo,

ich möchte in meinem Auto von vorne aus die Einstellungen am Subwoofer ändern können.
Am Verstärker sind zwei Einstellregler. Ich dachte jetzt daran, zwei Servos zu verwenden.
Leider ist der Drehwinkel von "min" zu "max" größer als 180° :confused:

Habe jetzt ein wenig gegoogelt und diese Servos gefunden:
Feetech FS90R

Jetzt bin ich allerdings ein wenig durcheinander.
Kann ich mit dem Servo auch Positionen anfahren und diese halten, wie das mit einem "normalem" Servo der Fall ist?

Sprich würde das hier funktionieren?

myservo.write(270);

Was gibt es sonst noch für Möglichkeiten?

Danke!
Gruß Daniel

Nein.
Dieses Servo ist auf dauerdrehung ausgelegt. Die Ansteuerung erfolgt nicht für eine bestimmten Winkelstellung sondern Drehrichtung/Geschwindigkeit.

Wieso brauchst Du 270° Servo? Bist Du sicher daß Du die Einstellungen an beide Endausschläge Steuern mußt.
Alternativen sind: Getriebe, oder besser Schrittmotor.

Grüße Uwe

uwefed:
Nein.
Dieses Servo ist auf dauerdrehung ausgelegt. Die Ansteuerung erfolgt nicht für eine bestimmten Winkelstellung sondern Drehrichtung/Geschwindigkeit.

Wieso brauchst Du 270° Servo? Bist Du sicher daß Du die Einstellungen an beide Endausschläge Steuern mußt.
Alternativen sind: Getriebe, oder besser Schrittmotor.

Grüße Uwe

Sagen wir es so: Es wäre schön, den gesamten Einstellbreich abdecken zu können.
Gibt es denn Schrittmotoren, die sich ansteuern lassen wie Servos? Also die Gesamte Elektronik integriert haben. Der Aufwand mit Hall- oder Drehimpulsgeber die Position auzuwerten ist doch recht hoch...
Oder ein IC, dass über I²C angesteuert werden kann, dass die Aufgabe erfüllt?

Das von mir ausgesuchte Servo hat wohl ein Poti, mit dem man die Mittelposition einstellen kann. Keine Ahnung was damit gemeint ist...
Siehe: Youtube-Link

Jedenfalls kann ich mit:
myservo.write(90)
das Servo sofort stoppen. Da die Geschwindigkeit des Servos bekannt ist (Datanblatt) könnte man errechnen, welche Zeit es laufen müsste, um "genau" auf eine Position zu fahren. Allerdings weiß ich nicht, wie ich immer die aktuelle Position im Programm speichern kann, da die Zeiten, die das Servo von der einen zur anderen Position braucht, auch von der vorherigen Position abhängig ist.

Ließe sich da ein Code schreiben oder wird das eher Fluch als Segen sein?

Ich finde halt auch die Bauform "Servo" recht passend für meine Anwendung. Schrittmotoren sind eher rund, größer und die Befestigung ist komplexer. Abgesehen davon braucht man meist noch eine Auswertung und das Porgamm wird länger...

Gruß Daniel

Vergiß beides.

Es gibt keine Schrittmotorsteuerung die sich wie ein Servo ansteuert.
Ansonsten Aufwendige Treiber mit seriellen Schnittstellen kosten viel Geld. Du mußt Dir schon selbst was bauen.

Die Position aus der Ansteuerung mal Zeit zu berechen ist zu ungenau.

Grüße Uwe

Danie_:
Was gibt es sonst noch für Möglichkeiten?

Hallo Daniel,
wie experimentierfreudig bist Du? Meine Idee: Deine Subwoofer-Potis haben genauso 270° wie die vom Servo.

Natürlich unterscheiden sich Servos von der Bauform, aber ich habe ein Servo aus der Starterpackung vor ein paar Monaten demontiert. Da sind mechanische Endanschläge, die könnte man entfernen. Dann die Kalibrierungswerte in attach(pin, min, max) so einstellen, daß der Servo einen größeren Winkel nutzt, idealerweise 270°. Ob die Elektronik da mitspielt, weiß ich aber nicht, das mußt Du probieren! Da die Bibliothek Servo kaum Werte jenseits der 180 annehmen wird, würde dann write(180) einem größeren Winkel entsprechen.

Das ist ein Weg von mehreren möglichen. Du kannst die Zeiten für den Servo auch selbst erzeugen oder die Elektronik des Servos durch Software im Arduino ersetzen.

Ich wollte nur mal Möglichkeiten aufzeigen.

Du kannst auch die Potis gegen Motorpotis austauschen.

Den Motor vom Poti kannst du dann über Kabel fernsteuern. Dann sparst du dir die ganze Mechanik. Mußt dann zwar an der Endstufe rummachen, aber irgendwas ist ja immer...

agmue:
Hallo Daniel,
wie experimentierfreudig bist Du? Meine Idee: Deine Subwoofer-Potis haben genauso 270° wie die vom Servo.

Natürlich unterscheiden sich Servos von der Bauform, aber ich habe ein Servo aus der Starterpackung vor ein paar Monaten demontiert. Da sind mechanische Endanschläge, die könnte man entfernen. Dann die Kalibrierungswerte in attach(pin, min, max) so einstellen, daß der Servo einen größeren Winkel nutzt, idealerweise 270°. Ob die Elektronik da mitspielt, weiß ich aber nicht, das mußt Du probieren! Da die Bibliothek Servo kaum Werte jenseits der 180 annehmen wird, würde dann write(180) einem größeren Winkel entsprechen.

Das ist ein Weg von mehreren möglichen. Du kannst die Zeiten für den Servo auch selbst erzeugen oder die Elektronik des Servos durch Software im Arduino ersetzen.

Ich wollte nur mal Möglichkeiten aufzeigen.

Hallo,
klingt erstmal interessant. Allerdings hab ich bei den Servos, die ich geöffnet habe, gegenteiliges festgestellt. Es waren SG90 von Tower Pro. Leider war hier nicht nur durch mechanische Endausschläge der Drehwinkel begrenzt, sondern auch durch das verwendete Poti selbst. Die Kohlebahn streckte sich max. über 190°!

Daher ist das erstmal nur eine gute Idee. Um das zu versuchen bräuchte ich aber einen Typ, wo das mit dem Poti nicht der Fall ist! Und ich möchte jetzt ungern 20 potis kaufen und die außernander legen.

Nochmal zürück zum 360° Servo:
Da man die Mittelposition abgleichen kann, müsste das Poti doch die vollen 360° abdecken, oder?
Wie wäre es, den Schleifer des Potis an den ADC des Arduino zu hängen?
Dann könnte man doch Softwaretechnich, mit Servo.detach() das Servo einfach stoppen, wenn der ADC einen bestimmten Wert (= Position) erreicht hat?

Oder läuft das auch wieder zu instabil?
In meinem Fall komme ich definitiv nicht über die 360° raus, daher bekomme ich auch keinen "Überlauf" vom ADC Wert von 1023 auf 0.

Wenn ich auf dem Holzweg bin, bitte sagen! :=)

Gruß Daniel

Danie_:
Wenn ich auf dem Holzweg bin, bitte sagen! :=)

Leider ja. Du hast "FeFeetech FS90R 360° Cont. Rotation Servo" verlinkt und da die kontinuierliche Rotation übersehen. Das Poti ist mechanisch abgekoppelt und steht fest in der Mitte. Bei 90° ist Halt, sonst dreht sich der Servo nach links oder rechts. Es verhält sich wie ein DC-Motor mit eingebauter H-Brücke. Verwendet wird so ein Servo beispielsweise als Seilwinde und paßt gut zur sonstigen Elektronik eines ferngesteuerten Modells. Du könntest so einen Servo einbauen, nur fehlt Dir dann die Positionsbestimmung.

Danie_:
Allerdings hab ich bei den Servos, die ich geöffnet habe, gegenteiliges festgestellt. Es waren SG90 von Tower Pro. Leider war hier nicht nur durch mechanische Endausschläge der Drehwinkel begrenzt, sondern auch durch das verwendete Poti selbst. Die Kohlebahn streckte sich max. über 190°!

Das kann sein, ich werde mein SG90 von Tower Pro mal genauer anschauen, da Du ja grundsätzlich an so einem Weg interessiert bist.

Danie_:
Daher ist das erstmal nur eine gute Idee. Um das zu versuchen bräuchte ich aber einen Typ, wo das mit dem Poti nicht der Fall ist! Und ich möchte jetzt ungern 20 potis kaufen und die außernander legen.

Mehr ist es bislang auch nicht! Eine Anfrage in einem Modellbauforum, ob meine Idee überhaupt eine Aussicht auf Erfolg haben könnte, würde das Kaufen von vielen Mustern ersparen.

Mein Servo ist zerlegt.

Das darin verbaute Poti links im Bild sieht nicht anders aus als das aus meiner Wühlkiste rechts. Die nutzbare Schleiffläche (gelb) beträgt 250°, wovon wegen der mechanischen Sperre nur 210° (blau) genutzt werden. Dies kann man an den mechanischen Schleifspuren, die auf dem Foto nicht erkennbar sind, feststellen. Würde man also die mechanische Begrenzung entfernen, könnte man die volle Schleiffläche von 250° nutzen.

Wieviel gemessene Grad braucht das Poti von Deinem Subwoofer?

Hallo,

danke fürs Demontieren! Leider brauche ich genau 300°! Daher werde ich wohl nicht um die Stepper rumkommen. Suche gerade nach einer einfachen Möglichkeit.
Perfekt wäre ein bzw. zwei I²C Treiber. Leider find ich nichts passendes :confused:

Ist euch da etwas bekannt?

Update:
AMIS-30622 bzw. Pin und Funktionskompatibel der TMC222.
Leider konnte ich nur eine einzige Lib dafür finden: TMC222 lib
Leider sind keine Beispiel Sketche dabei. Muss das also noch etwas studieren...
Für Tipps wäre ich sehr dankbar!

Gruß Daniel

I2C durch das halbe Auto gelegt könnte wahrscheinlich nicht funktionieren.
Der Kabel ist zu lang/ bzw Kabelkapazitäten zu groß.

Warum nimmst Du nicht 2 Arduino mit Serial verbunden und diese Billigstepper:
http://www.ebay.de/itm/ULN2003-Stepper-Motor-Control-Board-5V-Schrittmotor-/171187077225?hash=item27db8b8069:g:BEQAAOSwNSxVOMM4

Ansteuerbar über stepper.h Bibliothek. Der Motor macht mit Getriebe ca 4000 Schritte.

Grüße Uwe

Es gibt durchaus Servos, die weiter drehen können.
Heissen "Segelwinde", und schaffen mehrere Umdrehungen (gibt unterschiedliche). Ansteuerung genau wie bei nem Servo- natürlich nicht ganz so fein (da die Auflösung natürlich gröber ist).
Und für 2.50 gibts die nicht...

Alternativ kann man auf ein Servo nen Zahnrad montieren, und somit auch den Drehwinkel erhöhen.

uwefed:
Warum nimmst Du nicht 2 Arduino mit Serial verbunden und diese Billigstepper:
http://www.ebay.de/itm/ULN2003-Stepper-Motor-Control-Board-5V-Schrittmotor-/171187077225?hash=item27db8b8069:g:BEQAAOSwNSxVOMM4

http://robocraft.ru/files/datasheet/28BYJ-48.pdf

Ansteuerbar über stepper.h Bibliothek. Der Motor macht mit Getriebe ca 4000 Schritte.

Hatte ich auch schon auf dem Schirm. Mit der Lösung könnte es funktionieren.

ABER:

Rabenauge:
....Alternativ kann man auf ein Servo nen Zahnrad montieren, und somit auch den Drehwinkel erhöhen.

Lässt mich gerade hellhörig werden! Simple Idee, mit großem Nutzen. Allerdings weiß ich nicht, wie eine solche Konstuktion aussehen kann. Wo bekommt man Zahnräder her, die auf ein Servo passen?
In Welchem Verhältniss müssen "Antriebs-Welle" und das Servo zueinander stehen?

Komme wirklich eher aus dem Elktronischen Bereich, mechanik war nie mein spzielgebiet :confused:

Danke,
Gruß Daniel

Es gibt sogar spezielle Zahnräder, die auf "Standard"-Servowellen montiert werden können wie die normalen Servohörner.
Das Problem dabei ist: dieser "Standard" interessiert niemanden, drei Servos von drei verschiedenen Herstellern können unterschiedliche Abtriebswellen haben, müssen es aber nicht!
Bei HiTec (und deren Clones) geht es im allgemeinen.
Ansonsten kann man die Dinger oft auch trotzdem fest bekommen, etwas Schrumpfschlauch drunter, Sekundenkleber (klebt die meisten Servowellen nicht, da sie oft aus Nylonähnlichem Zeugs sind), Epoxy.....
Notfalls kann man auch irgendein Zahnrad kurzerhand auf dem originalen Servo"horn" (ne runde Scheibe liegt meist eh bei) verschrauben und gut isses.

Solche Zahnräder haben die üblichen Robotik-Läden, musste mal bissel stöbern.
Ja und die Unter-oder Übersetzung, die du brauchst, kriegste selber raus, oder? :wink:
Wird nie ganz genau passen, aber Servowege kann man ja per Software recht gut anpassen...

Hallo,

puuuuuuh...das wird also wieder eher ein Gebastel mit der Mechanik.
Wenn ich überlege, dass ich selbst Zahnräder nicht für unter 5€ (Versand usw..) bekommen werde und evtl. mehr als einen Versuch brauch, dass Zuverlässig zum Laufen zu bringen, tendier ich mitlerweile eher zu den Steppern mit ULN-Treibern und der Arduino Stepper Lib!

Dann eine kleine Platine mit mega328 und ULN Treibern als SMD und schon bin ich fertig...

Noch eine Frage: laufen die ULN-Treiber und der Motor auch mit 3,3V?
Motor von mir aus auch mit 5V. Wird eh über Darlington Array geschalten.
Die Spannungsversorgung für den Motor abzuschalten ist daher wohl auch nicht nötig, oder? Der zieht nur Strom, wenn ich über den Treiber die Spulen bestrome oder ist da intern noch weitere Elektronik?

Eine Frage zur Software:
Kann man der Libarary einfach eine gewisse Position (Gradzahl) vorgeben, die der Motor dann anfährt? Oder muss man das über die Stepps ausrechnen?

Gruß Daniel

Danie_:
In Welchem Verhältniss müssen "Antriebs-Welle" und das Servo zueinander stehen?

300/180=1,6

Danie_:
Noch eine Frage: laufen die ULN-Treiber und der Motor auch mit 3,3V?

Ich habe es noch nicht probiert, aber dann dürfte er doch recht schlapp werden.

Danie_:
Der zieht nur Strom, wenn ich über den Treiber die Spulen bestrome oder ist da intern noch weitere Elektronik?

Ja. Nein.

Danie_:
Kann man der Libarary einfach eine gewisse Position (Gradzahl) vorgeben, die der Motor dann anfährt? Oder muss man das über die Stepps ausrechnen?

Ein Schrittmotor kennt seine Position nicht! Daher benötigt man einen Referenzpunkt. Ab dem Referenzpunkt zählt die Software dann die Schritte. 3413 Schritte entsprechen 300°. Wenn der Arduino keine Spannung mehr hat, vergißt er die Position. Nach Einschalten ist also Referenzpunkt anfahren notwendig. Das ist der Unterschied zum Servo, der hat eine Positionsrückmeldung über das Poti!

Darlington und 3,3V ist problematisch da die Transistoren eine hohe Emitter-Kollektor-Sättigungsspannung haben. Besser man nimmt FETs. Allerdings nur wenn der Motor auch bei 3,3V vernünftig läuft.

Hallo nochmal,

habe die Stepper-Module mit ULN2003 jetzt zur Hand.
Nach etwas Suche, fand ich heraus, dass der Motor nur mit einer kleinen Änderung mit der Arduino-Stepper Lib läuft!
Siehe: Es geht doch: Schrittmotor 28BYJ-48 mit der Original Arduino Stepper Library

Mit dem Sketch vom Blog läuft der Motor, wie er soll.

Leider habe ich noch einige unklarheiten, was das Positionieren des Motors angeht.

Woher weiß ich bei Programmstart, wo sich der Motor gerade befindet?
Dazu brauche ich jeweils einen Refernzpunkt. Aber wie setze ich diesen?

Gruß Daniel

Einen Referenzpunkt kannst du zum Beispiel mit einem Mikroschalter (z.B. so einer) realisieren.
Zu Programmstart machst du dann eine Referenzfahrt bis zu diesem Schalter, dann ist die Position bekannt. Falls auf mehreren Axen gefahren wird, brauchst du natürlich für jede einen eigenen Schalter für den Referenzpunkt.
Es gibt zwar auch noch andere Möglichkeiten die Position bei Programmstart herauszufinden, aber die mit den Schaltern ist die einfachste und wird auch von vielen industriellen Geräten verwendent (z.B. CNC-Fräsen, Lasercutter etc.).

Danie_:
Nach etwas Suche, fand ich heraus, dass der Motor nur mit einer kleinen Änderung mit der Arduino-Stepper Lib läuft!

Ich nutze AccelStepper für einen sanften Anlauf. :slight_smile:

Als Referenzpunktsensor verwende ich Reflektierender Objektsensor OPTEK OPB743.