Forum: Mikrocontroller und Digitale Elektronik Schaltung zur Simulation zweier Impulsgeber


von Murkel (Gast)



Lesenswert?

Hallo zusammen,

um alte Motoren-Steuergeräte von Magneti Marelli (Typ IAW aus den 80er 
Jahren) am Schreibtisch prüfen zu können (HiL), benötige ich einen 
Signalgenerator, der die Signale der beiden Pickups (onduktive Sensoren) 
erzeugt.
Die weiteren Signale (Widerstandswerte entsprechend 
Drosselklappenwinkel, und Temperaturen/Luftdruck) sind einfach per Poti 
darstellbar.

Für die Ansteuerung dieser Steuergeräte gibt es auf der Schwungscheibe 
der Kurbelwelle vier "Nasen" im Abstand von 90° zueinander. Damit das 
Steuergerät weiß, bei welcher Nase der Kolben in einer bestimmten 
Position (z. B. Oberer Totpunkt - OT) steht und ob es sich um den 
Zünd-OT oder den Ausstoß-OT handelt, gibt es noch einen zweiten Sensor, 
der an der Nockenwelle pro Umdrehung einen Impuls gibt.

Das Steuergerät sieht also vom KW-Sensor immer acht Impulse, bevor der 
NW-Sensor einen Impuls abgibt. Zur Verdeutlichung habe ich zwei 
Oszilloskop-Bildschirmaufnahmen angehangen: Auf dem ersten Bild sind 
etwa vier Kurbelwellenumdrehungen zu sehen, auf dem zweiten Bild ein 
Ausschnitt,   damit man den Signalverlauf und die gleiche Höhe der 
Impulse erkennen kann. Die Skalierung beträgt dabei 5V/Div und 20 ms/div 
bzw. 5ms/div.

Nun zu meiner eigentlichen Anfrage: Hat jemand von Euch einen Vorschlag, 
wie man mit einfachen Mitteln (für mich heißt das: Lochrasterplatine, 
gut erhältliche Bauteile, Kleinspannungen oder PC ohne besondere 
I/O-Hardware) zu einem Generator kommen kann, der das gewünschte Signal 
erzeugen kann?

Zwei Hauptwege sehe ich:

1. Mit PC und Soundkarte. Dahinter einen Verstärker (z. B. LM3886), um 
auf die entsprechenden Spannungen zu kommen.
Zwei Kanäle hat jede Stereo-Soundkarte und der Verstärker muss an einem 
Eingangswiderstand der ECU von 77 kOhm nur wenig Strom liefern.
Für diesen Weg habe ich aber das Problem, dass ich keine Software 
habe/kenne, die an den beiden Ausgängen beliebige Signalformen (bei mir 
also das o. g. Signal) mit variabler Frequenz (Leerlauf etwa 800 1/min 
entspricht 53 Hz für den KW-Sensor und 6,6 Hz für den NW-Sensor; 
Max-Drehzahl von 9000 1/min entspricht 600 Hz KW-Sens. und 75 Hz 
NW-Sens.) bereitstellt. Von der Problematik des in der Soundkarte 
eingebauten Hochpasses mit fc von schätzungsweise 15 Hz ganz zu 
schweigen.

2. Mit Logikbausteinen (NE555) und Frequenzteiler die benötigten Signale 
auf Logikpegel erzeugen und dann geeignet (Monoflop?) die Signalflanke 
bearbeitet, um der ECU ein ähnliches Signal zu liefern. Dahinter dann 
wieder entsprechend verstärken, um auf die Spannungshöhe zu kommen.
Aber auch hier habe ich ein paar Probleme: Der Frequenzteiler kann aus 
T-Flip-Flops gebaut werden. Solche gibt es aber weder als IC zu kaufen, 
noch ist es als Macro im von mir verwendeten Tina-Ti Simulationsprogramm 
vorhanden. Die verfügbaren Flip-Flops müssen also erst geeignet 
verschaltet werden, um dann eingesetzt werden zu können. Wird also als 
ungeübter in el. Simulationsprogrammen etwas aufwändig.

Kann mir hier jemand mit guten Lösungen für meine Stoperstellen helfen 
oder hat eine andere Idee? Hat vielleicht sogar jemand einen 
Schaltungsvorschlag, den ich dann einfach nachbauen kann?

Danke für Eure Hilfe!
Murkel

von Yalu X. (yalu) (Moderator)



Lesenswert?

