- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 64

Thema: Hilfe zum bau eines Roboterarms

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.668
    Die drei L293D kannst Du auch am Arduino Uno betreiben. Wenn Du auf PWM verzichtest. Wie gesagt, das ist bei dem Arm ja nicht vorgesehen, dass der drehzahlgesteuert betrieben wird. Sondern nur mittels Motor An und Motor Aus, in die eine oder die andere Richtung. Zwei Leitungen für 5 Motoren = 10 Steuerleitungen. 12 I/O-Ports stehen am Uno zur Verfügung (ohne dem ser. Port). Du hast dann noch 2 I/O-Ports am Uno übrig. Und dazu noch 5 Analoge Eingänge zur Konvertierung Analoge Spannung in digitalen Wert. Die analogen Eingänge könnte man auch noch als Digitale missbrauchen. Denn wenn Du die ausliest, bekommst Du einen Wert, der der Höhe der angelegten Spannung entspricht. Ein digitales High-Signal am analogen Eingang entspricht dann einem Wert von größer 500. Ein digitales Low-Signal am Analogeingang entspricht dann einem Wert von kleiner 350. Meist sind die Unterschiede noch größer, so dass Low einem Wert von kleiner 10 entspricht und High einem Wert größer 800. Auf diese Weise hat man noch 5 Eingänge und 2 Ausgänge übrig. Ser. Schnittstelle sind nochmal 2 digitale I/O Ports.


    Willst Du später noch Sensoren dran machen, könntest Du einen Arduino Mega nehmen. Um alles auf einem Board zu steuern. Der Mega hat schon 54 digitale I/O-Ports.
    Hier sind mal alle Arduino Boards, Unterschiede beschrieben: https://www.generationrobots.com/blo...arduino-board/
    Du solltest auch mal ein Auge auf das Arduino Mega ADK werfen.

    Für 5 Motoren mit PWM-Steuerung sind das 15 Ports. Dann bleiben noch 39 übrig. Die Analogen kommen noch dazu.


    Wenn der Arm bewegt wird, brauchst Du maximal 4 Motoren davon. Der Fünfte ist für den Greifer (auf und zu).

    Zur Verdeutlichung

    Ich habe mal die Schaltung aufgebaut:

    Klicke auf die Grafik für eine größere Ansicht

Name:	hbruecke.jpg
Hits:	11
Größe:	148,1 KB
ID:	33648

    In der ganzen Wuselei habe ich die wichtigen 2 Kabel in Grau gesteckt.

    Grau: Das sind die beiden Datenkabel, mit denen der Arduino auf Pin#2 und Pin#7 den Motor steuert.
    Orange: 5V vom Arduino zum IC und 5V zum Motor, als "+".
    Rot: Kabel "+" vom Motor.
    Schwarz: Kabel "-" vom Motor.
    Braun: Aktivierungspin am IC, ist auf +5V angeschlossen, damit der Motor drehen kann.
    Grün: "+" Versorgungsspannung für Motor.
    Gelb: "-" Versorgungsspannung.
    Blau: Masse "Ground" vom Arduino zur Außenbeschaltung.

    Statt den Motor an 5V anzuschließen (links außen orangenes Kabel), kann man den auch an 9V oder 12V anschließen oder eine andere Spannung. Der Motor läuft übrigens nicht von alleine an, wenn das Board bootet, also an Spannung angeschlossen wird. Erst, wenn im Programm die Pins entsprechend auf LOW und HIGH gesetzt sind.

    für den Arduino das Programmbeispiel:
    Code:
    void setup() {
     pinMode(2, OUTPUT); // Port als Ausgang schalten
     pinMode(7, OUTPUT); // Port als Ausgang schalten
    }
    
    void loop() {
    
     //Motor steht
     digitalWrite(2, LOW);
     digitalWrite(7, LOW);
    
     //Pause 5 sec
     delay(5000);
    
     //Motor Richtung 1
     digitalWrite(2, HIGH);
     digitalWrite(7, LOW);
    
     //Pause 2 sec
     delay(2000);
    
     //Motor Richtung 2
     digitalWrite(2, LOW);
     digitalWrite(7, HIGH);
    
     //Pause 2 sec
     delay(2000);
    }

    Hier nochmal ein anderer Link: https://www.maxphi.com/dc-motor-inte...duino-tutorial


    Wechselnde Motorsteuerung

    Um zwei Motoren abwechseln zu steuern, kann man Enable-Pin#1, vom L293D über einen Inverter ansteuern und den Enable-Pin#9 direkt. So geht dann ein Ausgang, des Arduino, direkt auf den Pin#9 oder #1 und außerdem an ein Nicht-Gatter. Das Nicht-Gatter geht am Ausgang auf den zweiten Enable-Pin, des L293D. Je nachdem, ob der Ausgang am Arduino dann LOW oder HIGH geschaltet ist, ist dann entweder der eine Motor oder der andere Motor, von zweien, aktiviert. So kann man zwei Motoren an einem L293D mit 3 Leitungen vom Arduino abwechselnd steuern.

    Klicke auf die Grafik für eine größere Ansicht

