narrow87
04.11.2006, 22:14
Hallo zusammen.
Am Anfang soll erst mal gesagt sein das ich ein µC Neuling bin.
Ich habe folgendes Script zusammengebastelt, wobei ein Schrittmotor von einen Poti ( später Joystick ) gesteuert wird. Bei Mittenstellung steht der Schrittmotor. Je weiter man nach links oder rechts dreht - umso schneller wird der Schrittmotor. Der Richtungswechsel klapt perfekt nur die Geschwindigkeit ist nicht linear.
Was mache ich falsch und kann man das eventuell im Hintergrund laufen lassen, da später nochmal 3 Schrittmotoren dazu kommen und die Schritte gespeichert werden sollen.
Ich habe das RN-Control Board V.1.4 und den 12V Schrittmotor von robotikhardware.de
Declare Sub Motorrechts()
Declare Sub Motorlinks()
$regfile = "m32def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Adc = Single , Prescaler = Auto
Dim Taste As Byte
Dim Volt As Single
Dim Joy1x As Word 'Variablen für Positionen des Steuerknüppel
Dim Joy1y As Integer
Dim Focus As Integer
Dim Zoom As Integer
Dim Faktor As Integer
' Für die Motoren
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
1a Alias Portb.0 'Pin als Spule 1a benennen
1b Alias Portb.1 'Spule 1b
2a Alias Portc.6 'Spule 2a
2b Alias Portc.7 'Spule 2b
Portb.0 = 0 'Spule 1a definiert auf Null
Portb.1 = 0 'Spule 1b
Portc.6 = 0 'Spule 2a
Portc.7 = 0 'Spule 2b
Dim Zeit As Integer
Zeit = 1 'Zeit zwischen den einzelnen Schritten (kleiner=schneller)
I = 0
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Print
Print "**** RN-CONTROL 1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
Print
Portd.4 = 1 'Motortreiber Spule 1 Enable
Portd.5 = 1 'Motortreiber Spule 2 Enable
Do
Start Adc
Joy1y = Getadc(0)
Joy1y = Joy1y - 511
Select Case Joy1y
Case -10 To 10
JMP Ende
Case Else
Joy1y = Joy1y - 0
BRMI Links
JMP Rechts
End Select
Links:
Joy1y = Joy1y / 51
Joy1y = Joy1y * -1
Zeit = 11 - Joy1y
Motorlinks
JMP Ende
Rechts:
Joy1y = Joy1y / 51
Zeit = 11 - Joy1y
Motorrechts
JMP Ende
Ende:
Loop
End
Sub Motorrechts()
1a = 1 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 1
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 0 : 2b = 0 'Schritt 2
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 3
Waitms Zeit
1a = 0 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 4
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 0 : 2b = 1 'Schritt 5
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 0 : 2b = 0 'Schritt 6
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 1 : 2b = 0 'Schritt 7
Waitms Zeit
1a = 0 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 8
Waitms Zeit
End Sub
Sub Motorlinks()
1a = 0 : 1b = 1 : 2a = 1 : 2b = 0 'Schritt 1
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 0 : 2b = 0 'Schritt 2
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 0 : 2b = 1 'Schritt 3
Waitms Zeit
1a = 0 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 4
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 5
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 0 : 2b = 0 'Schritt 6
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 7
Waitms Zeit
1a = 0 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 8
Waitms Zeit
End Sub
Am Anfang soll erst mal gesagt sein das ich ein µC Neuling bin.
Ich habe folgendes Script zusammengebastelt, wobei ein Schrittmotor von einen Poti ( später Joystick ) gesteuert wird. Bei Mittenstellung steht der Schrittmotor. Je weiter man nach links oder rechts dreht - umso schneller wird der Schrittmotor. Der Richtungswechsel klapt perfekt nur die Geschwindigkeit ist nicht linear.
Was mache ich falsch und kann man das eventuell im Hintergrund laufen lassen, da später nochmal 3 Schrittmotoren dazu kommen und die Schritte gespeichert werden sollen.
Ich habe das RN-Control Board V.1.4 und den 12V Schrittmotor von robotikhardware.de
Declare Sub Motorrechts()
Declare Sub Motorlinks()
$regfile = "m32def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Adc = Single , Prescaler = Auto
Dim Taste As Byte
Dim Volt As Single
Dim Joy1x As Word 'Variablen für Positionen des Steuerknüppel
Dim Joy1y As Integer
Dim Focus As Integer
Dim Zoom As Integer
Dim Faktor As Integer
' Für die Motoren
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
1a Alias Portb.0 'Pin als Spule 1a benennen
1b Alias Portb.1 'Spule 1b
2a Alias Portc.6 'Spule 2a
2b Alias Portc.7 'Spule 2b
Portb.0 = 0 'Spule 1a definiert auf Null
Portb.1 = 0 'Spule 1b
Portc.6 = 0 'Spule 2a
Portc.7 = 0 'Spule 2b
Dim Zeit As Integer
Zeit = 1 'Zeit zwischen den einzelnen Schritten (kleiner=schneller)
I = 0
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Print "**** RN-CONTROL 1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
Portd.4 = 1 'Motortreiber Spule 1 Enable
Portd.5 = 1 'Motortreiber Spule 2 Enable
Do
Start Adc
Joy1y = Getadc(0)
Joy1y = Joy1y - 511
Select Case Joy1y
Case -10 To 10
JMP Ende
Case Else
Joy1y = Joy1y - 0
BRMI Links
JMP Rechts
End Select
Links:
Joy1y = Joy1y / 51
Joy1y = Joy1y * -1
Zeit = 11 - Joy1y
Motorlinks
JMP Ende
Rechts:
Joy1y = Joy1y / 51
Zeit = 11 - Joy1y
Motorrechts
JMP Ende
Ende:
Loop
End
Sub Motorrechts()
1a = 1 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 1
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 0 : 2b = 0 'Schritt 2
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 3
Waitms Zeit
1a = 0 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 4
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 0 : 2b = 1 'Schritt 5
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 0 : 2b = 0 'Schritt 6
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 1 : 2b = 0 'Schritt 7
Waitms Zeit
1a = 0 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 8
Waitms Zeit
End Sub
Sub Motorlinks()
1a = 0 : 1b = 1 : 2a = 1 : 2b = 0 'Schritt 1
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 0 : 2b = 0 'Schritt 2
Waitms Zeit
1a = 0 : 1b = 1 : 2a = 0 : 2b = 1 'Schritt 3
Waitms Zeit
1a = 0 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 4
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 0 : 2b = 1 'Schritt 5
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 0 : 2b = 0 'Schritt 6
Waitms Zeit
1a = 1 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 7
Waitms Zeit
1a = 0 : 1b = 0 : 2a = 1 : 2b = 0 'Schritt 8
Waitms Zeit
End Sub