mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Erkennung/Unterscheidung verschiedener Impulsbreiten


Autor: Heiko Domnick (heiko-d)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Da ich gerade an einer elektronischen (verteilerlosen) Zündung arbeite 
die mit Einzelfunkenzündspulen arbeitet bin ich bei der Auswertung des 
Triggersignals vor ein Problem gestoßen bei dem ich mit meinen 
Kenntnissen nicht ganz weiter komme. Ich versuche erst mal zu 
beschreiben um was es überhaupt geht;

Auf der Kurbelwelle eines Motors sitzt eine Impulsgeberscheibe um den 
Kurbelwellenwinkel zu erfassen. Sie besitzt eine Vielzahl von Zähnen, 
sehr häufig werden 60 Zähne verwendet wovon 2 ausgelassen werden, also 
eigentlich 58. Die Lücke dient dazu den Winkel der Scheibe dem 
entsprechenden Zylinder zuordnen zu können, wenn die Lücke im 
Triggersensor steht weiß das Motorsteuergerät dass der 1. bzw. 4. 
Zylinder auf dem obersten Totpunkt (OT) stehen. Gezündet wird 20-40° vor 
OT, aber das ist ein anderes Problem. Der Trigersensor liefert ein 
Rechteck-Signal von 0V (kein Zahn) oder 10V (Zahn liegt vor Sensor).

Mein Problem ist nun eine Schaltung zu entwickeln mit der Ich den 
OT-Punkt aus den anderen Impulsen der Triggerscheibe herausfiltern kann 
um ihn sozusagen als "Reset-Impuls" für meine Zündschalltung zu nutzen. 
Die Schaltung muss also die durch die zwei fehlenden Zähne erzeugte 
Lücke erkennen können. Ich hatte mir schon eine Variante mit einem 
RC-Glied und einem NAND-Gatter überlegt bei dem bei positivem Signal des 
Triggersensors der Kondensator auf ein bestimmtes Potential geladen wird 
bis der Sensor auf "0" geht, dann muss der Kondensator innerhalb der 
Aufladezeit auch wieder entladen werden, tut er das nicht wird die Lücke 
erkannt. Ich glaube allerdings dass das ganze nicht funktioniert weil 
die Impulsbreite drehzahlabhängig ist und mit steigender Drehzahl die 
Impulse immer kürzer werden. Wer also eine andere Idee oder Lösung hat - 
immer her damit

Danke & Viele Grüße

Autor: karadur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Idee: mit den Impulsen eine PLL steuerern die auch einen Ausgangspuls 
erzeugt wenn der Zahn fehlt. Den PLL-Ausgang als Takt für ein 
D-Flip-Flop verwenden. Den D-Eingang des Flip-Flops mit den Zahnpulsen 
versorgen. Sollte bis auf den fehlenden Zahn immer eine 1 am Ausgang 
liefern. Beim fehlenden Zahn eine 0.


Das geht natürlich auch mit einem uC.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich glaube allerdings dass das ganze nicht funktioniert weil
>die Impulsbreite drehzahlabhängig ist und mit steigender Drehzahl die
>Impulse immer kürzer werden. Wer also eine andere Idee oder Lösung hat -
>immer her damit

Das ist das Problem.

Ich sehe auf die Schnelle zwei mögliche Lösungen:

1)
Eine andere Scheibe, in der du nur die 6° Teilung hast. Also zweite Spur 
ein extra Markierung, die dir die Null-Marke anzeigt. Das ist ähnlich 
wie die Nullspur bei einem Drehgeber.

2)
Einen zweiten Triggersensor, um >15Grad (aber vielfache von 6°) 
gegenüber dem ersten versetzt. Somit sollten beide Sensoren immer (fast) 
zugleich kommen, fehlt aber der eine, so ist dort die Null-Markierung 
da.

Hinweis: Egal wie du es lösen tust, die Nullmarkierung zu Erkennen, 
indem du das Fehlen der 6°-Teilung erkennst (weil die Lücke größer ist) 
kann du immer nur nach diesen 6°. Eher wirds es nie..

