Hallo
OK. Ich fange mal an.
Hast du für die Getriebeversion schon ein Protokoll vorgesehen ? Einen Großteil kann man ja aus der RS232 Version übernehmen. Oder hast noch was spezielles im Hinterkopf ?
MFG
Dieter
Hallo
OK. Ich fange mal an.
Hast du für die Getriebeversion schon ein Protokoll vorgesehen ? Einen Großteil kann man ja aus der RS232 Version übernehmen. Oder hast noch was spezielles im Hinterkopf ?
MFG
Dieter
Hi,
ich hab da noch nicht begonnen, du kannst das machen wie du es für sinnvoll hälst.
Ich denke es wäre gut wenn man halt alle 4 Motoren völlig unabgängig steuern kann, vermutlich mußt du da áls Motorparameter vier BIT´s nehmen. So könnte man einzelne Motoren in bestimmte rKombination ein und ausschalten usw.
Abe rvielleicht hast du ja auch bessere Idee.
Strombegrenzung würde ich noch einbauen, also per Timer den Motorstom messen und eventuell PWM im Hintergrund regeln.
Ansonsten denke ich an das übliche, Befehle für:
START
Richtung
STOP (Spannung so anlegen das Motor bremst)
AUS (Motor aus)
Wenn Du willst und genug platz hast, kannst du ja noch versuchen Befehle zu integrieren wie:
Drehe Links
Drehe Rechts
Man könnte auch zwei Motoren im Parallelmodus betreiben.
Dir fällt sicher genug ein. Vielleicht solltest du Befehle vorher hier auflisten wenn du soweit bist, dann können andere auch ihren Senf zu geben und auch Stupsi was zu sagen
Wäre ja gut wenn es letzlich irgendwann etwas einheitlich wird
Hallo Frank
Besteht die Möglichkeit, das du mir die Tabelle mit den RS232 Befehlen, Seite 5 bis 7 der Doku , als Datei zukommen lässt ?
Dann kann ich die Befehle darin direkt eintragen und brauche die Tabelle nicht nochmal zu machen.
Spart Dir ja auch Arbeit später in der Doku.![]()
MFG
Dieter
Ja ich bin ja nicht soPoste es nachher
So hier die gewünschte WORD Datei mit den RS232 befehlen für die Schrittmotorsteuerung RN-MOTOR ST RS232
Bild hier
Allerdings für die Getriebemotor Ansteuerung wird dir das wenig helfen, da sind die Befehle doch etwas anders.
Du mußt dich auch nicht an die Befehle halten, du kannst durchaus ein neues Konzept entwickeln wenn du es für sinnvoller hälst.
Hier nochmal eine schnelle Übersicht der Schrittmotorbefehle:
Vor längerem hatte ich mir schon mal ein paar erste Getriebemotorbefehle ausgedacht, kam aber dann noch nicht dazu mehr zu machen. Vielleicht hilft es dir als Anregung:'#rm i x y Motor maximaler Strom x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren Y = (Milliampere / 10)
' Beispiel : Y = 150 Bedeutet 1,5A Oder Y = 20 Bedeutet 200ma
'#rm v y Referenzspannung des Controllers (normal 2.5 und muss nicht geändert werden)
' Beispiel: y=241 bedeutet 2,41 V
'#rm s x Motor stopp (Haltespannung bleibt ein) x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren Stopp
'#rm d x y Motor Drehrichtung x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren y=0=Links rum y=1 rechts rum
'#rm z x yl yh Motor genau y Schritte bewegen x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren
'y wird in High und Low Byte übertragen
'#rm e x Motor endlose Schritte bewegen bis Stop Befehl kommt x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren
'#rm p x Übermittelt wieviel Schritte der Motor seit letzten Stop/Aus oder Drehrichtungwechel gefahren ist x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren
'#rm m x Motor einen einzigen Schritt bewegen x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren
'#rm g x y Motor Schrittgeschwindigkeit x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren Y = 1 bis 255
'#rm a x Motor ganz ausschalten x=0 Linker Motor x=1 Rechte Motor x2= Alle Motoren Stopp
'#rm o x Motor ein und init x=0 Linker Motor x=1 Rechte Motor
'#rm t Konfiguration und Testwerte werden über RS232 ausgegeben
'Befehle im Getriebemodusbetrieb
'#rm v y Referenzspannung des Controllers (normal 2.5 und muss nicht geändert werden)
' Beispiel: y=241 bedeutet 2,41 V
'#rm o x Motor ein und init X=Binärzahl, die unteren 4 Bits bestimmen die Motoren
' X = &B0001 Linker Motor einschalten
' X = &B0010 Rechten Motor einschalten
' X = &B0100 Dritten Motor (Links B) einschalten
' X = &B1000 Vierten Motor (Rechts B) einschalten
' auch Kombinationen sind möglich, Beispiel:
' X = &B1111 Alle Motoren einschalten
' X = &B1100 Motor 3 und 4 einschalten
' ... usw.
'#rm a x Motor ausschalten X=Binärzahl, die unteren 4 Bits bestimmen die Motoren
' X = &B0001 Linker Motor ausschalten
' X = &B0010 Rechten Motor ausschalten
' X = &B0100 Dritten Motor (Links B) ausschalten
' X = &B1000 Vierten Motor (Rechts B) ausschalten
' auch Kombinationen sind möglich, Beispiel:
' X = &B1111 Alle Motoren ausschalten
' X = &B1100 Motor 3 und 4 ausschalten
' ... usw.
'#rm g x y Motor Geschwindigkeit X=Binärzahl, die unteren 4 Bits bestimmen die Motoren
' X = &B0001 Linker Motor
' X = &B0010 Rechten Motor
' X = &B0100 Dritten Motor (Links B)
' X = &B1000 Vierten Motor (Rechts B)
' auch Kombinationen sind möglich, Beispiel:
' X = &B1111 Alle Motoren
' X = &B1100 Motor 3 und 4
' ... usw.
' Y = Geschwindigkeit 1 bis 255
'#rm d x y Motor Drehrichtung X=Binärzahl, die unteren 4 Bits bestimmen die Motoren
' X = &B0001 Linker Motor
' X = &B0010 Rechten Motor
' X = &B0100 Dritten Motor (Links B)
' X = &B1000 Vierten Motor (Rechts B)
' auch Kombinationen sind möglich, Beispiel:
' X = &B1111 Alle Motoren
' X = &B1100 Motor 3 und 4
' ... usw.
' Y =Drehrichtung 0 = Links herum Y=1 Rechts herum
'#rm r d Roboter auf der Stelle drehen Y =Drehrichtung 0 = Links herum Y=1 Rechts herum
' Dieser Befehl erleichtert das drehen von Robotern. Die Richtung des
' linken und rechten Motors wird automatisch gegensätzlich gewählt um die gewünschte
' Drehung zu erreichen
Hallo Frank
Danke für die Datei, macht die Sache doch viel einfacher.![]()
Mir wäre es lieb, wenn wir beim Parameter 1 bei 2 Bits bleiben könnten, da ich
im Programm den Befehlscode mit dem 1. Parameter verknüpfe und in einem Byte speichere. Ich erreiche damit eine leichtere und schnellere Auswertung über select case.
Wir hätten dann für den Befehlscode die Zeichen "A bis Z " und "a bis z" zur Verfügung, plus halt die 4 Möglichkeiten von Parameter 1.
Hier mal mein erster Vorschlag zur Ansteuerung.
MFG
Dieter
Hi
Die Befehle J und Y überscheiden sich!
Und Befehl zum stoppen und zum ausschalten braucht man doch bei Getriebemotoren nicht. Höchstens stoppen mit Bremse und stoppen ohne Bremse.
Zudem unterstützt du auf diese Weise keine 4 Motoren sondern leider nur 2 x 2 parallel. Das Board könnte aber auch vier Motoren völlig unabhängig voneinander steuern, wäre schade wenn man das nicht nutzen kann.
Daher die meine Idee mit den Bits - auch nur ein Byte. Es wäre universeller, denn man könnte es leicht auch auf 8 Motoren erweitern.
Ab besten ist immer wenn erst man mit Umsetzung anfängt, da merkt man schnell wo es noch harkt. Ich würde nicht so stark an meiner Schrittmotor Syntax festhalten - die ist zwar für Schrittmotoren gut aber weniger für Getriebemotoren.
Gruß Frank
Hallo Frank
kann ich nicht erkennenDie Befehle J und Y überscheiden sich!
War auch so gedacht, etwas unglücklich rüber gekommenUnd Befehl zum stoppen und zum ausschalten braucht man doch bei Getriebemotoren nicht. Höchstens stoppen mit Bremse und stoppen ohne Bremse.
Sehe ich anderes. Das Board kann keine 4 Motoren völlig unabhängig steuern, da ich nur 2 PWM Kanäle habe. Motor links und Motor 3 laufen immer mit der selben Geschwindigkeit. Auch kann ich nicht Motor links ohne Bremse stoppen und Motor 3 weiterlaufen lassen.Zudem unterstützt du auf diese Weise keine 4 Motoren sondern leider nur 2 x 2 parallel. Das Board könnte aber auch vier Motoren völlig unabhängig voneinander steuern, wäre schade wenn man das nicht nutzen kann.
Oder übersehe ich da was grundlegendes. Du schaltest doch mit JP1 die PWM auf Enable A und Enable B ?
MFG
Dieter
Hi Dieter,
doch doch, es ginge auch mit 4 Motoren - alles eine Sache der Software. Man kann Jumper JP2 und JP1 so umstellen, das beide Enable Leitungen jedes Motors auf unterschiedliche Ports gehen.
Bei Motor Rechts wäre das dann Beispielsweise Port PB2 PWM und Port PB4 (hier werden die Programmierports mit benutzt).
Das ist zwar kein PWM Port, aber man könnte den Motor dann unabhängig steuern, nur nicht die Geschwindigkeit regeln.
Alternativ könnte man das PWM Signal aus softwaremäßig mit Interrupt generieren, dann könnte man auch bei alen 4 Motoren geschwindigkeit unterschiedlich wählen. Ich hab mir da schon wa sbei der Belegung bei gedacht
Aber ich halt mich jetzt mal hier in dem Thread zurück - das Open Source Projekt ist Eurer Projekt wurde von Euch fwallenwein, darkscout, Dino Dieter ins Leben gerufen - also könnt ihr es auch nach euren Vorstellungen umsetzen und Euch auch etwas mit Programmierproblemen plagen
Gruß Frank
Hallo Frank
Ashe über mein Haupt.
Du hast natürlich Recht, das alle 4 Motoren unabhängig gesteuert werden können. Habe die Funktion von JP1 und JP2 nicht richtig gedeutet.
Werde jetzt mal das Protokoll über arbeiten und die Software ändern auf 4 PWM Kanäle. Wenn die Hardware das kann, sollte die Software das auch unterstützen.![]()
In diesem Sinne
MFG
Dieter
Lesezeichen