Name:	IMG.jpg
Hits:	4
Größe:	6,7 KB
ID:	33649
    Wenn man nur einen Inverter benötigt, kann man den z.B. auch aus einem NPN-Transistor und mit zwei Widerständen aufbauen: Eingang über 1MOhm, an Basis Transistor; Kollektor Transistor über 10kOhm an +5V; Emitter Transistor an Ground; Ausgang ist dann direkt am Kollektor Transistor.

    Wenn man den Greifer und einen anderen Motor nur im Wechsel ansteuert (was kein Problem darstellt und im Endergebnis nicht störend ist), dann braucht man 3 Leitungen, um zwei Motoren abwechselnd zu betreiben (statt 4 Leitungen). Auf obige Weise kann man weitere Motoren abwechseln betreiben. Man kann 4 Motoren betreiben, wovon jeweils 2 aktiv sind und benötigt 6 Steuerleitungen. Man kann 6 Motoren betreiben, wovon 3 aktiv sind und benötigt 9 Steuerleitungen.

    Man könnte das bei zwei Motoren auf 3 Leitungen reduzieren, wenn jeweils nur ein Motor zur Zeit angesteuert wird.
    Hierzu mein Vorschlag:

    Klicke auf die Grafik für eine größere Ansicht

Name:	IMG.jpg
Hits:	4
Größe:	25,0 KB
ID:	33650

    Damit hätte man 3 Leitungen eingespart (3 Ausgänge am Arduino).


    Ausgangsvervielfachung mit 74HC595

    Da ich mich gerade mit dem Thema beschäftige, bin ich, nach sehr langer Zeit, wieder mal über Schieberegister gestolpert. Damit kann man mit 3 Steuerleitungen 8 digitale Ausgänge realisieren. Man kann, wenn man mehrere Schieberegister hintereinanderschaltet, auch mit 3 Leitungen dann 16, 24, 32, 40, 48, 56 oder noch mehr Ausgänge ansteuern. Dabei wird jeweils 1 Bit an das erste Schieberegister übergeben und mit einem Takt weiter geschoben. Nach entsprechender Taktzahl sind dann alle Bit im Register und werden mit einem weiteren Signal am 74HC595 an die Ausgänge des Schieberegisters übernommen (Latch-Schieberegister).
    Geändert von Moppi (19.09.2018 um 07:07 Uhr)

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    19.09.2008
    Ort
    Bielefeld
    Alter
    47
    Beiträge
    70
    @Moppi,

    vielen dank für die Tolle Erklärung!


    Ich werde das erst mal so testen und Bericht erstatten, erst mal drei L293d bestellen und wenn ich dabei bin, werde ich auch einen Mega dazu bestellen.
    Ich würde gern später das mit der Drehzahlsteuerung auch testen und dafür brauche ich ja einen Mega.


    Das mit den Schieberegiester lass ich erst mal. Erst den ersten step machen...


    Wenn das alles soweit klappt, wollte ich gern den Board mit einen bluetooth verdrahten und dann mit der App 'blynk' den Arm steuern. (sollte ja für klappen oder?)
    Zwar weiß ich viel, doch möcht' ich alles wissen.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.668
    Ich habe der Vollständigkeit halber verschiedene Wege aufgezeigt. Grundlagen braucht man immer. Richtig haarig wird es, wenn man RAM-Speicher ansteuert. Diese ICs haben meist 8-Daten-Pins, aber dafür umso mehr Adress-Pins (>16 Stück bspw.).

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.093
    Der L293 ist extrem alt. Ich würde modernere Alternativen suchen. Am Besten bei den Herstellern selbst (TI.com, Linear.com,...) oder bei großen Distributoren, auch wenn du nicht dort bestellst oder bestellen kannst (RS-Components, Distrelec, TME,.....).

    Ich arbeite gerade mit dem L6205 (ist aber auch nicht der neueste).

    MfG Hannes

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.668
    Habe oben nochmal eine Aktualisierung eingebracht: 2 Motoren mit 3 Arduino-Ausgängen.

    Hier in diesem Thema muss man auch noch mal auf ein anderes Problem hinweisen, dass Anfänger nicht bedenken, weil sie es nicht wissen können:

    Selbst mit GHz-Prozessoren ist Echtzeitsteuerung komplexer Anlagen, schwierig bis unmöglich. Sowohl Softwarearchitektur, als auch Hardwarearchitektur machen hier einen dicken Strich, mitten durch diese Ideenblase.
    Wenn ich also ein Board mit möglichst vielen I/O-Ports verwende, kann ich zwar viel anschließen, aber noch lange nicht zur selben Zeit steuern. Wenn nun zu 5 Motoren, die sich zur selben Zeit bewegen sollen und auch aktiv gesteuert werden müssen, noch Sensoren hinzukommen, deren Werte man erfassen und dann vielleicht auch noch kompliziert berechnen will, ist die Leistungsgrenze schnell erreicht. Für solche Aufgaben verwendet man eher aktive, statt passive Aktoren/externer Baugruppen. Das heißt nichts anderes, als dass man lieber mehrere kleinere Controller einsetzt, von denen jeder seine Arbeit übernimmt (dass dann ziemlich in Echtzeit) als nur einen einzigen Controller, der alles selber erledigen soll. Verschiedene Sensorbaugruppen sind bereits so aufgebaut, dass ein Sensor und ein IC zur ersten Datenverarbeitung auf der Platine untergebracht sind, die dann mit einem Master-Controller (Arduino Uno / Mega oder PIC etc.) kommunizieren. Servomotoren gehören auch zu den aktiven Aktoren, weil sie zum Beispiel einen bestimmten Winkel selbstständig anfahren können, sie besitzen schon die notwendige Steuerungselektronik dazu. Ein Master-Controller setzt dann nur einen Befehl an den Motor ab und steuert ihn nicht mehr aktiv selber. Deshalb lieber mal mit wenig anfangen, sich reinfuchsen - lernen und verstehen - und sich dann ein System, dass man benötigt, zusammenstellen. Das nächste Problem entsteht schon, wenn man Controller alleine betreiben will, ohne umfangreiche, externe Beschaltung. Einen Controller vom Arduino Uno kann man noch einfach so auf eine Lochrasterplatine setzen. Bei einem Controller vom Arduino Mega wird es schon schwieriger. Kosten spielen hier auch eine Rolle. Wenn man darüber nachdenkt, wie man Aufgaben auf mehrere Controller verteilt, um Dinge möglichst in Echtzeit zu erledigen, wird man schnell feststellen, dass es für ganz ausgefallene Fälle sinnvoll ist, mehr I/O-Ports zu haben, dass man aber für die meisten Fälle mit weit weniger auskommt. Oben habe ich ja schon ein wenig aufgezeigt, wie man so Dinge auch schaltungstechnisch optimieren kann. Solche Vorgänge nennt man auch Planung oder Entwicklung. Das ist ganz normal und gehört zur "täglichen Arbeit". Und ist, wie schon gesagt, auch notwendig, um Ziele plangerecht zu erreichen.

    Damit ist dieses Thema noch nicht abgearbeitet, aber soll hier erst mal von meiner Seite dazu genügen.


    Gruß, Moppi
    Geändert von Moppi (19.09.2018 um 07:57 Uhr)

  6. #6
    HaWe
    Gast
    es geht mit der Simultanausführung auch schon viel einfacher, mit einem Mega2560 z.B. oder einem Due, und mit Rotationsencoder-Motoren, die man eh braucht, wenn man keine Servos hat:

    PD-Steuerung (PID muss nicht unbedingt sein) pro Motor,
    globale flags für jeden Motor (true für Ziel noch anzusteuern, false für "idle")
    große while () Schleife für jede Simultanausführung:
    wenn Zielencoder nicht erreicht ist, neuen Regelwert eingeben,
    und wenn erreicht ist auf brake oder coast stellen und flag für diesen Motor auf "false" (Ziel erreicht).
    while() Schleife laufen lassen, bis alle flags für alle Motoren auf false sind (alle Ziele erreicht, keine Steuerung mehr).
    Das kann man in eine Funktion packen, der man alle Flags und Zielwerte übergibt, und die zurückmeldet (globaler Flag oder Rückgabewert), wenn alles fertig ist.

    Alternative, ebenfalls erfolgreich probiert:
    Multithreading mit Scheduler libs (gibt es von 2 verschiedenen Autoren (cmaglie oder mpatil) für ARM-MCUs und auch für beliebige ARMs+AVRs), pro Motor ein Scheduler thread,
    threads laufen leer wenn Motor flag auf false steht, ansonsten wie oben.

    Dass Motoren bei 2-Pin Steuerung unbeabsichtigt anlaufen passiert aber doch, allerdings nicht immer für alle Pins sondern nur für einige spezielle beim Bootvorgang, wenn die dann auf HIGH oder LOW gezogen werden.
    Daher 3-Pin-Steuerung bei L298/L293-Steuerlogik, und die gibt es auch für andere H-Brücken mit anderen Chips von anderen Herstellern.

    Aber wie gesagt: Servos sind viel einfacher, weil man
    a) keine Encoder auslesen muss und man
    b) keine H-Brücken braucht.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    19.09.2008
    Ort
    Bielefeld
    Alter
    47
    Beiträge
    70
    Guten Morgen,

    die L293d sind an Wochenende angekommen und ich habe mal ein Motor mit 2 Anschlüssen angeshlossen/getestet ohne Board.
    Funktioniert.
    Als nächstes werde ich das mal mit drei Anschlüsse (+PWM steuern) und Board mal testen...


    Wenn das klappt, dann Platine Entwerfern für die drei L293d.
    Gibt es schon fertige Platinen für drei L293d
    So was:
    https://www.ebay.de/itm/L293D-Motor-...d=361452902602
    für das Geld lohn es sich nicht selber eine zu entwickeln oder?(shit, ist nur 4 Motoren ausgelegt)


    oder "leere" Platinen, die man auf den Board verbauen kann=?

    Und wenn dieser Punkt auch geschafft ist, dann Bluetooth an Board verbauen.

    Vorteile von Servos verstehe ich, aber erst mal diesen Arm mit Gleichstrommotoren steuern. Danach kommen die Servos
    Geändert von crusico (24.09.2018 um 07:05 Uhr)
    Zwar weiß ich viel, doch möcht' ich alles wissen.

Ähnliche Themen

  1. FPV steuerung eines RC-Cars mit hilfe eines smartphones
    Von nonam im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 08.02.2013, 13:57
  2. Simulation eines einfachen Roboterarms-Matlab
    Von Hashi im Forum Mechanik
    Antworten: 0
    Letzter Beitrag: 20.12.2012, 12:58
  3. Hilfe beim Bau eines Spannungsreglers.
    Von mhc2004 im Forum Elektronik
    Antworten: 15
    Letzter Beitrag: 11.03.2007, 18:08
  4. hilfe für die wahl eines microprozessors
    Von ichbaehr im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 7
    Letzter Beitrag: 27.03.2006, 11:41
  5. Hilfe! Bau eines Feuerwehrroboters
    Von Rubbel im Forum Software, Algorithmen und KI
    Antworten: 13
    Letzter Beitrag: 19.01.2006, 14:45

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test