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.).
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.).
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
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)
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.
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.
ich würde solche Dinger kaufen (hab sie auch selber) und nebeneinander montieren:
https://www.ebay.de/sch/i.html?_odkw...98%29&_sacat=0
Ah, das ist doch mal akzeptabel... also 3St.davon Skizze habe ich mal schon angefangen:
Lieferung dauert.. melde mich danach
Geändert von crusico (26.09.2018 um 09:43 Uhr)
Zwar weiß ich viel, doch möcht' ich alles wissen.
Lesezeichen