PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2 Schrittmotoren mit 2 Timer



Riley
22.02.2006, 00:09
Hallo,

bin gerade dabei eine Schrittmotorsteuerung zu fertigen und stehe vor einem Problem.
Würde gerne 2 Schrittmotoren ansteuern und die Geschwindigkeit mit einem Timer regeln.
Jeder Motor soll mit einem Timer geregelt werden.
Zur Simulation habe ich erstmal anstelle der Motoren einfach 4 Stk. Led`s verwendet.
Eine Led für links und eine für rechts und das mal 2.
Für 2 Led`s (Motor1) funktioniert die Regelung wunderbar.
Aber sobald ich die beiden anderen Led's (Motor2) dazuschalte entsteht folgendes Problem:
Die Led`s blinken nur noch minimal auf und wenn ich alle abschalte blinken sie immer noch minimal weiter.

Anbei ein Auszug aus meinem Programm.


Config Timer1 = Timer , Prescale = 64
On Timer1 Timer1_interrupt_motor1
Enable Timer1
Enable Interrupts
Start Timer1
Geschwindigkeit_motor1 = 55000
Timer1 = Geschwindigkeit_motor1


Config Timer0 = Timer , Prescale = 1024
On Timer0 Timer0_interrupt_motor2
Enable Timer0
Enable Interrupts
Start Timer0
Geschwindigkeit_motor2 = 1
Timer0 = Geschwindigkeit_motor2

*************
Timer1_interrupt_motor1:

If Motor1_auf_aktiv = 1 Or Teleskop_auf_rechts_aktiv = 1 Then
Toggle Motor1_auf
End If
If Motor1_ab_aktiv = 1 Then
Toggle Motor1_ab
End If

If Taster_m1_schneller = 0 And Taster_m1_langsamer = 1 Then
Geschwindigkeit_neu_motor1 = Geschwindigkeit_motor1 + 100
Geschwindigkeit_motor1 = Geschwindigkeit_neu_motor1
Else
Geschwindigkeit_motor1 = Geschwindigkeit_motor1
End If
If Taster_m1_langsamer = 0 And Taster_m1_schneller = 1 Then
Geschwindigkeit_neu_motor1 = Geschwindigkeit_motor1 - 100
Geschwindigkeit_motor1 = Geschwindigkeit_neu_motor1
Else
Geschwindigkeit_motor1 = Geschwindigkeit_motor1
End If
Timer1 = Geschwindigkeit_motor1

Return


Timer0_interrupt_motor2:


If Motor2_links_aktiv = 1 Or Teleskop_auf_links_aktiv = 1 Then
Toggle Motor2_links
End If
If Motor2_rechts_aktiv = 1 Then
Toggle Motor2_rechts
End If

Timer0 = Geschwindigkeit_motor2

Return



Zuerst dachte ich, dass die IRQ zu lange dauert und sich die beiden Timer im Wege sind.
Habe aber die IRQ bis auf eine Zeile gekürzt und hatte noch immer das selbe Problem.
Will aber unbedingt mit den zwei Timern arbeiten da ich so die Geschwindigkeit wunderbar über Taster regeln kann.

MfG
Martin