-         

Ergebnis 1 bis 8 von 8

Thema: Schaffe es nicht Servo mit PWM zu steuern

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.07.2005
    Ort
    Oberwil
    Alter
    36
    Beiträge
    131

    Schaffe es nicht Servo mit PWM zu steuern

    Anzeige

    Hallo Leute

    Ich habe es leider noch immer nicht geschafft meinen Servo mittels PWM zu steuern.

    ************************************************** *********
    PWM initialisieren
    ************************************************** *********/

    void init_Motor(void)
    {

    //10-Bit nicht invertierter PWM
    TCCR1A = (1<<COM1A1) | (1<<WGM11) | (1<<WGM10);

    //Prescaler (64)
    TCCR1B = (1<<CS11) | (1<<CS10);

    //Vorladen
    TCNT1 = 868;


    //Interupt dektivieren
    TIMSK &= ~0x3c;

    //Ausgänge für PWM
    PORTD &= ~(1<<PD5);

    //Pulsbrite für PWM (1.5ms)
    OCR1A = 892;

    //einschalten
    PORTD |= (1<<PD5);

    }

    So sieht meine init-Funktion aus für den PWM.

    Weshalb funkt das noch nicht? Wo liegt der Fehler?

    Atmega32 mit 1MHz Quarz

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Wie schon im letztem Tread: hänge es an ein Oszi, dann siehst du warum

    Nebenbei möchte ich noch anmerken, das der verwendete Timermode nicht wirklich für diese Aufgabe geeignet ist.

    Der Timer läuft in deinem Programm im Moment wie folgt:

    1. von 868 -> 1023 (und löscht den OC1A Pin bei 892)
    2. von 1023 -> 0 (und setzt den OC1A Pin bei 892)
    3. von 0 -> 1023 (und löscht den OC1A Pin bei 892)
    4. gehe zu 2.

    d.H. rein Zeitlich gesehen sieht deine Kurve wie folgt aus:

    _|°°°°|_______________|°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°|_______________|°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°|__

    Fazit: es kann nicht funktionieren.

    Vielleicht sollte ich dir noch den Tipp geben, bei dem Code in deinem anderem Tread mal den Ausgang zu invertieren .. (also anstatt von COM1A0 & COM1A1 nur COM1A1 zu setzen ...)

    Nachtrag: Mit etwas Glück kann ich dir am Dienstag mal nen richtiges Oszibild dazu hier reinposten.

    Grüße,

    da Hanni.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.07.2005
    Ort
    Oberwil
    Alter
    36
    Beiträge
    131
    das heisst mein timer wird nicht mehr automatisch mit 868 vorgeladen? Dann muss ich dies immer noch manuel einstellen?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Richtig,

    Nur: kannst du den Timer nicht neu Vorladen, weil du nicht weiss wann ...
    (Im übrigen kam von daher der Lösungsansatz mit dem Timermode 14 ...)

    Grüße,

    da Hanni.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.07.2005
    Ort
    Oberwil
    Alter
    36
    Beiträge
    131
    Dann habe ich vorhin kurz getestet am Servo. Hat sich leider nichts getan. Keine Bewegung. Aber wie kann ich den anders meine Servo ansteuern. Irgendwie komme ich nicht weiter.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.07.2005
    Ort
    Oberwil
    Alter
    36
    Beiträge
    131
    Es sollte doch nicht so schwierig sein ein PWM zu erzeugen wo nur drei Pulsbreite vorkommen. (1.5ms, 2.5ms, 1ms).

    Aber nicht mal das kann ich so programmieren. Irgendwie bin ich langsam am verzweifeln. So wird das nie etwas.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Ich geb dir mal nen Tipp:

    1. leg das ganze mal beseite.
    2. geh mal raus.
    3. gewinne damit den abstand den du brauchst um das Problem zu lösen.

    und 4. Wie schon gesagt: ich versuch mal am Dienstag da ganze mit nem Oszi zu lösen.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.07.2005
    Ort
    Oberwil
    Alter
    36
    Beiträge
    131
    das habe ich schon zur Genüge getan. Ich kann mich nicht mal nach dem Datenblatt richten. Ich verstehe zum Teil die Sachen nicht. Weiss nicht obs an Englisch liegt oder ob es einfach ein wenig zu kompliziert beschrieben ist.

    Es ist doch nichts besonders ein PWM Signal für eine Servo zu programmieren. Habe schon anderes gemacht, aber hier habe ich nur Probleme und komme nicht weiter.

Berechtigungen

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