Also Bammel hatte Recht, da geht auch etwas mehr, aber immer noch keine 180°
Damit wir das Programm zur hand haben, poste ich es mal gleich hier rein.
Mein Servo ist - Servo(1)
Wenn ich die min/max Werte im Kommentar verwende komme ich auf 90°
gehe ich aber drunter oder drüber, dreht sich der Servo weiter.
Da habe ich die werte zwischen 61200-63900 eingestellt und dann lassen sich mehr als 90° einstellen (schätzungsweise ca. 140°)
Und jetzt bin ich irgendwie verzweifelt 
Mein (vorläufiger) Eindruck ist, dass der Stellbereich von standard Digitalservos i. d. R. kleiner ist als der von entsprechenden analogen.
Es ist ein Analogservo
Code:
$regfile "m8def.dat"
$baud = 19200
$crystal = 16000000
$framesize = 64
$swstack = 64
$hwstack = 64
Config Timer1 = Timer , Prescale = 8 'timer für Servos
Enable Timer1
Timer1 = 62535
Config Portb = Output
Portb.0 = 0 'hier hängt servo1
Portb.1 = 0 'hier hängt servo2
Portb.2 = 0 'hier hängt servo3
Portb.3 = 0 'hier hängt servo4
On Timer1 Servoirq 'servo
Enable Interrupts
Dim Kanal As Byte
Dim Servo(4) As Word 'min: 61535, mitte 62535, max 63535 = 2000 schritte
Do
Servo(1) = 61200 'Mitte
Servo(2) = 62535 'Mitte
Servo(3) = 62535 'Mitte
Servo(4) = 62535 'Mitte
Loop
Servoirq:
If Kanal = 0 Then
If Portb.0 = 0 Then 'wenn port low
Timer1 = Servo(1) 'dann timer auf entsprechende verzögerung
Portb.0 = 1 'und port anschalten
Else 'das hier passiert erst bei dem darauf folgenden interrupt
Portb.0 = 0 'dann port wieder ausschalten
Incr Kanal 'und den nächsten kanal bearbeiten
End If
End If
If Kanal = 1 Then
If Portb.1 = 0 Then
Timer1 = Servo(2)
Portb.1 = 1
Else
Portb.1 = 0
Incr Kanal
End If
End If
If Kanal = 2 Then
If Portb.2 = 0 Then
Timer1 = Servo(3)
Portb.2 = 1
Else
Portb.2 = 0
Incr Kanal
End If
End If
If Kanal = 3 Then
If Portb.3 = 0 Then
Timer1 = Servo(4)
Portb.3 = 1
Else
Portb.3 = 0
Incr Kanal
End If
End If
If Kanal = 4 Then
Timer1 = 40000 'eine pause von ca. 12ms bis zum nächsten interrupt. Bei guten Servos oder Brushlessreglern kann man hier bis auf 65530 gehen ==> ansteuerfrequenz von ~ 200Hz
Kanal = 0
End If
Return
End
Lesezeichen