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
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:
Ich benutze ein STK500 und das Servo macht das "übliche", es ruckelt in eine Richtung bis Endanschlag.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
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
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
Wie hast Du den Servo denn angeschlossen?
dim servopos as integer
Mach mal "Bytes" draus
Gruß
Ratber
"left" und "right" sind irgendwie vom Bascom belegt. nimm andere namen, weiß der Teufel, wie er reagiert
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
Was mir auffällt:
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 ?For Servopos = 100 To 200 Step 10
Servo(1) = Servopos
Waitms 10
Next
Das Servo nimmt einen neuen Wert erst nach 20 mS zu Kenntnis ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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
Lesezeichen