Forum: Mikrocontroller und Digitale Elektronik Frequenzsignal am Controller aufarbeiten ?


von Thomas W. (ram99)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein kleines Problem mit zwei Signalen von einem Zündverteiler.
Im Anhang seht ihr ein Bild, welches ich mit dem Oszi aufgenommen habe. 
Im Grunde muss ich die steigende Flanke von beiden Signalen mit meinem 
ATMega32 16MHz erkennen. Das wollte ich mit den ext. Interrupts machen. 
Das dumme, mein Signal hat noch so einen komischen kurzen Impuls während 
der Low-phase. Dieser kurze High-Impuls sollte ignoriert werden. Es 
sollen nur die Flanken mit den roten Pfeilen erkannt werden. Auf die 
steigende Flanke wird ein Timer gestartet.
Die Frequenz des Signals (rote Linie) variiert je nach Drehzahl zwischen 
3 - 50 Hz.
Einen wirklichen Ansatz habe ich momentan noch nicht. Hat jemand von 
euch einen Lösungsvorschlag.

Gruß
Thomas

von Hartmut (Gast)


Lesenswert?

Hallo Thomas,

was ist den Dein Ziel dieser Impulsauswertung?
wenn Du einen Drehzahlmesser haben willst dann zähl jede Flanke und 
halbiere dann die die Anzahl !?
oder werte die H-Zeiten aus und ignoriere eine von beiden zum 
syncronisieren und werte dann auch nur jede zweite Flanke aus;

Gruß Hartmut.

von runtastic (Gast)


Lesenswert?

Bei 3-50Hz polle die Signale. So bist Du auch resistenter gegenüber 
hochfrequenten Störungen. Siehe die Endlosdebatten in diversen 
Quadraturdecodern.

Einfach die zu kurzen Störungen wegfiltern.
Je nach dem kann es günstiger sein die Zeiten zwischen 2 gültigen 
Impulsen zu messen oder die Anzahl Impulse pro Zeiteinheit.

von Stefan (Gast)


Lesenswert?

Aber wenn er die zu kurzen Impulse weg filtert (wie auch immer), dann 
erkennt er die langen Impulse entsprechend verzögert.

@Thomas: Ist diese Verzögerung tolerierbar?

von Jörg K. (joergk)


Lesenswert?

Ich hätte einen etwas anderen Vorschlag:
Ich gehe mal davon aus, daß Du nach einer "richtigen" positiven Flanke 
eine Zeitverzögerung startest, um nach Ablauf dieser Zeit ein Ereignis 
auszulösen.
Wenn diese Verzögerung länger ist als die Länge der Störimpulse, kann 
man das Ganze sehr einfach lösen:
- Mit positiver Flanke Timer starten (auch wenns ein falscher ist)
- Fällt das Eingangssignal zu früh wieder auf Null, wars ein Störimpuls, 
also setze den Timer wieder zurück
Hiermit hast Du keine verfälschende Zeitverzögerung

Sollte meine obige Annahme nicht stimmen (also Länge der Störimpulse 
größer als Deine gewünschte Verzögerung, muß man anders rangehen.

Jörg

von Thomas W. (ram99)


Lesenswert?

Hi,

ich erkläre kurz was ich mit dem Signal machen sollte. Die Signale 
steuern Einspritzdüsen, je Signal ein Düsenpaar. Die High-Flanke ist das 
Signal zum Start der Einspritzung. Abhängig von den Motorsensoren wird 
die Einspritzdüsen zwischen 3-18ms angesteuert.
Ich brauche also direkt die High-Flanke ohne große Verzögerung.

Gruß
Thomas

von Jörg K. (joergk)


Lesenswert?

Dann gehts nur etwas aufwändiger:
Zähler mit z.B. 1000facher Frequenz der geringsten Frequenz laufen 
lassen und mit den "richtigen" Impulsen synchronisieren (so wie in 
meinem Vorpost beschrieben).
Dann hast Du durch den Zählerstand ein Kriterium zum Auslösen der 
Einspritzventile. Theoretisch hängst Du eine Motorumdrehung hinterher, 
das sollte aber nichts machen, da sich die Drehzahl von einer zur 
nächsten Umdrehung ja nur unwesentlich ändert.
Jörg

von Matthias L. (Gast)


Lesenswert?

>ich erkläre kurz was ich mit dem Signal machen sollte. Die Signale
>steuern Einspritzdüsen, je Signal ein Düsenpaar. Die High-Flanke ist das
>Signal zum Start der Einspritzung. Abhängig von den Motorsensoren wird
>die Einspritzdüsen zwischen 3-18ms angesteuert.
>Ich brauche also direkt die High-Flanke ohne große Verzögerung.

Nein. Damit erklärst du, was das Signal zur Zeit tust. Was du mit (dem 
roten auf das Oszibild gemalten) Signal machen willst, ist nicht 
bekannt.

von Stefan (Gast)


Lesenswert?

Ich verstehe das jetzt so, dass beim "richtigen" Impuls die 
Einspritzdüse sofort für die Dauer von 3-18ms angesteuert werden soll.

Sofort geht aber nicht, nichtmal ungefähr, denn es braucht zeit, die 
richtigen Impulse von den falschen zu unterscheiden.

Einen Lösungsansatz hat Jörg schon genannt: Die Ansteuerung der Düsen 
noch viel weiter verzögern, nämlich um eine Motorumdrehung. Ich nehme 
an, dass es sich um einen 4-Takt Motor handelt, dann wären ZWEI 
Umdrehungen Verzögerung richtig, denn es wird immer abwechselnd 
eingespritzt und ausgeblasen.

Ein anderer Lösungsansatz, den ich von meinem Motorrad bezüglich der 
Transitorzündung kenne ist, den Impulsgeber so zu verdrehen, dass er die 
Impulse immer deutlich früher abgibt, als gezündet werden soll, um 
verzögerungen in der Elektronik auszugleichen.

Da fällt mir gerader auf: Die Signale kommen vom Zündverteiler. Ich 
bezweifle daher sehr, dass diese Impulse zeitlich exakt den zeitpunkten 
entsprechen, wo eingespritzt wird. Genau genommen muss der 
Einspritzvorgang doch schon eine ganze Umdrehung vor der Zündung 
stattfinden, oder nicht?

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.