www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RC Signal wackelt


Autor: Tobias Tetzlaff (tobytetzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich werte mir einem ATmega8 ein PPM RC Signal aus.

Externer Interupt, steigende Flanke:
Timer0 mit Vorteiler 256 start
Externen Interupt auf fallende Flanke setzen

Externer Interupt, fallende Flanke:
Timer stop
Pulslänge = Timerwert
Externen Interupt auf steigende Flanke setzen


Im Main frage ich die Pulslänge ab:
If (Pulslänge < 70)
LED1 an
..
If (Pulslänge >= 70 && Pulslänge < 90)
LED2 an
..
If (Pulslänge >= 90 && Pulslänge < 110)
LED3 an
..


Wenn der Puls nun aber genau 70 oder 90 an Wert hat,
flackert die LED hin und her, da der Puls zwischen 69 und 71,
bzw. zwischen 89 und 91 "wackelt".

Wie kann man das wackeln beseitigen, bzw. ausblenden?

Kann man so abfragen:
If (Pulslänge < 65)
LED1 an
..
If (Pulslänge >= 75 && Pulslänge < 85)
LED2 an
..
If (Pulslänge >= 95 && Pulslänge < 105)
LED3 an
..

Also quasi die 10 Werte von 65-74 und 85 bis 94
garnicht beachten?

Oder wie macht man es sonst, wenn Werte in einem bestimmten Bereich 
flackern, aber man trotzdem einen eindeutigen Schaltpunkt haben will?

Gruß Toby

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mehrere Ansätze die sich auch kombinieren lassen.

1. Filtern ==> mehrer Meßwerte zusammenfassen und daraus den 
resultierenden Wert bilden, der in der IF Abfrage genutzt wird. Es gibt 
viele Filtermöglichlickeiten die sich in Rechenaufwand, Rambedarf, 
Wertigkeit der einzlenen Werte, Schnelligkeit,...... unterscheiden. Die 
einfachste Möglcihkeit ist eine Mittelwertbildung über X- Werte.

2. Ein Toleranzband verwenden. Das heißt die Werte von Schaltpunkt +-x 
werden nicht beachtet.

3. Hysterese verwenden. Beispiel: schaltpunkt 70: Wert ist > 70 und 
geschaltet wird wen der Wert 69 unterschritten hat. Der Wert < 70 und 
geschaltet wird wenn der Wert 71 überschritten hat.

Was für deine Anwendung der günstigste Wert ist, musst du entscheiden, 
da wird dir niemand helfen können, weil die Rahmenbedimgungen nicht 
bekannt sind.

Zum ermitteln der Pulsweite, wäre eine "Capture&Compare Unit" ( heißt 
bei jedem µC hersteller anderst) günstiger, weil die Zeitmessung dort in 
Hardware realisiert wird und keine Interruptlatenzzeiten als Fehler 
hinzukommen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.