- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Servos "zucken" in die Endstellung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2005
    Ort
    Buxtehude
    Alter
    36
    Beiträge
    14

    Servos "zucken" in die Endstellung

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich mache gerade meine ersten Schritte mit AVRs und Bascom. Nachdem Taster und LEDs schonmal hinbekomme habe ich mich nun an einen Servo gewagt.

    Der MEGA8 hat keinen externen Quarz und ich versuche es mit der Standard-Routine

    Code:
    $regfile = "m8def.dat"
    Config Portd = Output
    Config Servos = 1 , Servo1 = Portd.2 , Reload = 10
    Enable Interrupts
    Servo(1) = 100
    Waitms 1000
    fehlt da noch ein "crystal" oder ein "end" ?

    Ich habe schon recht viel rumprobiert, aber es ist immer das selbe: Der Servo (Conrad ES-030) dreht in ruckartigen Bewegungen in die Endstellung und zuckt auch dann weiter. Was läuft da falsch?

    LG,
    David

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    59
    Beiträge
    1.080
    Hallo,

    - es fehlen compilerangaben zum crystal
    - es fehlen angaben zum stack, frame und das ganze "normale gedöns"
    - es fehlt ein end

    und mehr als einmal zucken bekommt der Servo ja auch nicht mitgeteilt, da du den Servowert einmal setzt und das Programm dann ins Leere läuft.

    Ein Blick in die Bascom-Hilfe "config servos" könnte weiterhin helfen.

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2005
    Ort
    Buxtehude
    Alter
    36
    Beiträge
    14
    Also, habe ein bisschen geforscht.

    Der Servo scheint die Anschläge bei 8 und 31 zu haben. Außerdem stimmt etwas mit dem Timing nicht.

    Bei diesem Programm:

    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Portb = Output
    Do
    Portb.0 = 1
    Waitms 1000
    
    Portb.0 = 0
    Waitms 1000
    
    Loop
    
    End
    kommt das mit der 1 sek gut hin.

    Ändere ich das Programm auf diese:

    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Portb = Output
    Config Portd = Output
    
    Config Servos = 1 , Servo1 = Portd.2 , Reload = 10
    
    Enable Interrupts
    
    Do
    
    Portb.0 = 1
    Servo(1) = 31
    
    Waitms 1000
    
    Portb.0 = 0
    Servo(1) = 8
    
    Waitms 1000
    
    Loop
    
    End
    sind das gemessen 33 sekunden!

    Da läuft doch was schief :P

    LG

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Man kann ja nur raten, wenn du keine vollständigen Angaben machst:

    1. Welche Taktfrequenz hat denn dein Board? Stimmt die mit der $crystal-Angabe überein?
    2. Stack, frame hast du auch noch nicht ergänzt (hatte dir MeckPommER ja schon geschrieben!)?
    3. Was meinst du mit "gemessen 33 sekunden"? Was hast du da genau gemessen?

    Gruß Dirk

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    59
    Beiträge
    1.080
    ... und was sagen deine fuses?
    Mein Hexapod im Detail auf www.vreal.de

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2005
    Ort
    Buxtehude
    Alter
    36
    Beiträge
    14
    Hi,

    also ich habe keinen externen Quarz - d.h. der 1 Mhz interne Quarz wird genutzt. Das stimmt auch wenn ich ne Blink-LED mit 1s Schaltzeit mache ist das korrekt (siehe erstes Programm).

    $hwstack = 32
    $swstack = 8
    $framesize = 24

    Die 33 Sekunden habe ich mit meiner Armbanduhr gemessen die ich daneben gelegt habe.

    Ich nutze AVRprog und ein USB-RS232 Adapter an Vista32. Die HEX-Dateien erstellt Bascom-AVR. Der Progger ist dieser: http://www.klaus-leidinger.de/mp/Mik...rogrammer.html

    funktioniert eigentlich ordentlich.

    Fuses siehe Bild im Anhang
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken fuses_119.jpg  

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    59
    Beiträge
    1.080
    Die Frage war nicht, MIT was du gemessen hast, sondern WAS du gemessen hast, wobei dann 33 Sekunden herauskamen.

    Und wo hapert es nun noch?

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2005
    Ort
    Buxtehude
    Alter
    36
    Beiträge
    14
    Hi,

    ich habe ja in dem vorletzen Post zwei Programme geschrieben. Einmal eine einfache Blink-LED im 1-Sekunden-Takt. Diese eine Sekunde kommt auch sehr gut hin.

    Im zweiten Programm habe ich in das selbe Programm den Servo dazugenommen, der auch im 1-Sekunden-Takt Anfangs- und Endstellung einnehmen soll. Doch im zweiten Program ist das waitms 1000 nicht eine Sekunde, sondern 33 Sekunden, und ich kann mir nicht erklären woher diese stammen.

    Die Servos drehen also - aber langsam und ruckelnd und haben nur eine Auflösung von 23 Schritten.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    59
    Beiträge
    1.080
    Entweder spinnt deine Hardware, oder deine gewählten Angaben zu Stacks und Framesize sind zu klein. Ich würde einfach mal die Werte auf 80 ändern.

    Das mit der Auflösung ist nicht so prickelnd, das stimmt. Für Anwendungen, in denen ein Servo fein fühliger gesteuert werden soll, nehmen die meisten einen 16-Bit Timer und basteln sich die Ansteuerung eines Servos per Interrupt selber.

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2005
    Ort
    Buxtehude
    Alter
    36
    Beiträge
    14
    Auch mit Stack/Framesize von 80 ändert sich daran nichts.

    Was an meiner Hardware kann denn spinnen?

    Ich habe auch schon andere Pins ausprobiert, es ist überall gleich. Auch hängt an den Pins nichts anderes dran.

    LEDs und Taster funktionieren jedoch. Was an den Servos macht solche Probleme?

    Oder ist der interne Quarz für sowas nicht geeignet?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test