Hier noch ein kleines Demo für RN-Control. Der Motor wird alle 4 Sekunden genau 100 Schritte weitergedreht
Code:'################################################### 'Kleines Demoprogramm mit 'RN-Control und Ansteuerungsboard RN-MOTOR über I2C 'Alle 4 Sekunden wird Motor 100 Schritte weiterbewegt ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'in der Anleitung zu RN-Motor 'Anleitung findet man unter http://www.Roboternetz.de im Download Bereich 'oder www.robotikhardware.de 'Weitere Beispiele sind im Roboternetz gerne willkommen! '############################################################## $regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 64 'Befehle im Schrittmotorbetrieb 'K ist eine Kennungsnummer die bei RN-Motor immer 10 ist, danach folgt Befehlscode und notwendige Parameter 'Es müssen immer 5 Bytes übertragen werden, auch wenn weniger Parameter ausreichen 'k 1 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 'k 2 y Referenzspannung des Controllers (normal 2.5 und muss nicht geändert werden) ' Beispiel: y=241 bedeutet 2,41 V 'k 3 x Motor stopp (Haltespannung bleibt ein) x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren Stopp 'k 4 x y Motor Drehrichtung x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren y=0=Links rum y=1 rechts rum 'k 5 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 'k 6 x Motor endlose Schritte bewegen bis Stop Befehl kommt x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren 'k 7 x Motor einen einzigen Schritt bewegen x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren 'k 8 x y Motor Schrittgeschwindigkeit x=0 Linker Motor x=1 Rechte Motor x2= Beide Motoren Y = 1 bis 255 'k 9 x Motor ganz ausschalten x=0 Linker Motor x=1 Rechte Motor x2= Alle Motoren Stopp 'k 10 x Motor ein und init x=0 Linker Motor x=1 Rechte Motor 'k 11 Konfiguration und Testwerte werden über RS232 ausgegeben 'k 12 Sleep Mode 'k 13 x Motor selektieren 'k 14 x x=0 Vollschrittmodus x=1 Halbschrittmodus 'k 15 99 99 x Slave ID zwischen Hex 50 und Hex 70 ändern (erst ab RN-Motor Firmware 1.1 möglich) Const Befehl_maxstrom = 1 Const Befehl_referenzspannung = 2 Const Befehl_stop = 3 Const Befehl_drehrichtung = 4 Const Befehl_schrittanzahl_drehen = 5 Const Befehl_endlos_drehen = 6 Const Befehl_einzigen_schritt = 7 Const Befehl_geschwindigkeit = 8 Const Befehl_ausschalten = 9 Const Befehl_einschalten = 10 Const Befehl_konfiguration_zeigen = 11 Const Befehl_sleep_modus = 12 Const Befehl_motor_selektieren = 13 Const Befehl_schrittmotormodus = 14 Const Motor_links = 0 Const Motor_rechts = 1 Const I2crnmotorslaveadr = &H56 'I2C SlaveAdresse von RN-Motor Erweiterung Const I2crnmotorsreadlaveadr = &H57 'I2C SlaveAdresse von RN-Motor Erweiterung 'Achtung, wenn das Motor-Board überhaupt nicht reagiert, dann könnte dieses eine andere Slave 'Adresse besitzen. Im Zweifel schließen Sie das Motorboard an die RS232 vom PC an und 'drücken Sie die RESET-Taste am Motorboard.Dann kann die Slave ID über ein 'Terminalprogramm angezeigt werden Dim I2cdaten(6) As Byte 'Array um Befehlsfolge auszunehmen $crystal = 16000000 'Quarzfrequenz $baud = 9600 Config Scl = Portc.0 'Ports fuer IIC-Bus Config Sda = Portc.1 Wait 3 'Kurz warten damit RN-Motor sich initialisieren kann I2cinit 'Motorstrom auf 200mA begrenzen I2cdaten(1) = 10 'Kennung muss bei RN-Motor immer 10 sein I2cdaten(2) = Befehl_maxstrom 'Befehlscode I2cdaten(3) = Motor_links '1 Parameter I2cdaten(4) = 200 / 10 '2 Parameter (hier Milliampere /10 in diesem Fall wird 200mA eingestellt) I2csend I2crnmotorslaveadr , I2cdaten(1) , 5 'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind) I2cstop 'Motor einschalten I2cdaten(1) = 10 'Kennung muss bei RN-Motor immer 10 sein I2cdaten(2) = Befehl_einschalten 'Befehlscode I2cdaten(3) = Motor_links '1 Parameter I2csend I2crnmotorslaveadr , I2cdaten(1) , 5 'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind) I2cstop 'Alle 4 Sekunden 100 Schritte Do I2cdaten(1) = 10 'Kennung muss bei RN-Motor immer 10 sein I2cdaten(2) = Befehl_schrittanzahl_drehen 'Befehlscode I2cdaten(3) = Motor_links '1 Parameter I2cdaten(4) = 100 I2csend I2crnmotorslaveadr , I2cdaten(1) , 5 'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind) Wait 4 Loop End









Lesezeichen