Murkel schrieb:
> Für diesen Weg habe ich aber das Problem, dass ich keine Software
> habe/kenne, die an den beiden Ausgängen beliebige Signalformen (bei mir
> also das o. g. Signal) mit variabler Frequenz (Leerlauf etwa 800 1/min
> entspricht 53 Hz für den KW-Sensor und 6,6 Hz für den NW-Sensor;
> Max-Drehzahl von 9000 1/min entspricht 600 Hz KW-Sens. und 75 Hz
> NW-Sens.) bereitstellt.

Die Software müsstest du evtl. selber schreiben. Ich würde dann aber
einen Mikrocontroller präferieren, da auf diesem das ganze Timing
leichter zu programmieren ist. Über einen ADC könnte man ein Poti
anschließen, mit dem die simulierte Drehzahl vorgegeben wird.

> Der Frequenzteiler kann aus T-Flip-Flops gebaut werden. Solche gibt es
> aber weder als IC zu kaufen, noch ist es als Macro im von mir
> verwendeten Tina-Ti Simulationsprogramm vorhanden.

Du kannst dafür auch D- oder JK-Fliplops nehmen, oder am besten gleich
einen fertigen Binärzähler.

Ich habe mal angefangen, so eine Schaltung in LTspice zusammenzubasteln.
Die Schaltung erzeugt zwei Dreiecksignale (DR1 und DR2) mit gleicher
Amplitude und einem Frequenzverhältnis von 8:1. Die Frequenz kann an
einem Poti eingestellt werden. Dieses ist in LTspice implementiert als
R1a und R1b, wobei über den Parameter P1 die Potistellung zwischen 0 und
1 vorgegeben werden kann. Alternativ kann man an den nichtinvertierenden
Eingang von U1 ein Signalgenerator angeschlossen werden, mit dem dann
Drehazhlprofile erzeugt werden können. 1V entspricht dabei etwa einer
Drehzahl von 1000/min.

Die Phasenlage der beiden Dreiecksignale zueinander kann mit dem Poti
R8a/R8b eingestellt werden. In Mittelstellung fällt der Nockenwellen-
impuls etwa mit einem der vier Kurbelwellenimpulse zusammen. Von da aus
kann die Phase um ±180° (bezogen auf die Frequenz der Nockenwellenimpul-
se) verstellt werden.

Bei den Sensoren handelt es sich vermutlich um einfache Spulen mit
magnetisiertem Kern ohne weitere Auswerteelektronik. Die induzierte
Spannung ist proportional zur zeitlichen Ableitung des Magnetfelds.
Diese kann mit einem Opamp-Differenzierer oder — wie in der Schaltung —
mit einem RC-Hochpass realisiert werden.

Dis Stärke Magnetfelds hat einen glockenförmigen Verlauf: Bei Annäherung
der Nase nimmt sie zu, erreicht ihr Maximum, wenn die Nase genau vor
dem Sensor steht, und nimmt danach wieder ab. Die Glockenkurve kann
bspw. mit den Funktionen

oder

erzeugt werden. In der Schaltung habe ich letztere verwendet, allerdings
hatte ich noch keine Muße, sie aus Bauteilen zu implemntieren und habe
stattdessen in Spice jeweils eine entsprechend konfigurierte B-Quelle
genommen. In der endgültigen Schaltung könnte man die Funktion entweder
mit Analogrechenschaltungen (ein Addierer und zwei Multiplizierer) rea-
lisieren oder mite einem pfiffigen Netzwerk mit nichtlinearen Bauteilen
(z.B. Dioden) annähern.

An dem gestrichelt umrahmten Schaltungsteil müsste also noch gearbeitet
werden. Auch bei der Bauteilauswahl und der Versorgungsspannung kann
sicher noch etwas optimiert werden. Die Opamps U4 und U5 sollten aber
auf jeden Fall Rail-to-Rail-Ausgänge haben.

Insgesamt funktioniert die Schaltung in der Simulation aber schon ganz
passabel, wie die Bilder im Anhang zeigen. Die ersten beiden Bilder
zeigen die Situation, die du mit dem Oszi aufgenommen hast (ca. 1180/min
bzw. 1250/min). Für die beiden anderen Bilder wurde die "Drehzahl" mit
dem Poti R1a/R1b auf 2500/min erhöht. Man sieht, dass sich die Signal-
amplitude etwa verdoppelt. Das sollte in Realität auch so sein, da die
in den Sensorspulen induzierte Spannung porportional zur Geschwindigkeit
der Nasen ist. Die Phasenlage des Nockenwellenimpulses bleibt in etwa
die gleiche, ohne dass sie am Poti R8a/R8b nachgestellt werden muss.

