PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schrittmotorprogrammierung mit Bascom



Gunnar.Wild
30.01.2008, 15:58
Hallo zusammen

ich will einen Schrittmotor mit Bascom programmieren und ihn mit dem AVR Board ansteuern. Hat jemand eine Idee bzw Beispielprogramm? Ich habe 2 Taster zur Verfügung und er sollte langsam hochlaufen und dann wieder langsamer werden. Dies soll er solange machen bis ich taste. Dann soll er stehen bleiben. Hab schon angefangen aber häng gerade bei der Zeit fest.

Schon mal schönen Dank für Eure Hilfe!

Gruß

Martin.
30.01.2008, 16:40
ich hab nen bipolaren Schrittmotor über L293D so angesteuert:


$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1600000


Dim A As Byte

Config Pina.0 = Input
Config Pina.2 = Input

Porta.0 = 1
Porta.2 = 1

Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output

Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1


A = 0

Do
If Pina.0 = 0 Then
Waitms 300
If A < 4 Then
A = A + 1
Else
A = 1
End If
End If

If Pina.2 = 0 Then
Waitms 300
If A > 1 Then
A = A - 1
Else
A = 4
End If
End If

If A = 1 Then
Gosub Macheschritt1
End If
If A = 2 Then
Gosub Macheschritt2
End If
If A = 3 Then
Gosub Macheschritt3
End If
If A = 4 Then
Gosub Macheschritt4
End If
Loop


Declare Sub Macheschritt1
Declare Sub Macheschritt2
Declare Sub Macheschritt3
Declare Sub Macheschritt4

Sub Macheschritt1
Portc.0 = 0
Portc.1 = 1
Portc.2 = 0
Portc.3 = 1
Waitms 20
End Sub

Sub Macheschritt2
Portc.0 = 0
Portc.1 = 1
Portc.2 = 1
Portc.3 = 0
Waitms 20
End Sub

Sub Macheschritt3
Portc.0 = 1
Portc.1 = 0
Portc.2 = 1
Portc.3 = 0
Waitms 20
End Sub

Sub Macheschritt4
Portc.0 = 1
Portc.1 = 0
Portc.2 = 0
Portc.3 = 1
Waitms 20 '
End Sub


End

Weis nicht ob die Verzögerungen notwenig sind. Ich glaub so könntest du auch das langsam Hochfahren lösen. Über zwei Taster hab ich ihn einen Schritt nach links bzw. rechts machen lassen.

Gunnar.Wild
30.01.2008, 16:58
Erst mal danke für die schnelle Hilfe.

Sieht schon sehr gut aus. Problem bei mir ist nur das die Drehzahl langsam steigert bis zu einem Endwert und danach soll er selbständig stoppen und wieder von alleine langsam hochfahren, bis ich einen Taster drücke.
Vieleicht fällt dir ja hierzu noch was ein.
Ich denk da irgendwie an einen Timerder ständig die Werte erhöht oder so. Oder eine Art Schieberegister der den Wert in kleinen Schritten erhöht.

Gruß \:D/

stefan_Z
30.01.2008, 23:10
FOR / NEXT Schleife?

Gunnar.Wild
31.01.2008, 22:58
for/next Schleife? wie soll ich die anwenden? Kannst du mir ein Beispiel schicken?

Gruß