Hi, Ich möchte ein Fahrtenregler bauen. Bin grade dabei mit einem ATTiny84 das Signal vom Empfänger auszuwerten. Ich möchte nur das Signal von einem Kanal auswerten! Ich benutze dafür Timer1 mit Input Capture. Der selbe Timer soll nachher für die PWM-Erzeugung zur Ansteuerung des Motors benutzt werden. Deshalb läuft der Timer im 8Bit FastPWM Mode. Im Moment lasse ich mir die gemessene Signaldauer des Empfängersignals auf einem Display ausgeben, und dabei fällt auf das die Dauer trotz VZ1 Filter ziemlich schwankt. Mit Schwankungen ~+10. Ich kann mir nicht erklären woher das kommt. Der Controller läuft mit internen 8MHz RC Oz. Hab ich irgendwo einen logischen Fehler?
Ich kann keine Fehler entdecken, die sich auf die Schwankungen auswirken würden, aber ;) : - dein Error-Handling funktioniert so wahrscheinlich nicht: bei "//wenn das signal wegfällt" musst du die ganze Messung neustarten oder abbrechen (können). Außerdem sind 8 Overflows nur haarscharf über 2ms:
(und 2,5ms High-Pegel sind wohl durchaus bei manchen Empfängern möglich) und es kann fast 20ms bis zur ersten Flanke dauern -- das ist wichtig, falls "signal_calc()" öfter als 50 Mal pro Sekunde aufgerufen wird. - ein Overflow bei einem 8-Bit-Timer kommt nach 256 (0x100) Schritten: >> erg = (overflow * 0xff) + end - begin; //Signal ausrechnen ist falsch > erg = (overflow * 256) + end - begin; ist besser - die Deklarationen der globalen Variablen fehlt im geposteten Code (wird aber korrekt sein (volatile o.ä.), da du Ergebnisse bekommst) Sind Schwankungen um +-10 wirklich so schlimm? Das wären doch nur 80 AVR-Takte: 10 * Prescaler *1/8MHz = 1e-5 = 10µs Das Servosignal dauert AFAIK 1-2ms, was bedeutet, dass du Schwankungen um 1% hast - bist du sicher, dass das nicht 'normal' ist (Toleranzen beim Empfänger etc.)? Abgesehen davon stimmt der Absolutwert bestimmt nicht (das attiny24/44/84 Datenblatt, das ich hier hab, sagt "Factory Calibration Accuracy +-10%", bei 3V und das sowohl Vcc also auch Temperatur-abhängig). genug der besserwisserei ;) hth. Jörg ps.: ich arbeite noch an einem Gegenentwurf ;)
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.