von MaWin (Gast)


Lesenswert?

> LM3886

brauchst du nicht, so stark sind die Impulse der Sensorspule nicht.

> NE555

ist eine gute Idee, schicke den einstellbaren Takt in einen CD4022.

Der teilt durch 8.

Nun noch aus dem NE555 Takt (kurze Nadelimpulse per Kondensator auf eine 
Widerstand) und den CD402 Ausgang (beliebig, sagen wir Q0, gösserer 
Widerstand) ein Signal mischen (musst du überhaupt mischen, sind das 
nicht 2 Eingänge ?).

von Mischmasch (Gast)


Lesenswert?

Wenn es schnell gehen muss, dann nimm einen Arbitrary Waveform 
Generator.

von Michael W. (miwitt001)


Lesenswert?

Der der ursprünglichen Signale nach zu urteilen, handelt es sich um 
VR-Sensoren. Das ist im Prinzip ein Magnet mit einer Spule 
darumgewickelt. Diese Sensoren werden oft für genau den von dir 
geschilderten Fall verwendet (Kurbelwellensensor).
Nähert sich die "Nase" der Kurbelwelle, ändert sich der Magnetische 
Fluss und eine Spannung wird induziert (dein Sensorsignal).

Diese Sensoren werden normalerweise so ausgewertet, dass das Steuergerät 
auf die fallende Flanke triggert (die kommt genau in der Mitte der 
Nase).

Wahrscheinlich reicht es aus, wenn du Rechteckimpulse generierst und 
diese über einen C / Hochpass auf den Sensoreingang des Steuergerätes 
gibst. Dies wäre wohl die einfachste Variante.

mfg

von Murkel (Gast)


Lesenswert?

Guten Abend den vielen Leuten, die geantwortet haben. Vielen Dank für 
Eure Beiträge und Vorschläge. Sie helfen mir sehr weiter.

Auf die einzelnen Antworten gebe ich jetzt mal direkt meine Antwort und 
ggf. Fragen:

Yalu X. schrieb:
>
> Die Software müsstest du evtl. selber schreiben. Ich würde dann aber
> einen Mikrocontroller präferieren, da auf diesem das ganze Timing
> leichter zu programmieren ist. Über einen ADC könnte man ein Poti
> anschließen, mit dem die simulierte Drehzahl vorgegeben wird.

Nun, da habe ich wohl ein Problem. Mit dem Schreiben der Software müsste 
ich mich erstmal auf eine eine Programmiersprache festlegen, die dann 
auf verschiedenen Rechnern und Betriebssystemen läuft (sind sowohl Macs, 
als auch Windows-Rechner dabei, auch Linux-Notebooks habe ich zur 
Auswertung von Daten in der Werkstatt). Bliebe wahrscheinlich Java und 
da fehlt mir etwas die Routine und der Ansatz. Wenn das ganze dann auch 
noch grafisch bedienbar sein soll, hört es bei mir auf und bis ich mir 
die Grundlagen erarbeitet habe, hab' ich auch eine Schaltung aufgebaut.
Mit Mikrocontrollern hab eich gar keine Erfahrung und somit müsste ich 
mich auch da erst einarbeiten.

> Du kannst dafür auch D- oder JK-Fliplops nehmen, oder am besten gleich
> einen fertigen Binärzähler.

Ja, habe ich auch gelesen und in Deiner Schaltung kann man es ja auch 
erkennen. Für meine Zwicke (der Vorab-Simulation am Rechner) habe ich 
ein Äquivalent zum genannten CD4022 gefunden, den SN74LS93. Dieser ist 
in Tina-Ti enthalten. Das Teilen von Impulsen habe ich also dank Eurer 
Hilfe hinbekommen.

Jetzt zu Deiner Schaltung, Yalu. Vielen Dank für die Mühe! Ich versuche, 
die Schaltung zu verstehen und mit meinerm Simulationsprogramm 
nachzubauen. Was sind aber SW S1 und SW S2 sowie SW S3 und SW S4 für 
Bauteile? Sieht mir aus, wie ein Wechselrelais, gibt es so etwas auch 
als elektronisches Bauteil?

Ansonsten denke ich, dass die exakte Nachbildung der Signalform nicht so 
wichtig ist, denn auch die ECU wird dieses Signal ja intern wieder so 
formen müssen, dass es verwendet werden kann.


