Liste der Anhänge anzeigen (Anzahl: 3)
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:
Anhang 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.
Anhang 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:
Anhang 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).