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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.