Nun eine kurze Antwort zu Dir, MaWin: Ja, Du hast völlig recht, der LM 
3886 ist überdimensioniert, denn bei dem Eingangswiderstand des 
Steuergeräts fließt nur ein sehr kleiner Strom. Wie oben schon 
geschrieben, habe ich den CD4022 auch als Bauteil von TI gefunden und 
damit simuliert. Sieht schon sehr gut aus. Mischen muss sich dabei 
nichts, beide Sensoren haben einen eigenen Eingang in der ECU.

Mischmasch, diese Idee hatte ich auch schon. Aber welcher (<500 €) 
Signalgenerator kann zwei unterschiedlich frequente Signale mit einem 
Verhältnis zueinander (Phasenlage) generieren? Mit der 
Frequenzteilerschaltung könnte man ja das Triggersignal für den zweiten 
Generator erzeugen, aber dann würde man schon zwei einzelne Arbitrary 
Waveform Generatoren benötigen. Die günstigen Teile von Velleman 
(PCGU1000) lassen sich nur sehr umständlich mit mehr als einem Gerät am 
PC bedienen.


Michael, auch Du liegst völlig richtig. Es sind preiswerte VR-Sensoren. 
Wie so oft in der KFZ-Technik werden die preiswertesten Verfahren 
genommen, die das gesetzte Ziel erreichen. Hall-Sensoren wären wohl für 
diese Anwendung zu teuer.
Dadurch erkauft man sich natürlich, dass man den Sensorabstand recht 
genau einstellen muss. Ist das Signal zu schwach (Abstand zu groß), gibt 
es einen schlechten Leerlauf, ist der Abstand zu gering, läuft der Motor 
bei hohen Drehzahlen schlecht bzw. erreicht seine Höchstdrehzahl nicht. 
Auch ist der Zündzeitpunkt leicht von dem Abstand abhängig.


Also nochmal: Ich habe schon sehr viel Hilfe bekommen und nähere mich 
meinem Ziel. Vielen Dank Euch!

Murkel

von Yalu X. (yalu) (Moderator)


Lesenswert?

Murkel schrieb:
> Nun, da habe ich wohl ein Problem. Mit dem Schreiben der Software müsste
> ich mich erstmal auf eine eine Programmiersprache festlegen, die dann
> auf verschiedenen Rechnern und Betriebssystemen läuft (sind sowohl Macs,
> als auch Windows-Rechner dabei, auch Linux-Notebooks habe ich zur
> Auswertung von Daten in der Werkstatt).

Muss das den unbedingt auf allen Rechnern laufen, reicht nicht einer?

> Was sind aber SW S1 und SW S2 sowie SW S3 und SW S4 für Bauteile?
> Sieht mir aus, wie ein Wechselrelais, gibt es so etwas auch als
> elektronisches Bauteil?

Ja, das nennt sich Analogschalter. Der CD4053 wäre ein Beispiel für
einen Dreifachumschalter.

> Ansonsten denke ich, dass die exakte Nachbildung der Signalform nicht so
> wichtig ist, denn auch die ECU wird dieses Signal ja intern wieder so
> formen müssen, dass es verwendet werden kann.

Es kommt halt darauf an, was du genau testen möchtest:

Geht es nur um den Mikcrocontroller in der ECU, ist die Signalform egal,
solange die Eingangsschaltung der ECU das Signal korrekt in Logikpegel
umsetzt. In diesem Fall müsste man aber zumindest ungefähr wissen, wie
das Signal umgesetzt wird, um zu entscheiden, was für ein Signal die
Nachbildung der Impulsgeber liefern muss: Reicht ein 5V-Logiksignal?
Oder muss auf einen positiven Impuls ein negativer folgen, weil die ECU
den Nulldurchgang auswertet?

Wenn du zusätzlich auch die Funktion der Eingangsschaltung der ECU tes-
ten möchtest, spielen vielleicht auch die minimale Impulsbreite und Amp-
litude des Signal eine Rolle, um sicherzustellen, dass das Einlesen über
den ganzen Drehzahbereich richtig erfasst wird. Dann sollte das nachge-
bildete Signal zumindest ungefähr dem realen entsprechen.

Noch ein anderer Vorschlag: Anstatt Software zu schreiben oder Elektro-
nik zusammenzulöten, könnest du einen kleinen Elektromotor zwei Kunst-
stoffscheiben mit einer bzw. acht Stahlschrauben (als "Nasen") antreiben
lassen und das gewünschte Signal mit echten Impulsgebern erzeugen.

