- Labornetzteil AliExpress    Werbung      
Ergebnis 1 bis 10 von 30

Thema: 8 Servos mit dem Atmega32 steuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.753
    Code:
    #define F_CPU 16000000UL
    ...
    // für MILLISEC_BASE einen Wert kleiner als 128 ergibt
    // MILLISEC_BASE ist der Timerwert, der 1 Millisekunde Zeitdauer ergeben
    // soll.
    //
    #define PRESCALER      128
    #define PRESCALER_BITS (1<<CS22) | ( 1 << CS20 )
     
    #define MILLISEC_BASE  ( F_CPU / PRESCALER / 1000 )
    #define CENTER         ( MILLISEC_BASE /2 ) 
    ...
    Also ich rechne mal (und denk dabei nicht weiter nach):
    ( F_CPU / PRESCALER / 1000 )
    16 000 000 [Hz] / 128 / 1000 = 125 [Hz]
    1 ms sind - mal locker gesagt: ... 1000 Hz

    Irre ich mich ??? (Hab grad den Kopf voll mit ungelösten Themen)
    Ciao sagt der JoeamBerg

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2013
    Beiträge
    18
    Die 1000Hz sind ja der zweite Divisor bei 16 000 000[Hz] / 128 / 1000 [Hz] = 125.
    Die 125 sind der Wert für OCR2 um auf 1ms zukommen. 16 000 000[Hz] / 128 / 125 = 1000 [Hz].

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.753
    ... Die 125 sind der Wert für OCR2 um auf 1ms zukommen ...
    Hast Recht, siad - ich muss mir das aber noch genauer durchsehen. Pingelig: ich denke dass die theoretische Mitte bei OCR2 124 ist (das sind dann 125 Schritte ab 0). Ich muss mir das Ganze mal in Ruhe durcharbeiten, denn nu kann doch OCR2 nicht mehr kleiner als 125 werden in OCR2 = MILLISEC_BASE + ServoValue[ServoId]; wegen uint16_t ServoValue[NR_SERVOS]. Also mehr bis später.
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    35
    Beiträge
    1.192
    Hallo,
    wurde auch die JTAGen-Fuse deaktiviert? Sonst gehen am PORTC beim ATmega32 einige Pins nicht richtig (PC2 bis 5).
    Grüße, Bernhard
    "Im Leben geht es nicht darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen." R.L. Stevenson

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    31.05.2005
    Beiträge
    16
    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.

  6. #6
    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.

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

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.753
    ... 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

Ähnliche Themen

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

Berechtigungen

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

    Werbung      12V Akku bauen