RoboPro Motor Distance (Arduino Uno - I2C)
Verfasst: 11 Dez 2018, 22:11
Hallo...
Also ich steuere mit RoboPro einen Arduino Uno an (Mein Arduino TX-Light Projekt).
Das läuft auch ganz gut bis auf eine Sache:
Schnelles Zählen von Impulsen
Ich würde mal sagen 90% der ft Modelle laufen, aber mein Ziel ist es den alten Trainingsroboter mit den schwarzen Lichtschranken
am Arduino zum Laufen zu bringen. Die Anzahl der Striche pro Umdrehung ist viel zu groß.
Meine momentane Lösung ist es über ein Zähler IC den Zählerstand parallel auszulesen und über ein parallel-seriel IC das einzulesen.
Ich verliere damit keine Impule aber ein "intelegentes" Anfahren auf bestimmte Werte oder auf 0 ist so nicht möglich (oder nur sehr sehr sehr langsam).
Auch muss das Ganze ja 3 mal aufbebaut werden. Das ist jetzt nicht dass, was ich mir vorgestellt habe.
Jetzt ist die Frage ob man einen weiteren AVR nimmt z.B. einen Mega (Arduino Mega) mit drei Zähleingängen und den die Motoren steuern läßt.
Momentan ist es so das die Motorplatine (Adafruit Motor Shlied 2.0) über I2C angesteuert wird.
Muß nun der Mega als Slave sagen wir mal ein Stop Befehl erst an den Master (Uno) übergeben oder kann der Slave zum Slave daten senden?
Oder muss der Master (Uno) erst den I2C Bus freigeben und der Slave (Mega) auf Master umschalten und dann später wieder auf Slave?
Den Mega nur als Master zu nutzen geht so leider auch nicht. Die Kommunikation über USB alle 20 Millisekunden und die Verarbeitung führt zu einem "Verschlucken" von Impulsen, also man überfährt den Stoppunkt weil der Motortreiber in dieser Zeit nicht abgeschaltet werden kann.
Oder gibt es noch andere Ideen?
Gruß
fishfreind
Holger Howey
Also ich steuere mit RoboPro einen Arduino Uno an (Mein Arduino TX-Light Projekt).
Das läuft auch ganz gut bis auf eine Sache:
Schnelles Zählen von Impulsen
Ich würde mal sagen 90% der ft Modelle laufen, aber mein Ziel ist es den alten Trainingsroboter mit den schwarzen Lichtschranken
am Arduino zum Laufen zu bringen. Die Anzahl der Striche pro Umdrehung ist viel zu groß.
Meine momentane Lösung ist es über ein Zähler IC den Zählerstand parallel auszulesen und über ein parallel-seriel IC das einzulesen.
Ich verliere damit keine Impule aber ein "intelegentes" Anfahren auf bestimmte Werte oder auf 0 ist so nicht möglich (oder nur sehr sehr sehr langsam).
Auch muss das Ganze ja 3 mal aufbebaut werden. Das ist jetzt nicht dass, was ich mir vorgestellt habe.
Jetzt ist die Frage ob man einen weiteren AVR nimmt z.B. einen Mega (Arduino Mega) mit drei Zähleingängen und den die Motoren steuern läßt.
Momentan ist es so das die Motorplatine (Adafruit Motor Shlied 2.0) über I2C angesteuert wird.
Muß nun der Mega als Slave sagen wir mal ein Stop Befehl erst an den Master (Uno) übergeben oder kann der Slave zum Slave daten senden?
Oder muss der Master (Uno) erst den I2C Bus freigeben und der Slave (Mega) auf Master umschalten und dann später wieder auf Slave?
Den Mega nur als Master zu nutzen geht so leider auch nicht. Die Kommunikation über USB alle 20 Millisekunden und die Verarbeitung führt zu einem "Verschlucken" von Impulsen, also man überfährt den Stoppunkt weil der Motortreiber in dieser Zeit nicht abgeschaltet werden kann.
Oder gibt es noch andere Ideen?
Gruß
fishfreind
Holger Howey