Autor: Heiko Domnick (heiko-d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon mal danke für die schnellen Antworten. Leider bin ich nicht so 
sehr bewandert was die Digitaltechnik angeht, ich kenne mich zwar mit 
Gattern aus aber alles andere ist mir eher fremd.

@karadur: Was ist denn ein PLL?

@Mathias: Eine zweite Scheibe kommt nicht in Frage da so wenig wie 
möglich von dem ganzen zu sehen sein soll, zudem gäbe es auch noch die 
Möglichkeit den Nockenwellensensor mit zu verwenden, er Liefert pro 720° 
Kurbelwellenumdrehung nur einen einzigen Impuls wenn der 1. Zylinder auf 
OT steht, also eigentlich das was ich bräuchte - ABER der Motor der mit 
der Zündung gesteuert werden soll sitz in einem allten Kadett C und der 
Nockenwellensensor würde mit der Spritzwand kollidieren, d.h. man müsste 
das Blech ausschneiden. Das möchte ich allerdings nicht und deshalb nur 
das Triggerrad auf der Kurbelwelle verwenden. Dies sitzt im Übrigen im 
inneren des Motorsblocks und ist von außen nicht sichtbar.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst dich nicht rechtfertigen bei mir... ;-)

Ich meinte nicht, eine zweite Scheibe, sondern eine andere .

Dann nimm meinen zweiten Vorschlag und bau nen zweiten Sensor dran. 
Somit sollte das gehen.
Aber:
>Leider bin ich nicht so
>sehr bewandert was die Digitaltechnik angeht, ich kenne mich zwar mit
>Gattern aus aber alles andere ist mir eher fremd.

Keine guten Vorraussetzungen...

