PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo die 50zigste - NIX HILFT!



m@rkus33
21.12.2005, 00:39
Hallo zusammen,

eins vorweg ich habe wirklich überall im Forum und in den bekannten Hilfedateien gesucht.

Habe ein großes Problem mit der Servoansteuerung.

Ich habe folgenden Code:


$regfile = "m16def.dat"
$crystal = 8000000


Dim Center As Integer
dim servopos as integer
dim left as integer
dim right as integer
left=100
right=200
center=150
Config Servos = 2 , Servo1 = Portb.1 , Servo2 = Portb.0 , Reload = 10
Config Portb = Output
Enable Interrupts

Servopos = Center
Servo(1) = Servopos
Wait 1

Servopos = left 'nach links fahren
Servo(1) = Servopos
Wait 1

print "Rechtsdrehung"
For Servopos = left To right Step 10
Servo(1) = Servopos
Waitms 10
Next
Wait 1

print "Linksdrehung"
For Servopos = right To left Step -10
Servo(1) = Servopos
Waitms 10
Next
Wait 1

print "Mitte"
Servopos = Center
Servo(1) = Servopos

Ich benutze ein STK500 und das Servo macht das "übliche", es ruckelt in eine Richtung bis Endanschlag.

Nichts hat geholfen, weder das Timing noch die Veränderung des Reload.

Benutze Robbe FS500 Servos.

Kann mir jemand sagen wo ich noch suchen könnte?

Ich schreibe den Code in Bascom, brenne aber über AVR-Studio4 nur den HEX-File über STK500. Die Frequenz im STK500 ist auch 8 Mhz. Ports und Pins sind richtig. Servos i.O.

Danke und Gruß
Markus

nikolaus10
21.12.2005, 09:09
Hallo
Hast du dir vielleicht mal die Pulse an einem Oszilloskop angeschaut ?
Das erklaert so manches Problem.
Wenn du kein eigenes Oszilloskop hast nimm einen andere AVR der kann auch recht gut Pulse messen.

MFG

xanadu
21.12.2005, 09:11
Wie hast Du den Servo denn angeschlossen?

Ratber
21.12.2005, 09:29
dim servopos as integer


Mach mal "Bytes" draus

PicNick
21.12.2005, 09:40
"left" und "right" sind irgendwie vom Bascom belegt. nimm andere namen, weiß der Teufel, wie er reagiert

Torsten_G
21.12.2005, 11:41
Da hat PickNick völlig Recht, alles, was Bascom im Editor mit einer anderen Farbe versieht, sollte man als Variablennamen lieber vermeiden...

Wenn´s das auch nicht bringen sollte, ersetze doch erstmal Dein "Servo(1)=Servopos" gegen ein "Print Servopos", um die Zählschleifen zu testen.

Wenn Dein Servo schon gemütlich in eine Richtung loszuckelt, kann´s die Hardware und die Grundkonfiguration ja kaum sein, also wird´s vermutlich an der Zähler-Logik liegen!

Viele Grüße

Torsten

PicNick
21.12.2005, 11:50
Was mir auffällt:


For Servopos = 100 To 200 Step 10
Servo(1) = Servopos
Waitms 10
Next


Das sind doch zehn Schritte. d.h. du fährst in einer 1/100 sekunde von links nach rechts. Is das nicht ein wenig flott ?
Das Servo nimmt einen neuen Wert erst nach 20 mS zu Kenntnis ?

m@rkus33
21.12.2005, 15:01
Ich habe die Fehlerquelle gefunden.

1. Das Servo war richtig angeschlossen - Bin Modellbauer daher weis ich bei Robbe ist weiß=Impuls

2. Die Änderungen der Variablennamen haben nichts bewirkt.

3. Das Servo soll sich recht "flott" bewegen - jetzt tut es das auch.

Ich habe vergessen das ich den STK500 Takt hergenommen habe. Aber das Fusebit im Controller auf "intern" hatte. Das kann natürlich nicht funktionieren.

Fusbit auf "extern" und schon klapp´s Sorry aber da bin ich echt erst um 02:00 per Zufall draufgekommen. Danke aber allen die mir geantwortet haben - das sind trotzdem wieder gute Tips.

Merci
Markus