Servo selber realisieren

Eine Frage:

Ich habe mich bereits “wund” gesucht, aber nicht gefunden. Ich möchte einen Servo selber bauen mit Adruino. Soll heißen, kein Servo ansteuern über #include sondern eine Motor und einen Poti. Und das Arduino Board soll die Regelung übernehmen. Also das es ein PWM signal als Eingang bekommt und dann den Motor anhand der Poti werte stellt. Da muss es doch was geben, bzw, jemand, der sowas schon mal gemacht hat.

Danke !

Natürlich geht das, macht aber überhaupt keinen Sinn. Ist einfach deutlich zu teuer. Normale Motoren neigen zu übersteuern.

Mit einem Schrittmotor kann es gehen. Dann kommt auf die Welle vom Schrittmotor der Poti. Ist aber alles andere als schön und gut. Was spricht gegen einen Servo?

Das bezieht sich auf meine Post von gestern... Geht immer noch um die blöden Aktuatoren von Linak, die sich leider nicht als Servos ansteuern lassen. Und der hat hat genau die Ausgangslage. Position über Spannung (Linear Pot) und nur 2 Eingänge Motordrehrichtung, wo man 5 volt anlgen kann. Somit würde ja der Code der auf nem Servo läuft genau das bewirken, was ich suche.

Bei einem Schrittmotor braucht man i.d.R. kein Poti, weil man einfach die Anzahl der Schritte zählen kann :)

Auf crossposting ist man hier allergisch: http://forum.arduino.cc/index.php?topic=205978.msg1515550

Grüße Uwe

Serenifly: Bei einem Schrittmotor braucht man i.d.R. kein Poti, weil man einfach die Anzahl der Schritte zählen kann :)

Braucht man je nach Anwendungsbedarf wohl. Beim Schrittmotor kann man nach einem Reset nicht den aktuellen Stand auslesen oder? Alternativ müsste man einen Endschalter mit einbauen. Sprich beim Reset wird zuerst der Motor bis zum Endschalter gefahren, um einen definierten Wert zurück zubekommen.

Kein Schrittmotor, einfacher Motor.

@UWE: Es sprechen nun mal nicht alle Englisch und auch ich würde mich auf Deutsch leichter tun. Aber so erreicht man ein gößeres Publikum.

TEC_MICHL: Kein Schrittmotor, einfacher Motor.

@UWE: Es sprechen nun mal nicht alle Englisch und auch ich würde mich auf Deutsch leichter tun. Aber so erreicht man ein gößeres Publikum.

Wenn Du meinst, daß das deutsche Publikum Dir zu klein ist und Dir keine schnelle und qualifizierte Lösung geben kann, dann ist das nun mal so. Das was Du fragst ist für sicher 100 deutsche User eine Fingerübung von 1 Stunde Programmierarbeit. Wenn Du großes Publikum willst ... Grüße Uwe

sschultewolter: Beim Schrittmotor kann man nach einem Reset nicht den aktuellen Stand auslesen oder? Alternativ müsste man einen Endschalter mit einbauen. Sprich beim Reset wird zuerst der Motor bis zum Endschalter gefahren, um einen definierten Wert zurück zubekommen.

Ja, das stimmt. Ich habe es immer mit einem Endschalter gemacht. Ist auch bei langen Fahrstrecken (mit Gewindestangen) nicht wirklich ein Problem. Kommt aber auch auf die Anwendung an. Gibt sicher auch Sachen bei deinen man das Objekt nicht erst mal verfahren will.

@TEC_MICHL Ich sehe nicht wirklich wo das Problem ist einen Motor zu bewegen bis ein bestimmter Wert erreicht ist. Man sollte halt keine ständige Regelung programmieren, sondern aufhören wenn das Ziel erreicht ist und erst wieder anfahren wenn ein neuer Wert vorgegeben wird. Dann wird es wesentlich einfacher.

In dem anderen Thread warst du ja fast schon so weit :)

Ansonsten könnte man auch einen PI-Regler machen: http://playground.arduino.cc/Code/PIDLibrary

Der sollte dann automatisch den Motor anhalten wenn der Sollwert erreicht ist. Die Richtungsumschaltung muss man aber glaube ich noch per Hand machen.

TEC_MICHL: Kein Schrittmotor, einfacher Motor.

@UWE: Es sprechen nun mal nicht alle Englisch und auch ich würde mich auf Deutsch leichter tun. Aber so erreicht man ein gößeres Publikum.

Und wie wollst du den mechanisch aufbauen? Direkte Übersetzung wird nicht gehen, dafür sind die zu schnell von den Umdrehungen.

Ich will das nicht selber aufbauen, das ist ein fertiger Linear Stellantrierb von Linak http://www.linak.de/produkte/linearantriebe.aspx?product=LA36. Vorgeschlatet ist das Steuergerät, dass ich als PDF angehängt habe. Da steht genau was es kann und was nicht. Ich hoffe, das erhellt die Sache etwas.

Momentan ist er so eingestellt:
Strom an FW → dreht raus
Strom an BW → dreht rein
Pos wird rückgemeldet von 0=0,5 Volt - max=4,5 Volt

Die Geschwindigkeit wird über ein Leitung von 0-5Volt geregelt. (Das ist jetzt ersmal egal. Das wird einfach über ein Poti eingestellt.)

So wie ich das verstanden habe, kann das Ding nicht mehr? Oder lieg ich da falsch? Also keine Servo Ansteuerung, was einfach zu schön wäre)