von Murkel (Gast)


Lesenswert?

Yalu X. schrieb:
> Muss das den unbedingt auf allen Rechnern laufen, reicht nicht einer?

Hallo Yalu, stimmt vollkommen. Wäre eher eine Maximalforderung, wenn man 
denn mal eine funktionierende Lösung hat. Also ausreichend wäre sicher 
ein kleines Programm, dass auf der Konsole/DOS-Box läuft. Selbst eine 
grafische Oberfläche wäre hier nur ein Bonus, nicht aber nötig.
Also mal sehen, was Basic, C und Konsorten so an Soundausgabebefehlen so 
zu bieten haben. Vielleicht hilft mir ja auch MIDI weiter. Muss ich mich 
mal tiefer mit beschäftigen.

>> Was sind aber SW S1 und SW S2 sowie SW S3 und SW S4 für Bauteile?
>> Sieht mir aus, wie ein Wechselrelais, gibt es so etwas auch als
>> elektronisches Bauteil?

> Ja, das nennt sich Analogschalter. Der CD4053 wäre ein Beispiel für einen 
Dreifachumschalter.

Danke auch für diesen Hinweis. Ist ja echt interessant, was es da so an 
Logikbauteilen und -funktionen gibt.
Habe dann auch sofort Deine Schaltung nachgebaut und nach einigen 
Stolperstellen hat es dann auch geklappt.
Habe dazu aber dann noch eine Verständnisfrage:
Nach der Erzeugung des ersten Rechteck- bzw. später Dreiecksignals wird 
das Rechtecksignal in drei Flip-Flops durch 8 geteilt. Hat das Signal 
nach dieser Aktion nicht Logikpegel und die Analogschalter können dann 
nicht mehr bei 0,1 bzw. 0,5 V gegensinnig geschaltet werden?
Ich hab' es bei mir so gelöst, dass der zweite Schalter ein invertiertes 
Signal des TLL Rechtecksignals bekommt und dann bei etwa 1,6 V 
umschaltet.

Den Rest der Schaltung verstehe ich nach und nach und finde sie doch 
wirklich bemerkenswert und für die Problemstellung sehr gut geeignet. 
Respekt und danke dafür. Insbesondere, weil ja fast alles schon 
vordimensioniert (Werte der Bauteile) ist.

> Es kommt halt darauf an, was du genau testen möchtest:

Ja, darüber habe ich mich noch nicht ausgelassen: Ich möchte "von außen" 
(also ohne die applizierten Parameter aus dem EPROM auszulesen) die 
Funktionen der ECU und durch Änderung an einzelnen Parametern die 
Umsetzung der beinhalteten Gesetzmäßigkeiten ergründen. Die 
Eingangsschaltungen (Signalkonditionierung für die elektronischen 
Schaltungen) möchte ich jetzt einmal nicht prüfen und möglicherweise 
Defekte erkennen.

Wie die Eingangsstufe funktioniert, weiß ich nicht und kann es jetzt nur 
durch Probieren herausfinden. Dazu hilft mir obige Schaltung schon mal 
gut weiter, weil ich sowohl das Rechtecksignal, als auch das 
Dreiecksignal zur Verfügung habe. Dank der Hinweise der anderen in 
diesem Thread weiß ich ja nun, dass sich ein Impuls durch ein Hochpass 
hinter einem Rechtecksignal erzeugen ließe.

Zu Deinem weiteren Vorschlag: Das ist naheligend und habe es auch mal 
probiert. Aber die Signalnasen müssen schon recht ausgeprägt sein 
(Schraubenkopf ab SW5 reicht), und damit hat man dann schon eine 
Geberscheibe von etwa 50 mm Durchmesser. Diese muss recht gut gelagert 
sein und bis 5000 1/min (bei 8 Nasen am Umfang) drehen können. Auch muss 
der Motor diese Drehzahlen können und dann wird es a) mechanisch 
aufwändig und b) auch nicht ganz ungefährlich. Ich habe es zumindest mit 
normalen Bauteilen und ohne kleine mechanische Werkstatt im Hintergrund 
nicht geschafft.

Daher mag ich die Vorstellung, demnächst ein Gehäuse mit zwei Potis zu 
haben, mit denen ich diese Funktion reproduzierbar, lautlos und 
ungefährlich nachbilden kann. Ich bin diesem Ziel ja schon ein Stück 
näher gekommen.

Danke nochmal dafür.

Murkel

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.