Wo hast du denn Probleme.
Im Grunde müsste dein Controllerboard/PC doch nur in deinem gewünschten Zeitintervall den Befehl an RN-Motor senden "200 Schritte bewegen".
Sollte kein Problem sein
Hallo,
ich habe ein Problem mit meiner RN-Motor I2C. Ich will dass immer nach einer bestimmten Zeit 100 Schritte gemacht werden. Funktioniert das irgendwie nie. Hat jemand so was schon mal gemacht und hat ein Beispielprogramm dazu ?
Vielen Dank
Wo hast du denn Probleme.
Im Grunde müsste dein Controllerboard/PC doch nur in deinem gewünschten Zeitintervall den Befehl an RN-Motor senden "200 Schritte bewegen".
Sollte kein Problem sein
Hallo,
nein eigentlich dachte ich das auch. Ich verwende diesen Befehl:
I2cdaten(1) = 10
I2cdaten(2) = 5
I2cdaten(3) = 0
I2cdaten(4) = 100
I2csend rnm1adr , I2cdaten(1) , 5
Wenn das Program startet dreht er sich um 100 Schritte weiter. Danach sende ich keine weiteren Befehle über den I2C bis der Timer den Interrupt auslöst, in dem dann wieder der selbe Code wie ober steht, nur das diesmal Nichts passiert. Muss ich vorher irgendetwas anderes senden, bis ich wieder 100 Schritte machen kann
Sowiet ich es im Kopf habe, muss man eigentlich keinen weiteren Befehl geben. Aber du kannst ja mal Probeweise einen Motor-Stop Befehl zuvor senden (auch wenn er schon steht).
Dein Timer darf natürlich nicht zu kurz angelegt sein, die 200 Schritte müssen bereits ausgeführt worden sein.
Ja der Timer braucht mindestens 1 minute bis er auslöst. Welche Befehle muss ich denn außer dem von mir geschrieben zuvor noch senden?
Wie gesagt, ich habs momentan auch nicht genau im Kopf. Probier einfach mal den Motorstop Befehl (Befehlscode 3 siehe Doku)
Was hast du denn für Firmware Version (immer bei Fragen angeben)?
Also ich habe die RN-Control 1.4 und die RN-Motor 1.2. Allerdings kommt mir die ganze Sache langsam etwas komisch vor. Wenn ich folgenden Code verwende passiert nach anlegen der Spannung manchaml gar nichts, manchmal zieht der Motor an aber dreh sich nicht und in seltenen Fällen dreht er sich. Ist das nicht etwas verwunderlich ?
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Config Scl = Portc.0
Config Sda = Portc.1
Dim I2cdaten(6) As Byte
I2cdaten(1) = 10
I2cdaten(2) = 10
I2cdaten(3) = 0
I2csend &H56 , I2cdaten(1) , 5
I2cdaten(1) = 10
I2cdaten(2) = 5
I2cdaten(3) = 0
I2cdaten(4) = 100
I2csend &H56 , I2cdaten(1) , 5
Do
Loop
End
Menn du RN-Motor gleichzeitig mit Spannung versorgst musst du am Anfang kurze Pause machen bis RN-Motor sich initialisiert hat.
Zudem fehlt bei die der Bascom I2cInit Befehl
Die Versionsnummern die du gennnat hast beziehen sich auf Hardware. Die Firmware Versionsnummer (der SOftware) wird nur über RS232 bei einem RESET ausgegeben. Kann mit Terminalprogramm somit angezeigt werden.
Gruß Frank
Sind das beim ersten senden nicht nur 4 Byte ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo, ok ja vielen Dank das mit den I2Cinit war natürlich richtig. Die RN-Motor Firmware Version ist 1.6c.
Ich hab das Programm jetzt umgeändert:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Wait 3
Config Scl = Portc.0
Config Sda = Portc.1
Dim I2cdaten(6) As Byte
I2cinit
I2cdaten(1) = 10
I2cdaten(2) = 10
I2cdaten(3) = 0
I2csend &H56 , I2cdaten(1) , 5
I2cdaten(1) = 10
I2cdaten(2) = 5
I2cdaten(3) = 0
I2cdaten(4) = 100
I2csend &H56 , I2cdaten(1) , 5
Do
Loop
End
In den 3 Sekunden müsste sich die RNM doch initialisiert haben. Jetzt Zieht der Motor immer an jedoch bewegt er sich immer noch nie.
Vielen Dank mal zwischendurch für deine Hilfe
Lesezeichen