Produktdatenblatt TR-EM-288.pdf (128 KB)

Ach ja, das habe ich noch vergessen. Ich habe mir ja schon überlegt, ob ich einfach aus nem RC Servo die Platine rausschraube und vorschalte, nur bin ich mir nicht sicher, ob das klappt. Dann würde ich das ganze Regelproblem einfach umgehen, und kann das über die Servobibliotek von Arduino ansteuern.

Edit: Wobei hier natürlich das Problem wäre, dass die Spannung das Potis im Servo eine andere ist als meine. Und da fängt es wieder an, dass man selber rumlöten muss+ die Servoelektronik braucht. Mein Budget ist auch begrenzt. Mein Betreuer will das ganze so billig wie möglich haben...

Kommt evtl. auch noch ein Code in eigener Sache?

Wenn du die Geschwindigkeit vorgeben kannst, ist es doch ganz einfach. Entweder als PID oder aber etwas eigenes.

deltaStrecke von IST und SOLL berechnen. Dann zB. wenn Wert < 100 => 3V, wenn Wert < 50 => 1,5V … Somit würdest du am Ende mit einer minimalen Spannung Richtung Sollwert fahren. Wirst aber dann noch ein bisschen löten müssen, VV kann der Arduino nicht selber.

Ja, die Geschwindigkeit kann ich vorgeben.

Code kommt, sobald es etwas vorzeigbares gibt. Auf jeden Fall habt Ihr/Du mir schon viele Anregungen gegeben, wie ich das machen könnte. Ich hab vor 4 Wochen das erste mal von Arduino gehört und meine C Kentnisse stammen aus einem kleinen Seminar im Grundstudium, verzeit mir also, wenn es nicht so schnell geht und/oder ich vielleicht in Euren Augen dumme Fragen stelle. Aber dafür bin ich schon ganz zufrieden mit den Resultaten.

Die Eingabe via Taster und Touch (4D Sytems) steht, das auslesen der Volt geht, und auch schon das Fahren des Motors mit verschiedenen Geschwindigkeiten. Jetzt muss ich nur noch das Porblem geschickt lösen mit dem Treffen des Soll werts. Aber Deine Idee mit der Geschwindigkeit als als Start und End Rampe ist gut. Auf die Idee bin ich leider nicht gekommen, aber so kann ich die Pos viel besser anfahren, als mit einem breiten Intervall, Totabnd, Hysterese. Ich probier jetzt einfach mal verschiedene Ansätze und dann sehen wir ja..

Was bedeutet VV?

Variable Voltage, sprich einen Spannungsausgang in deinem Fall von 0-5V. Gibt aber sicherlich Module, die eine entsprechenden PWM Wert dahin umwandeln können/ bzw. nach PWM Wert steuern. Sind die 0-5V der Lastkreis oder nur ein Steueranschluss?

Ich kann das doch über nen PWM Ausgang erledigen? Du meinst, dass man noch nen Transistor dran hängen muss, um das Bord nicht zu grillen? Das ist nur ein Steueranschluß, ich hab mal nachgemessen, der zieht 0.12 mA, bei 5 Volt, also quasi nix. Man kann den Akt entweder "Hardcoden", soll heißen, eine feste Geschwindigkeit einstellen, oder aber variable über den Anschluß steuern, was ja ich ja auf jeden Fall tun sollte um ne Geschwindigkeits-Rampe zum anfahren und stoppen zu haben.

Was ich auch noch gesehen habe, ist das man die "Zeit bis zum Stillstand" am Akt einstellen kann. Aber hier schreibt der Hersteller, dass man das nicht zu kurz machen sollte, da sonst die Kohlen vom Motor und die Akt.-Mechanik schneller verschleißt. Logisch, wenn ich jedes mal ne Vollbremsung mit dem Auto mach tut es dem auch nicht gut... ;-)))

PWM schaltet nur schnell ein und aus. Du solltest aber zu Anfang es erst einmal mit der Vollbremsung versuchen. Zumal eine Vollbremsung du ja nicht machst, wenn du langsam die Rampe runterfährst. Kohlen kosten nicht die Welt.

Ach so, ja da ich habe eine RC Glied davor gehängt und am Oszi getetstet, das geht. Ich musste meinen Versuchsaufbau nochmal änderen, ursprünglich wollte ich ja die Geschwindigkeit gar nicht benutzen in der Regelung. Aber was ich jetzt so gelesen habe ist das auf jeden Fall besser um das Ding ordentlich anzusteuern.

Blöd ist, dass ich ja den Original Akt nicht da habe. So musste ich mir die Schaltung und Mechanik des Akts nachbauen, nen kleinen Getriebemotor mit Spindel, der ein Poti hin und her schiebt, sowie eine H-Brücke mit den beiden Eingängen links und rechts, sowie einen Transistor mit RC Glied, der die Geschwindigkeit regelt und an dem PWM Ausgang hängt. Also genau wie am Aktuator.

Jetzt habe ich alles um es zu testen, wenn da nicht dieses "nevige Weihnachten" wäre, was einen dauernd abhält... ;-) Den code, der ja mit sicherheit erstmal nicht richtig funktioniert poste ich mal in den nächsten Tagen. Dann habt Ihr was zu lachen...

Problem ist, wenn dein RC Glied zu klein ist, hast du Spannungseinbrüche, ist das RC Glied zu groß, läuft der Motor nach.

Die Frage ist, ob sich das RC Glied auch mit dem Akt so verhält wie am Oszi. Kommt darauf an, welche "Steuerlast" benötigt wird.