- Labornetzteil AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 30

Thema: 8 Servos mit dem Atmega32 steuern

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    31.05.2005
    Beiträge
    16
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    Ist es so gewollt dass die Servoperiode sich ständig ändert? Denn die Servoperiode ist in dieser Implementierung die Summe aller Servowerte (ServoValue, min: 8*0, max:8*1ms). Nach meinen wissen sollte die schon fix auf ~25ms stehen. Dein PWM Signal wandert von 0ms bis 1ms. Bei Servo-Motoren sollte aber die Signaldauer bei 1ms-2ms liegen.

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2013
    Beiträge
    18
    So wie ich das sehe geht die Periodendauer von 8-16ms. (1-2ms pro Servo).
    Fix muss sie nicht sein sollte aber um die 20ms herum liegen. Ich steuere bei mir momentan 4 Servos nach dem gleichen Prinzip an. Danach kommt noch ein Intervall mit fixer Periode damit ich ungefähr auf die 20ms komme. Funktioniert ohne Probleme.

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    31.05.2005
    Beiträge
    16
    ich hab das "MILLISEC_BASE +" übersehen.

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    Danke für den Hinweis mit der JTAGen-Fuse, diese war in der Tat nicht deaktiviert, jedoch, hat sich bisher nichts geändert.
    Die Periodendauer ist wirklich im schlechtesten Fall nur 8 ms lang... und wie Siad ja schon geschrieben hat, sollte diese mindestens 20 ms lang sein.
    Ich werde nachher ausprobieren, was passiert, wenn ich die Periodendauer länger mache... ich bin gespannt :-D
    __________________________________________________ _____________
    http://pe-products.jimdo.com/

  5. #15
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.693
    ... wie ich das sehe geht die Periodendauer von 8-16ms ... sollte aber um die 20ms ...
    Nöö. Sollte, vielleicht - aber der Standardwert kann mitunter weit über-/unterschritten werden.

    Im RNWiki hatte ich ja ein paar Beispiele zur Ansteuerung vorgelegt, dass diese 20ms-Richtschnur zumindest für einige (analoge) Servos nicht wirklich gilt. Bis runter zu 8 ms Periodendauer habe ich noch nicht gehört, aber für etwa 10 bis 11 gibts Erfahrungswerte, leider ohne Nennung des Servotyps.

    Seltsam kommt mir vor, dass Du nicht von markanten Änderungen nach Löschen des JTAG-Fuses schreibst. Sehr seltsam.
    Ciao sagt der JoeamBerg

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    Ich melde mich auch wieder zurück...es wurde ruhig um das Projekt, da ich gerade in der Klausurphase bin, aber gut...

    Bis jetzt habe ich den Quellcode noch nicht zum Laufen bekommen, und ich weiß um ehrlich zu sein auch nicht, was ich noch ausprobieren kann.
    Jedoch habe ich auf eine ganz simple Art und Weise mit einem anderen Programm versucht nur einen Servo zu bewegen, was auch funktioniert hat.
    Von daher liegt es anscheinend nicht an der Hardware.

    Kann mir vlt jemand den Quellcode testen, ob er bei jemandem von euch funktioniert?

    Grüße High Light
    __________________________________________________ _____________
    http://pe-products.jimdo.com/

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2013
    Beiträge
    18
    Wenn ich am Wochenende Zeit habe probiere ich es.

    Ist jetzt vielleicht eine blöde Frage, aber wie sieht deine Spannungsversorgung aus? Hast du den Code schon einmal mit nur einem angeschlossenen Servo probiert oder gemessen ob du nicht etwa einen Spannungseinbruch hast?

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    Bin mir sicher, dass es an der Hardware nicht liegt.
    Ich glaube, dass ich irgendwo die Register für den TIMER2 nicht richtig gesetzt oder vergessen habe.
    Heute habe ich an der Hochschule den Code für den TIMER0 des Atmega88 angepasst und es funktionierte alles sofort wie gewünscht.
    __________________________________________________ _____________
    http://pe-products.jimdo.com/

  9. #19
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.232
    Ich würde die Ansteuerung mal anders, ohne CTC probieren.

    Lass den Timer frei laufen und nimm beim Prescaler einen Wert von 8.
    Somit ist ein Timer Takt von 0,5µs zu erreichen.
    Die Comparematch Interrupts kannst Du dann so setzen, das der gewünschte Servowert zum aktuellen Zählerstand des TCNT Registers dazugezählt wird.
    Der Vorherige Ausgang wird abgeschaltet, der gewünschte aktiviert und fertig ist der Lack.
    Wenn du eine Variable definierst die 20ms entspricht, also 40000 und von dieser dann die gewünschten Servowerte jeweils abziehst und diesen Wert + TCNT als 9ten Wert in das Comparematch Register schreibst, ohne einen Ausgang zu aktivieren kommt auch alle 20ms ein Puls aus dem Controller raus.
    Beim letzten Servo kann der allerdings um maximal 8 ms schwanken.
    Nicht alle Servos packen eine Wiederholrate von 8ms.

    Hier mal ein Codebeispiel für ein Servo.
    PWMOUT ist der Servopin
    ui_pulseout ist die Länge des gewünschten Servopulses in 1/2µs, also 2000 entspricht 1,0ms.
    ui_pauslengh ist die gewünschte Pause allerdings hier ohne abzug des Servopulses, weil ja nur ein Servo bedient wird.
    ub_highpulse ist ein Marker, ob 1 oder 0 am Ausgang anliegen, den kannst Du in eine Byte Variable umwandeln und Ihn dann zum Indizieren der Servoimpulsvariable verwenden.
    Code:
    // Timer 1 output compare A interrupt service routine - Servoimpulse ausgeben
    interrupt [TIM1_COMPA] void timer1_compa_isr(void)
    {
    if(ub_highpulse==0)
        {
        PWMOUT=1;
        OCR1A=ui_pulseout+TCNT1;
        ub_highpulse=1;
        }
    else
        {
        PWMOUT=0;
        OCR1A=ui_pauslengh+TCNT1;
        ub_highpulse=0;
        };
    }
    Hier die Timer 1 Einstellungen Beim TIMSK wurde zusätzlich noch Timer 0 gestartet
    Code:
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 2000,000 kHz = Prescaler 8
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: On
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x02;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    ....
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x11;
    Der Code läuft auf nem ATMEGA16, sollte also auch beim 32er gehen.
    Geändert von wkrug (17.05.2014 um 09:16 Uhr)

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied Avatar von High Light
    Registriert seit
    21.08.2009
    Ort
    Baden Württemberg
    Beiträge
    142
    @wkrug: Danke für die Unterstützung, werde ich mir morgen Abend Mal genauer anschauen und ausprobieren.
    @Siad: Hattest du Zeit den Code bei dir auszuprobieren?
    __________________________________________________ _____________
    http://pe-products.jimdo.com/

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Servos mit PC steuern
    Von Surebetter im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 6
    Letzter Beitrag: 25.04.2010, 15:11
  2. Wie kann ich mit dem CCPR5 Servos steuern ?
    Von Morten im Forum Robby CCRP5
    Antworten: 3
    Letzter Beitrag: 03.05.2009, 14:42
  3. Servos mit ATmega32
    Von murdocg im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 17.10.2008, 07:48
  4. 12 Servos mit PIC steuern
    Von m0 im Forum PIC Controller
    Antworten: 13
    Letzter Beitrag: 18.03.2005, 23:11
  5. Servos mit SD20 steuern
    Von Sebastian im Forum Sensoren / Sensorik
    Antworten: 16
    Letzter Beitrag: 04.12.2003, 15:12

Berechtigungen

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

Labornetzteil AliExpress