Forum: Mikrocontroller und Digitale Elektronik Timer - timing nur korrekt mit Offset


von Modellbauer (Gast)


Lesenswert?

Hallo,

ich arbeite gerade für meinen Modellbau-Verbrenner an einer 
Zündsteueranlage.
Soweit habe ich das ganze soweit hinbekommen.
Die Kurbelwellenstellung wir bei originaler Zündimpulsauslösung mit 
einem Optokoppler eingelesen, der den ICP des Atmega8 auf Masse zieht.
Über das ICP wird der Timerwert zu diesem Zeitpunkt eingelesen. Bei 
nächster Umdrehung erneut und es wird dann die Zeitdifferenz zwischen 2 
Zündungen ermittelt.
Über einen weiteren Optokoppler reiche ich das Signal entsprechend der 
gemessenen Zeitdifferenz an die originale Zündung (momentan unverändert, 
später zeitoptimiert) weiter.
Nun habe ich das Problem, dass der Verbrenner nur sauber läuft, wenn ich 
der gemessenen Zeit(differenz) einen Offset auferlege in Richtung 
geringerer Zeit.
Der Offset (welches ich empirisch geschätzt ermittelt habe) liegt bei 
gerade mal in Bereich von ca. 100µs, welche aber selbst für 2 
Optokopplerschaltzeiten und die paar Zyklen zum Interrupt anspringen 
wohl zuviel sind, oder?

Mit dem Offset läuft der Verbrenner bei jeder Drehzahl rund und 1A, d.h 
die generelle Zeitdifferenzmessung müsste soweit stimmen, auch die 
Timer-Überläufe sind entsprechend behandelt, sonst gäbe es mit Offset ja 
auch Probleme.
Wie schon gesagt, das Offset habe ich durch versuchen ermittelt und 
gehört/gefühlt, wo der Verbrenner sauber hochdreht. Ohne Offset erhalte 
ich eine Art stottern, sprich die Zündung kommt zu spät.
Woran könnte das Offset liegen? Ich hätte eher mit ca. 10µs für die 
beiden Optokopplerschalterzeiten und nochmal ca. 5µs für ein paar Takte 
den letzten Befehl abzuarbeiten und das Interrupt anzuspringen 
gerechnet.
Als Optokoppler verwende ich einen CNY17-3. Der Atmega8 läuft mit 
externem Quarz 8Mhz, der Timer läuft ohne Prescaler für höchste 
Auflösung.

Für Ideen wäre ich dankbar.

Euer Modellbauer

von Stefan E. (sternst)


Lesenswert?

Modellbauer schrieb:
> Bereich von ca. 100µs, welche aber selbst für 2
> Optokopplerschaltzeiten und die paar Zyklen zum Interrupt anspringen
> wohl zuviel sind, oder?

Bei ICP spielen Interrupt-Latenzen keine Rolle. Es sei denn du machst 
irgendwelche Dummheiten, wie in der ISR den Timer auszulesen, statt des 
Capture-Wertes, oder den Timer auf Null zu stellen, oder ...

Tja, wie so oft, zeig den Code, dann bekommst du vielleicht auch 
konkrete Hinweise, statt Rumgerate.

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
Noch kein Account? Hier anmelden.