Autor: Heiko Domnick (heiko-d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen zweiten Sensor anbauen wird nicht gehen, der Sensor sitzt im 
Motorblock in einer Passung. Da ist kein Platz für einen zweiten 
Sensor...

Autor: Thomas W. (wagneth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, ich denke mal das der Hersteller Deiner Einspritz/Zündanlage (die 
wohl vorher verbaut war) das auch schon "gelöst" hat,
ohne zusätzliche Hardware...

Im Endeffekt wird doch nur die Zeit von Lücke zu Lücke gemessen und mit 
der letzten verglichen.
(resp. kann man auch den Mittelwert der dt's zum vergleichen nehmen,
wenn sie Scheibe Beschleunigt/verzögert je nach Betriebspunkt)


Ist das dt größer als das letzte dt,
bedeutet das daß die 2-Zahn-Lücke unter deinem Hallgeber 
vorbeigeschuscht ist.

Allerdings müsstest Du die ev. Beschleunigung Deiner Scheibe 
berücksichtigen.

-Dein dt ist nebenbei 1/proportional zur Drehzahl.
-Timeout von dt bedeutet Scheibe dreht nicht.
-Die 2-Zahn-Lücke ist bei Motronic-steuerungen meistens 76° KW vor OT.
 Somit hat man genug Zeit noch ein wenig zu rechnen bevor man Zündet 
oder Sequentiel einspritzt.

Was soll es denn werden ?

Autor: Thomas W. (wagneth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS : Es gibt da auch schon fertige IC die die Dekodierung machen.
Glaube ich habe bei MegasquirtAVR sowas schonmal gesehen...

Autor: Heiko Domnick (heiko-d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

du scheinst ja zu wissen worum es geht :D Das ganze wird ein 2,0l 16V in 
einem Kadett C mit Doppelvergasern, deshalb auch die aufwendige Zündung. 
Man könnte das ganze auch mit einem Zündverteiler fahren, den muss man 
dann jedoch versetzten, umlenken oder die Spitzwand kaputt schneiden. 
Außerdem sollen möglichst wenig Kabel zu sehen sein.

Deine Idee mit dem Mittelwert hört sich gut an, nur bei der Umsetzung 
haperts bei mir :(

Autor: Thomas W. (wagneth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Och...

Also der c20xe wie er im Kadett war hatte zusätzlich einen Verteiler mit 
Hallgeber.
Darüber war die Phasenlage der Nockenwellen bekannt.

Bist Du dir sicher das bei deinem Geber der im Block sitzt es sich um 
einen Hallgeber handelt ???
Normalerweise steckt da ein Induktivgeber drin...

Ich würde mir als erstes mal Gedanken machen wie meine Zündung später 
"aussehen" soll.

Verteiler, verteilerlos, Einzelfunken, Doppelfunken dann wäre das 
Stichwort DIS.
Gabs beiden x16xz Motoren im Astra (die mit 72PS).
Sowas könnte ich mir durchaus auch an einem 16v vorstellen.

Allerdings kannst Du beim DIS (wo die Endstufen schon in der Zündspule 
integriert sind) den Zündwinkel nicht so stark variieren,
da Du sonst bei dem anderen Zylinder in den Ansaugtakt funkst.
(kommt auch drauf an was Du für Nockelwellen fahren willst...)

Allerdings musst Du sehr vorsichtig sein, der Motor nimmt Dir falsche 
Zündwinkel sehr übel.


Für den Anfang würde ich mir erstmal einen µC mit einer 
Eingangsbeschaltung und ein paar LEDs zurechtlöten.

Und die "Software" am Motor testen.
(es reicht wenn Du Anlasserdrehzahl (ca 200-450 upm) und die Lücke 
sicher detektierst.

Versuche doch erstmal nur den Zeitabstand zwischen den Zähnen zu messen.
Das geht mit einen Timer und minimal Mathematik.

Danach machen wir uns an die Lücke...

Autor: Heiko Domnick (heiko-d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dass der Verteiler einen Hallgeber hatte weiß ich, das ist aber oben 
genanntes Problem. Der Ventildeckel und damit auch der Sitz des 
Verteilers sitzt 2 cm vor der Oberkannte der Spritzwand, entweder man 
schneidet diese für den Zündverteiler aus oder man dreht den 
Zündverteiler und treibt ihn über einen Zahnriemen an. Beides Lösungen 
die ich nicht für elegant hallte. Ich habe bereits 
Einzelfunkenzündspulen in Steckerform die ich auch schon bei anderen 
C20XEs verbaut habe, eine passende Endstufe mit MosFETs habe ich mir 
auch gebaut, allerdings habe ich diese bisher über ein frei 
programmierbares Steuergerät gesteuert (Haltech E6X). Da der Motor im 
Kadett aber mit Vergasern gefahren wird wird das einzigste was neben 
Licht und Anlasser noch mit Strom zutun hat die Zündung sein.

Diese werde ich wie bei einer Doppelfunkenspule immer paarweise 
ansteuern, also 1+4 oder 2+3. Einzigster Vorteil zur Doppelfunkenspule - 
Ich habe keine externe Zündspule und muss nur die dünnen Kabel der 
Primärspule herausführen...

Ich werde wie du vorschlägst wol erst mal einen solchen Versuchsaufbau 
machen und dann berichten. Schon mal danke für die schnelle Hilfe und 
die vielen Antworten!

Autor: Thomas W. (wagneth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm,
also die Nummer mit dem Zahnriemen, bzw Spritzwand  halte ich auch für 
äusserst "ungünstig" ;)

Ev. liesse sich ein zusätzlicher Hallgeber mit einer der Nockenwellen in 
den Ventildeckel einlassen !?

Für einen 8V hätte ich da eine Idee...

Für mich :

-Aus welchen Auto und Bj ist denn der Motor ? (ich frage wegen dem 
Hallgeber KW)
-Was für (Finger?-) Zündspulen verwendest Du ?

Autor: Heiko Domnick (heiko-d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt ja sogar einen passenden Nockenwellensensor für die Motronic 
bzw. den 16V von Opel, es gab ja die Motronic M2.5 (mit dem schwarzen 
Verteiler) und die M2.8 (Vertielerlos) da saß dann anstelle des 
Verteilers ein Block mit dem Geber im Zündverteilerloch. Ist aber immer 
noch zu breit bzw. steht zu weit raus ohne mit der Spitzwand zu 
kollidieren.

Ich hatte auch schon überlegt einen Nockenwellensensor selber zu bauen, 
Platz ist auf jeden Fall genug. Aber wenn es sich umgehen läßt möchte 
ich das ganze möglichst ohne diesen betreiben.

welches Baujahr der Motor hat kann ich dir nicht sagen, habe bestimmt 4 
oder 5 Motoren in meiner Werkstatt stehen, die meisten allerdings 
C20LETs also 16V Turbos aber die sind absolut identisch. Grundsätzlich 
sind bei Opel ja alle Big-Block-Motoren gleich, also egal ob 8V oder 16V 
der Block ist der selber, somit auch die Kurbelwelle (wenn 2000cm²) und 
der Kurbelwellensensor...

Die Zündspulen stammen vom Motorrad, passen genau in den Ventildeckel 
und dichten Sogar mit der angebrachten Gummidichtung die 
Zündkerzenbohrung ab...

Autor: Heiko Domnick (heiko-d)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch ein Bild der Zündspulen...

Autor: karadur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

PLL heisst Phase locked Loop. Das ist ein Oszillator der mit einem 
Referenzsignal synchronisiert wird. Die PLL läuft synchron zum 
Zahnimpuls. Fällt ein Impuls aus läuft der Oszillator trotzdem mit der 
gleichen Frequenz weiter. Durch die Synchronisation läuft der Oszillator 
mit der Frequenz der aktuellen Drehzahl.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachdem die Drehzahländerung nicht sehr schnell erfolgen kann/wird, 
würde ich das so machen:
Mit einem uC bei jedem Zahn-Impuls
- wird der Zählerwert gespeichert
- wird der Zähler neu gestartet
- wird der Zähler mit dem vorher berechneten Zählergrenzwert verglichen
  und der Trigger ausgelöst,
                  wenn der aktuelle Zähler größer als der Grenzwert ist
  sonst nur der neue Grenzwert berechnet wird (hier einfach Faktor 2)
  if (zahnimpuls) {
    trigger = 0;           // erst mal Trigger löschen
    cnt_akt = timer;       // aktuellen Timerwert auslesen
    timer   = 0;           // Timer zurücksetzen
    if (cnt_akt > cnt_og)  
       trigger = 1;        // zu große Pause --> Trigger 
    else                 
       cnt_og = cnt_akt*2; // sonst neuen Grenzwert berechnen
  }

Autor: Heiko Domnick (heiko-d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller wrote:
> Nachdem die Drehzahländerung nicht sehr schnell erfolgen kann/wird,

Das einzigste Problem sehe ich noch darin dass sich die Drehzahl 
schlagartig ändern könnte bzw. wird wenn die Räder durchdrehen, dann 
würde die Drehzahl sehr schnell nach oben schießen. Bekommt der uC dass 
dann auch noch geregelt?

Autor: Thomas W. (wagneth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Heiko,


Schau mal wie lange es dauert wenn Du den Motor vom Leerlauf bis auf 
6400 upm hochdrehen läst (leer).

Das wäre dann deine Maximale Änderungsgeschwindigkeit der Drehzahl die 
Du in Deinem Algo berücksichtigen musst.

Ausserdem misst Du immer nur von Zahn zu Zahn,
dadurch verringert sich die Maximale Änderung da die 
Änderungsgeschwindigkeit nur auf 1/60 wirkt...

Bist Du aus der Umgebung von FFM ?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heiko Domnick wrote:
> Lothar Miller wrote:
>> Nachdem die Drehzahländerung nicht sehr schnell erfolgen kann/wird,
> Das einzigste Problem sehe ich noch darin dass sich die Drehzahl
> schlagartig ändern könnte...
Thomas W. (wagneth) hat das richtig erkannt:
Für eine schlagartige Drehzahländerung brauchst du einen Kolbenfresser,
am besten zusammen mit Kurbelwellenbruch   ;-)

Autor: Thomas W. (wagneth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ein "normaler" fresser reicht da nicht aus...

Dabei schmilzt nur ein bisschen was vom flammsteg ab,
ev. frisst auch die Zylinderwand ein wenig.

Autor: Heiko Domnick (heiko-d)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Thomas W. wrote:
> Also ein "normaler" fresser reicht da nicht aus...
>
> Dabei schmilzt nur ein bisschen was vom flammsteg ab,
> ev. frisst auch die Zylinderwand ein wenig.

Kommt mir irgendwie sehr bekannt vor was du da beschreibst :(
Komme aus dem Raum Köln...

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.