-         

Ergebnis 1 bis 5 von 5

Thema: Externes PWM-Signal einlesen und Auswerten

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.08.2008
    Beiträge
    22

    Externes PWM-Signal einlesen und Auswerten

    Anzeige

    Hallo,
    ich habe folgedes Problem.

    Ein PWM-Singnal mit 0V bzw. 5V und einer Frequenz von ca. 6,6kHz (T =ca. 150us) müsste ich in den MC einlesen und das Tastverhältnis feststellen. Welches dann alle ca. 500ms ausgegeben werden soll (bsp. Display)

    V= Tein / (Tein-Taus)

    als Hardware ist ein Atmega8 mit einem extrenen Quarz von 3,6864 MHz geplant.

    - Gibt es da eine "Musterlösung" welche die Hauptschleife nicht unbedingt ausbremst?

    - Schaffe ich eine Fehlerfreie auswertung mit dieser Quarzfrequenz?

    gruß Cali

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Hmm sollte machbar sein, ja....
    Grundsätzlich braucht das einen oder mehrere Interrupts, damits genau ist.
    Ansätze wären:
    A - Du kennst den genauen Takt der PWM und kannst entsprechend mit einem Vielfachen per µC annähern und dann einfach das Signal ausreichend oft sampeln. Also wenns 8 Bit bei 1kHz wären, dann alle 1/1000tel sekunde nachsehen, was der Pin macht. Das 256 mal und dann den Durchschnitt berechnen. Das wäre dann ein timer-Interrupt - AVRcalc hilft bei der Suche nach passenden Einstellungen!

    B - Analog: du klemmst die PWM an einen ADC und schaust, was der so ausspuckt. Sicherlich sehr einfach, aber schon gut. Grad wenn beide 5V haben und vom selben Netz gespeist werden ne Alternative...

    C - Holzhammermethode: Jeden Flankenwechsel per INTx oder Pinchange-INT protokollieren und dass dann ausrechnen. Funktioniert gut, wenn man ein relativ gleichmäßiges PWM-Signal hat. Wenns stark schwankt, dann wirds zu ungenau, weil der µC ja nicht weiß, welches die erste und welches die letzte Flanke ist.

    Wer Denkfehler findet, darf sie mitteilen

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hi,

    mit Interrupts durch die "input capture unit" (erfordert Umschalten der Flankenempfindlichkeit!) in Zusammenarbeit mit einem Timer wird das am effektivsten zu realisieren sein. Du sagst, Dein Signal liegt bei 6,6kHz, hast aber nicht verraten, welche Werte das Tastverhältnis annehmen kann -- davon hängt es ab, ob Deine Prozessorfrequenz ausreicht. Wenn Du keinen Mittelwert des Tastverhältnisses benötigst, sondern eine Messung alle 500ms ausreicht, ist alles noch unproblematischer; dann gehen auch die "brute force" Methoden gut!

    Da ich kein Bascom spreche, kann ich Dir nur allgemeine Vorschläge zur Realisierung machen, aber keine konkreten Programmiervorschläge geben.

    MfG

    Fred
    Only entropy comes easy. - Anton Checkhov

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    09.08.2008
    Beiträge
    22
    huhu,

    das Tastverhältnis geht von ca. 1% -99% es kommt direkt aus einem Pic mit einer Frequenz von 6.6kHz. Dieses Tastverhältnis spiegelt den aktuellen "Istwert" eines Sensors (in unserem Fall eine Digitalwaage)wieder.

    Dieses Signal müssen wir dann Softwareseitig annähern, das bei der
    leeren Waage dann der Wert 0% bzw bei max. Belastung dann 100% weiterverabeitet wird. (Eventuell ist eine anzeige dieses Wertes auf einem Display geplant)

    Aber unser Primärziel ist es diesen Wert (0%-100%) dann auf ein Industriestandartsignal von 4-20mA zu konvertieren, damit wir diesen Sensor mit einem Handelsüblichen Regler verabeiten können.

    Es handelt sich zwar nur um ein Schulungsmodel (mit großer Totzeit) aber es währe totzdem nicht so schön, wenn die Anzeige im Dislay um 5% schwankt bei konstantem Gewicht auf der Waage.

    Alternative a)
    Wir Verarbeiten das Signal komplet mit einer OP-Ampschaltung aus, was ich aber nicht unbedingt Zeitgemäs finde und jeder der schon mal mit OP´s gearbeitet hat weis, das sich 95% der "Schulbuchschaltungen" nicht 1 zu 1 realisieren lässt.(Theorie vs. Praxis)

    Alternative b)
    Wir lesen das RS232 (mithilfe eines 232 ic´s) direkt aus der Waage aus. http://www.kern-sohn.com/pdf/BA_FCB_d.pdf (leider bin ich in Sachen RS232 ein Volllaie deswegen fällt es mir schwer den Aufwand zu Bewerten -> Expertenmeinung wäre Super) ... ist wahrscheinlich nicht der einfachste Weg aber der genauste mit vielen Möglichkeiten (Display usw.)

    Alternative c)
    Tiefpass (RC-Schaltung) an den Pwm-Ausgang und dann mit ADC in den uC Einlesen und später mit Wertetabelle Softwareseitig "Kalibrieren".
    Bsp.:
    "Digitalerconvertierter Analogwert" -> " Tastgrad"
    0-12 -> 1%
    13-24 ->2%
    25-36 -> 3%
    usw.
    Sehr einfache Variante ist nur eine Frage der Genauigkeit.
    Könnte mir vorstellen, das sich nicht wieder die exakte Spannungswert wie ein Verzögerungsglied 1. Ordnung verhält bei einem Sprung.

    Alternative d)
    Das Pwm-Signal direkt in den uC einlesen und Auswerten (eure Vorschläge)

    Alternative e)
    Die Nadel im Heuhaufen finden. (vielleicht gibts ja fertige IC´s)

    Alternative f)
    (siehe Anhang)
    hab die "Steuerleitungen" mal weggelassen (Reset; input enable usw.)
    geht hier ja nur um das Prinzip.

    Ps: Jetzt bin ich aber mal auf eure Meinungen gespannt

    gruß Cali
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken zeichnung1.jpg  

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hallo,

    was spricht gegen die von Dir schon genannte Auswertung des RS232-Signals? Ich habe den Text im Datenblatt nur überflogen und bin mir nicht sicher, ob man die RS232-Parameter immer wieder neu einstellen muss; aber zumindest scheint das Gewicht (ob stabil oder nicht) kontinuierlich ausgegeben zu werden. Damit würdest Du Dir den ganzen Aufwand ersparen, die Rohdaten der Wägezelle auszuwerten! Die Datenübertragung ist gut dokumentiert und eine Interface schnell aufgebaut. Du sagt, Du hast damit keine Erfahrung; die wirst Du aber schnell bekommen und weniger Probleme haben als mit der Rohdatenauswertung.

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

Berechtigungen

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