mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Steuern eine Roboterarms mit mC und L293D


Autor: Stephan B. (angelus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

Und zwar habe ich mit einen Spielzeugroboterarm gekauft, den ich 
irgendwann mal per Bildverarbeitung regeln will und damit z.B. 
Legosteine sortieren will. (ziemlich ungenau, aber erstmal egal)
Das ganze soll mit Labview gesteuert werden.
Der Mikrocontroller soll dabei nur die IC L293D mit PWM ansteuern, weil 
mir da nichts besseres einfällt.
Der Rest der Logik soll dann Labview übernehmen.

Der Roboterarm hat 5 Gleichstrommotren.

Ich habe mir folgendes überlegt.
RS232-Schnittstelle.
AtmelMega32
IC L293D
Gleichstormmotor
so war mal mein Grundgedanke.
Es steht noch keine Schaltung oder so, nur die Idee.

Ist es sinnvoll?


Jetzt habe ich noch ne Frage:
Der Roborter arm ist schon USB tauglich, und wir über ein Programm am PC 
gesteuert.
Theoretisch könnte ich mit Labview direkt die schon bestehende Steuerung 
ansprechen, allerdings habe ich absolut gar keine Plan, was für Befehle 
ich schicken müsste.
Kennt sich da jmd. aus?
Habe mal einen USB-Logg angehängt.
Kann mir dazu jmd. was sagen, oder nen Tipp geben, in welchem Forum ich 
da nachfragen kann?

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und zwar habe ich mit einen Spielzeugroboterarm gekauft, den ich
> irgendwann mal per Bildverarbeitung regeln will und damit z.B.

Was die Menscheit alles so braucht....

> Der Mikrocontroller soll dabei nur die IC L293D mit PWM ansteuern,
> weil mir da nichts besseres einfällt.

Das wuerde gehen....

> Der Rest der Logik soll dann Labview übernehmen.

..aber das ist Unsinn. Du brauchst eine Rueckmeldung der Motore ueber 
ihre Drehzahl und Position. Und zwar im Microcontroller damit der beides 
regeln kann. Dann kannst du dem von mir aus mit Labview mitteilen wo er 
hinfahren soll.

> Ist es sinnvoll?

Nein.

> Der Roborter arm ist schon USB tauglich, und wir über ein Programm
> am PC gesteuert.

Dann haben die Motoren Encoder? Oder eine andere Rueckmeldung? (Servos) 
Ist es reproduzierbar moeglich eine Position wiederholt anzufahren?

Olaf

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Olaf,


Olaf schrieb:
>> Der Roborter arm ist schon USB tauglich, und wir über ein Programm
>
>> am PC gesteuert.
>
>
>
> Dann haben die Motoren Encoder? Oder eine andere Rueckmeldung? (Servos)
>
> Ist es reproduzierbar moeglich eine Position wiederholt anzufahren?

Es sind Spielzeuggleichstrommotoren, wie zum Beispiel in 
Carrera-Rennautos.
Dadurch  ist es nicht wirklich möglich eine Position verlässlich 
wiederholt anzufahren.
Es gibt eine Steuerung die dem Motor einen Impuls schickt und in eine 
bestimmte Anzahl von Umdrehungen in eine Richtung drehen lässt, aber 
immer mit einer gewissen Toleranz.

Deshalb dachte ich an eine Bildverarbeitung die mit Labview die 
Positionierung übernehmen soll.

Grüße
Stephan

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Deshalb dachte ich an eine Bildverarbeitung die mit Labview die
> Positionierung übernehmen soll.

Naja, immerhin theoretisch waer das wohl moeglich. Aber in der Praxis 
wird das wohl sehr nahe an unmoeglich sein.

Deine Kamera muesste ja dann die Information ueber Position und 
Geschwindigkeit liefern.

Ueberleg mal wie es ist wenn du das Spielzeug von Hand steuerst:

1. Du hast zwei Kameras in deiner Ruebe eingebaut. Die brauchst du
   auch am Rechner. (mindestens)

2. Dein Gehirn ist fuer solche Aufgaben deutlich leistungsfaehiger,
   lernfaehig und kennt bessere Algorthmen. Trotzdem musst du vermutlich
   erst eine Weile damit spielen bis du es kannst.

3. Du kannst raten und in die Zukunft sehen. Wenn ein Teil gerade fuer
   deine Augen nicht sichtbar ist dann weisst du automatisch wo es sich
   befindet weil Gehirn vorrausetzt das sich eine bestimmte Bewegung
   fortsetzt.

All das musst du in einer Software umsetzen. Und die muss noch 
moeglichst schnell sein weil jede Zeitverzoergerung deine Regelung 
schwieriger macht.


Mit anderen Worten es waere VIEL einfacher eine Rueckmeldung von den 
Motoren zu haben. Pruef mal ob du da nicht Encoder aus einer alten Maus 
dranbasteln kannst. Vielleicht kuckt die Achse des Motors ja hinten 
etwas raus. Oder ob man an einem Zahnrad des Getriebes einen Aufkleber 
mit einem Code (Graycode?) aufkleben kann und das dann abnimmt.

Olaf

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und zwar habe ich mit einen Spielzeugroboterarm gekauft,

Welchen?

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Axel Düsendieb (axel_jeromin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nach der Bedienungsanleitung wird der Arm wohl nur über verschiedene 
Laufzeiten gesteuert. Also ziemlich ungenau.


Da ist es am besten die Motore durch Schrittmotore zu ersetzen, obwohl 
man dann auch jeweils einen Referenzpunkt braucht


Axel

Autor: Axel Düsendieb (axel_jeromin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder beim Einsatz von Schrittmotoren den Strom nicht so groß einstellen 
und dann die maximal Anzahl von Schritten in die mech. Endlage fahren 
und glauben, dass man da angekommen ist.



Axel

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn es nur um die Endlage geht kann ich 5 Taster  anbringen, die 
die Endlage bzw. den Nullpunkt bestimmen. Das sollte das kleinste 
Problem sein.
wären dann am mC 5 Eingänge mehr...

Schrittmotoren einbauen ist halt schlecht, da es für die Motoren 
vorgesehen Plätze gibt. Wenn dann sollten sie ungefähr Baugleich oder
kleiner sein.
Hast du da einen Vorschlag?

Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub du wirst zehnmal schneller fertig wenn du dir deinen eigenen 
Arm baust.

Da musst du nich auf den Platz achten, usw

Autor: Böse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pearl verkauft doch eh nur Humbuk, wirf es in die Tonne und mach was 
sinnvolles!

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich glaub du wirst zehnmal schneller fertig wenn du dir deinen eigenen
> Arm baust.

Da waer ich mal nicht so sicher. Es hat schon einen gewissen Vorteil 
wenn man eine Menge Mechanik uebernehmen kann.

Ich wuerde aber keine Schrittmotore einbauen. Die passen von ihrer 
Bauform normalerweise nicht dahin wo man vorher normale Motore verwendet 
hat. Ausserdem haben sie sonst auch nur Nachteile. Sie haben nur den 
Vorteil einfacher ansteuerbar zu sein.
Und bevor man etwas anderes einbaut erstmal rechnen. Wieviel Kraft hat 
der Motor, wieviel braucht man. Was ist seine Drehzahl. Spaetestens wenn 
man das vorhandene Getriebe am Motor aus konstruktionsgruenden drin 
lassen muss dann wird man wohl feststellen das der Roboter sich mit 
Schrittmotor im Zeitlupentempo bewegt.

Es wird wirklich viel einfacher sein an die vorhandene Mechanik eine 
Rueckmeldung fuer die Position anzubringen. Zwei Moeglichkeiten habe ich 
ja schon genannt. Eine dritte waere es ein Poti anzubringen. (gerne auch 
10Gang :-)

Ausserdem bringen sortierte Legosteine die Menschheit nicht weiter. Aber 
wenn man an so einem Arm einen Encoder angebracht hat und das ganze 
Regelungstechnisch im Griff hat, dann hat man selber was gelernt.

Olaf

p.s Wenn man sich so einen Arm an seinen Schreibtisch schraubt damit er 
einen den Tee umruehrt, ist man dann ein Nerd? Oder gar schon Otaku?

Autor: Axel Düsendieb (axel_jeromin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach mal den Wertstoffhof Deines Vertrauens aufsuchen und von dort 
5-10 alte Drucker und 5 Scanner mitnehmen und ausschlachten.

Die kleinen Schrittmotore haben nicht so viel Drehmoment, dass man sie 
nicht einfach in die mech. Endlage fahren kann. Dann hat man eine 
definierte Ausgangsposition.

Schrittmotore brauchen dann natürlich den passenden Treiber, der L293D 
ist das nur bedingt geeignet. Kommt darauf an, welch Material recycelt 
werden kann.



Axel

Autor: Schlauberger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan B. schrieb:
> Der Roboterarm hat 5 Gleichstrommotren.

Das bedeutet 5 Freiheitsgrade, die Du ansteuern musst um in einem 3 
dimensionalen Raum einen beliebigen Punkt zu erreichen.
Und das noch über (Stereo!?) Kameras per Echtzeit-Videoverarbeitung 
regeln!
Allein dafür schon viel Spass beim Rechnen und Programmieren!
Bevor Du weiter über Details nachdenkst solltest Du darüber nachdenken 
was das an Aufwand und notwendige Kenntnisse bedeutet.

Dafür könnte man locker einige Doktor und zig Masterarbeiten vergeben.

Sehr sportlich

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Einfach mal den Wertstoffhof Deines Vertrauens aufsuchen und von dort
> 5-10 alte Drucker und 5 Scanner mitnehmen und ausschlachten.

Das Problem bei dieser Verfahrensweise ist das man dann schnell eine 
Fraese und eine Drehbank haben will um Teile anzupassen. Wenn man das 
nicht will und kann dann ist Pollinrecycling schon eine gute Methode.

> Die kleinen Schrittmotore haben nicht so viel Drehmoment, dass man
> sie nicht einfach in die mech. Endlage fahren kann.

Drehmoment ist da sowieso kein Problem. Man kann schliesslich das 
Drehmoment der Motore in der Lehrfahrt beliebig reduzieren.

> Schrittmotore brauchen dann natürlich den passenden Treiber,
> der L293D ist das nur bedingt geeignet.

Der waere vielleicht sogar noch geeignet. Man muesste nur einen 
Stromregler davorpacken. Also L6506+L293E.


> Dafür könnte man locker einige Doktor und zig Masterarbeiten vergeben.

Ich sag doch theoretisch moeglich, nur praktisch schwierig. :-)

Olaf

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

habe mir noch Gedankten gemacht.
Mit Stereobildverarbeitung wäre es wahrscheinlich zu aufwendig. Gehen 
wir mal davon weg.

Also brauchen wir Rückmeldungen der Motoren über die Drehzahl um diese 
zu regeln und der Arme um die Position festzustellen.
Schließen wir optisch mal aus.

Dann könnte ich mir vorstellen, die Drehzahl über einen Hallsensor 
aufzunehmen, wobei ich mir da noch anschauen müsste wo ich diesen 
unterbringe und was die Sensoren triggert. (Zähnräder sind aus 
Kunststoff)

Die Lage könnte man über Potis feststellen.
Oder auch über die Hallsensoren berechnen.
Endlage =0 (einen Taster für die Endlage) und dann die Impulse zählen.

Das würde das ganze Projekt doch deutlich vereinfachen?
Die Bildverarbeitung müsste in diesem Fall nur noch die xy-Koordinaten 
des Objekts erkennen und dem Arm sagen: Bewege dich dorthin.
Dann hat man einen Ist-Soll-Abgleich.

Autor: Bert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Boah, ich bin noch voll fertig von der Pearl Homepage....

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan schrieb:
> Also brauchen wir Rückmeldungen der Motoren über die Drehzahl um diese
> zu regeln und der Arme um die Position festzustellen.

Falscher Denkansatz.
Du willst nicht die Drehzahl des Motors regeln, sondern die Armposition. 
Also sollte natürlich auch die Armposition erfasst werden und nicht die 
Motordrehzahl.

Programmmäßig kann mans dann so umsetzen, dass der Motor fährt, bis die 
gewünschte Armposition erreicht ist.

Dafür lassen sich am besten Potis in die Drehgelenke einbauen, dann hast 
du Absolutinformationen über die Position.
:-)

Autor: Axel Düsendieb (axel_jeromin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder halt wie schon oben geschrieben, Schrittmotore einsetzen und die 
lange genung in die mech. Endlage fahren bis diese sicher angefahren 
wurde und von dort die Schritte zählen.

Dann braucht man keine zusätzliche Mechanik an den Arm bauen. Da dieser 
recht klein ist, wird das schon schwierig. Z.B. eine geeignete 
Einbauposition für das Poti am Zangengreifer zu finden.

Des Weiteren müssen dann Analogwerte verarbeitet werden, birgt für einen 
Anfänger auch einige Probleme da einen verläßlichen Wert heraus zu 
bekommen.


Axel

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Bildverarbeitung müsste in diesem Fall nur noch die xy-Koordinaten
> des Objekts erkennen und dem Arm sagen: Bewege dich dorthin.

Du denkst falsch! Halte doch einfach mal ein Auge zu und versuch dann 
etwas kompliziertes mit deinen Haenden zu machen. Geht das? Doch eher 
schlecht oder? Und dabei spielt dein Gehirn unfaehr. Es weiss naemlich 
wie gross die Dinge sind die du siehst weil du sie kennst. Dein Computer 
ist nicht so schlau. Vergiss die Kamera!

> Dann könnte ich mir vorstellen, die Drehzahl über einen Hallsensor
> aufzunehmen, wobei ich mir da noch anschauen müsste wo ich diesen
> unterbringe und was die Sensoren triggert. (Zähnräder sind aus
> Kunststoff)

Ob du Hallsensoren oder Lichtschranken verwendest ist erstmal egal. Oder 
besser gesagt es haengt von deinen mechanischen Moeglichkeiten und 
Platzverhaeltnissen ab.

Als erstes ueberlege dir mal welche Wiederholgenauigkeit benoetigt dein 
Arm. Reichen 5mm? 1mm? 0.1? Es bringt aber nichts mehr zu verlangen als 
deine Mechanik kann. Wenn du das festgelegt hast dann rechnest du mal 
zurueck wievel Grad das an einem Gelenk sind, wieviele Unterteilungen du 
am Ausgang oder Eingang eines Getriebes brauchst. Danach kannst du dir 
Gedanken machen wo und wie du einen Encoder anbringen kannst.

Dann noch etwas grundsaetzliches. Eigentlich koennte dir die Drehzahl 
egal sein, du willst letztlich nur die Position regeln. Trotzdem ist es 
aber eine gute Idee die Drehzahl auch zu regeln weil man so den Regler 
einfacher hinbekommt. Ausserdem kannst du so sicherstellen das die 
Maximalgeschwindigkeit am Encoder unter deiner Abtastfrequenz bleibt.
Und es ist doch auch schoen wenn man die Geschwindigkeit einstellen 
kann.

Die Aufnahme der Position ist total einfach. Deutlich schwieriger ist es 
sie zu regeln. Das nur mal als Anmerkung. .-)

Eine andere Moeglichkeit waere es Potis anzubringen. Die koenntest du 
dann mit einem AD-Wandler auslesen und genauso regeln. Einfaecher waere 
es vermutlich einen analogen Regler mit Potis aufzubauen. Also so wie in 
Servos. Vielleicht kann man sogar die Elektronik eines Servos 
ausschlachten und an den Motor klemmen. Die Genauigkeit davon wird zwar 
nicht so hoch sein wie bei der Encoderloesung, aber vermutlich einem 
Pollinprodukt angemessen.

Die Schrittmotorloesung ist von der Ansteuerung her am einfachsten. 
Dafuer von der Mechanik am schwierigsten. Es haengt dann halt sehr davon 
ab was du fuer Motore bekommst und wie sie ans Getriebe passen.

Olaf

Autor: Blackbird (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
5 Zahnräder (für die Poti-Achsen), 5 Potis (5-10kOhm), 5 Haltewinkel für 
die Potis, 10 Schrauben und 5 mal Servoelektronik (selber bauen oder 
kaufen), etwas feilen und bohren - fertig ist die mechanische Seite der 
Steuerung.

Blackbird

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.