PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schrittmotor nicht linear



narrow87
04.11.2006, 21: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