-         

Ergebnis 1 bis 7 von 7

Thema: PWM Signale auswerten

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.04.2007
    Ort
    Rot am See, Heroldhausen
    Alter
    24
    Beiträge
    14

    PWM Signale auswerten

    Anzeige

    Hi,
    ich bin ziemlicher Robotik einsteiger und hab ein kleines Problem:
    Ich möchte über einen Atmel versuchen die PWM Signale meines ADXL202
    auszuwerten, aber wie stelle ich den Timer bzw. counter so ein das er mir die länge des strom-an impulses misst und dies in einen verwendbaren wert umwandelt? (Ja ich hab das Datenblatt gelesen aber mein englisch ist nicht das beste)
    Danke im vorraus,

    MFG Max

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.01.2007
    Beiträge
    134
    Könnte man z.B. mit dem input capture pin machen, bei steigender(fallender) Flanke wird der Timerwert im ICP Register gespeichert und du bekommst nen Interrupt, wo du das auslesen kannst.

    Grüsse, Stefan

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.04.2007
    Ort
    Rot am See, Heroldhausen
    Alter
    24
    Beiträge
    14
    Hab ich mir auch schon gedacht aber was kann man im Icp register machen?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Im ICP Register wird der TCNT Wert gespeichert, bei dem der ICP Interrupt auftrat.
    Also z.B. die steigende Flanke.
    Du speicherst in der ICP Interrupt Routine diesen Wert ab und stellst in der ICP Interrupt Routine den Interupt auf fallende um.

    Tritt dieser Interrupt auf liest Du wieder das ICP Register aus und ziehst den vorhergehenden Wert ab.

    Der Pausenwert kann genauso errechnet werden.

    Und schon hast Du eine Aussage über die Pulslänge.

    Welche Teilerfaktoren Du für den Timer einstellen musst und ob Du noch irgendwelche Überlaufregister brauchst ist von der min und max Frequenz des PWM Signals und der gewünschten Präzision abhängig.

    Das Datenblatt des ADXL202 mag ich jetzt nicht studieren, welche minimalen und maximalen Impulslängen können den auftreten ?

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    12.04.2007
    Ort
    Rot am See, Heroldhausen
    Alter
    24
    Beiträge
    14
    Danke für die Info,
    so viel ich weiss kann man die Pulslaenge über einen Wiederstand einstellen

    MFG,
    Max

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    12.04.2007
    Ort
    Rot am See, Heroldhausen
    Alter
    24
    Beiträge
    14
    den duty cycle jedenfals bei der impulsdauer kp im datenblatt steht das die impulsdauer bei 0g beschleunigung 50% des duty cycles beträgt...
    Hier einen kleinen prototyp der aber irgendwie nicht funktioniert, er benutzt die count72kHz funktion von der Asuro Lib d.h. alle 0.0000138s wird durch ein Interrupt count72kHz um eins erhöt. Zum testen hab ich einen Modelbauempfänger an den Int0 Pin angeschlossen:


    Code:
    #include "asuro.h"
    volatile unsigned char status, wert;
    extern unsigned char count72kHz;
    
    void StartPwm(void) {
    DDRD &= ~(1<<PD2);      //Datenrichtungsbit löschen
    MCUCR &= ~(1<<ISC01);   //Interrupt einstellung von
    MCUCR |= (1<<ISC00);    //Int0 einstellen auf Steigende und Fallende                   //Spannung
    GICR |= (1<<INT0);      //Interrupt von Pin Int0 setzen
    }
    
    void StopPwm(void) {
    GICR &= ~(1<<INT0);    //Interrupt deaktivieren
    }
    
    SIGNAL (SIG_INTERRUPT0) {
    
    if (status == 1) {     //Wenn Status = 1 counter aktiv
    wert = count72kHz;
    status = 0;
    }
    else {
    count72kHz = 0;
    status = 1;
    }
    MFG,
    Max

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    12.04.2007
    Ort
    Rot am See, Heroldhausen
    Alter
    24
    Beiträge
    14
    Keine hilfe mehr nötig. Gesegnet sei google.

    maexlich

Berechtigungen

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