Hallo, ich bin neu hier im Forum und hoffe hier finden sich nette Leute, die mir weiterhelfen können. =) Ich habe ein Model eines Roboterarmes (Velleman Roboterarm ksr10), der durch ein Arduino Board (Arduino Mega2560 Microcontroller ATmega2560 Board) angesteuert wird und ein festes Programm abläuft. Der Roboterarm hat vier Motoren und einen Greifer, deren Kontakte über SUB-D Stecker auf das Arduino Board gehen. Ich möchte nun aber mit dem Arduino jeden der vier Motoren und den Greifer in beide Drehrichtungen der Motoren einzeln ansteuern können und so jeden Motor in eine beliebige Position fahren. Die Software ist schon vorhanden. Ich habe nun das Problem, dass ich auf dem Arduino nicht genügend Ports für alle Drehrichtungen zur verfügung habe. Nun hatte ich mir gedacht, dass ich zwischen Arduino und Roboterarm eine Platine stecke, auf der Multiplexer und Demultiplexer gelötet sind um die I/O's zu minimieren. Leider kenne ich mich mit Multiplexern nicht so gut aus und weiß nicht welche Multiplexer ich dafür benutzen kann und wie ich den auf der Platine mit Spannung, Masse und natürlich den Ports beschalten muss. Anschließen würde ich die Platine ebenfalls mit SUB-D Steckern und einen Ausgang mit 5V Spannungsversorgung habe ich auch zu verfügung. Ich hoffe es findet sich Jemand nettes, der mir vielleicht weiterhelfen kann. =) Beste Grüße, Gimmelgrumm
Dennis H. schrieb: > Ich möchte nun aber mit dem Arduino jeden der vier Motoren und den > Greifer in beide Drehrichtungen der Motoren einzeln ansteuern können und > so jeden Motor in eine beliebige Position fahren. Das wird nicht ganz einfach. Ich habe mir kurz das Datenblatt angesehen und gefunden, dass da nichts ausser den Motoren und einer LED vorhanden ist, und diese Teile überdies alle einen gemeinsamen Rückleiter benutzen. Das bedeutet, dass du die Motoren je nach gewünschter Drehrichtung mit positiven und negativen Spannungen antreiben musst. Das bedeutet, abseits der mit dem Multiplexen verbundenen Probleme, einigen Aufwand bei der Stromversorgung, und dass du entsprechende Endstufen benötigst. Am schlimmsten aber ist es, dass weder Potis noch Endschalter zur Lageerkennung vorhanden zu sein scheinen. Wie soll ein Programm erkennen, was es tun muss um eine bestimmte Position zu erreichen, wenn es die aktuelle Position nicht kennt? Anstelle "jeden Motor in eine beliebige Position fahren" müsste da stehen "in eine undefinierte Position". Dennis H. schrieb: > Die Software ist schon > vorhanden. Was soll das sein? Wenn die Software nicht mehr leistet, als die händisch zu betätigenden Taster, kannst du sie auch vergessen. Nach meiner Einschätzung ist das Teil ein Spielzeug und für einen programmgesteuerten Einsatz völlig ungeeignet.
:
Bearbeitet durch User
Ich will jetzt nich schon wieder meckern, aber die Endlagenschalter werden in der Anleitung erwähnt. Sind sicher auch vorhanden, oder? StromTuner StromTuner
Hm, alle Motoren können in beide Richtungen fahren. Macht ja auch keinen Sinn, wenn nur eine Drehrichtung möglich wäre... Was genau willst du eigentlich erreichen? Geschwindigkeitssteuerung? Positionssteuerung? Ich habs nicht verstanden. Und wie kann eine Software fertig sein für eine noch nicht mal in der Planung befindliche Hardware?
Der TE hat ja anscheinend schon einige Funktionen auf den Arduino gelegt, ob das mit einer Relaisplatine gelöst wurde oder mit was auch sonst, wissen wir aber nicht. Es wäre also hilfreich, wenn man über das derzeitige Setup etwas mehr erfährt.
Ach jetzt verstehe ich bisschen was. Die Schaltung von Axel oben ist eigentlich das gesamte Original, gesteuert mit 5 Handumschaltern mit Mittelstellung. Aber der 2560 hat doch Ports fast ohne Ende??
H.Joachim S. schrieb: > Ach jetzt verstehe ich bisschen was. > Die Schaltung von Axel oben ist eigentlich das gesamte Original, > gesteuert mit 5 Handumschaltern mit Mittelstellung. > > Aber der 2560 hat doch Ports fast ohne Ende?? Das sind gar keine Endlagenschalter, sondern BEDIEN Knöppe? Ja - issesdenn - stimmt... StromTuner
Axel R. schrieb: > BEDIEN Knöppe? https://www.conrad.de/de/velleman-roboterarm-bausatz-ksr10-ausfuehrung-bausatzbaustein-bausatz-79655.html?gclid=CP_MjLikvNECFesW0wodvS0Ecg&insert_kz=VQ&hk=SEM&WT.srch=1&WT.mc_id=google_pla&s_kwcid=AL!222!3!171021064202!!!g!!&ef_id=WHdLMgAAAFjhO0VT:20170112092402:s So verstehe ich es zumindest. So primitiv habe ich vor 40 Jahren einen Kran gebaut. Aber der hatte immerhin Kreuzknüppel :-)
Hallo, Danke schon Mal an die ganzen Beiträge. So, nochmal zum Roboterarm: Ich kann bereits jeden Motor einzeln ansteuern. Alle Drehrichtungen liegen schon auf jeweils einem Pin eines subd Steckers. Ich habe also jede Drehrichtung jedes Motors auf einem Pin, insgesamt also 9 Pins, also einen 9poligen subd Stecker. Mit einem kleinen Draht kann ich die Spannung auf den jeweiligen Eingang legen und dann dreht der jeweilige Motor bis die Endlage kommt oder ich den Draht wegnehme, dann bleibt der Arm in der Position bis ich wieder einen Motor ansteuere oder den Schalter für die Grundstellung betätige. Ich will das jetzt aber über Software Schalter auf dem Arduino steuern ohne einen Draht zu benutzen. Da der Arduino noch anderes steuern soll, will ich dafür nicht zu viele Ports benutzen. Ich hoffe mein Anliegen ist dadurch klarer geworden. Beste Grüße und vielen Dank!
:
Bearbeitet durch User
Dann schau dir eine der üblichen Relaiskarten für den Arduino an: http://www.ebay.de/itm/8-Channel-Kanal-5V-Relais-Relay-Module-Modul-fur-Arduino-DSP-AVR-PIC-ARM-DE-Ship-/320912667367 Davon gibt es dutzende. Das mit den 230V Schaltspannung darf man nicht ernst nehmen, aber das brauchst du ja auch nicht. Eine solche Karte kann schon mal 4 Motoren in beide Richtungen drehen.
Da ich keine Lust habe, die Diskussion per PN fortzusetzen und damit andere auszuschliessen: So eine Relaiskarte wird vom Arduino gesteuert und hat dann 8 (Um-)schalter, die die bisherigen Taster ersetzen. Somit kann der Arduino dann z.B. mit einem
1 | PinMode(13,OUTPUT); // an Pin 13 ist auch eine LED |
2 | DigitalWrite(13,HIGH); |
ein Relais anziehen lassen und damit den Schalter schliessen. Um den Schalter wieder auszuschalten benutzt man
1 | DigitalWrite(13,LOW); |
Siehe https://www.arduino.cc/en/Reference/DigitalWrite
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.