Hallo Leute,
Ich bin neu hier im Forum und hätte da eine Frage an die versierten
Leute unter euch.
Ich bin in einem Rennbuggyteam zuständig für die Fahrzeugelektronik und
entwickle im Momente eine Modifikation des Motorsteuergerätes.
Das ganze läuft zur Zeit mit einem Atmega16 ganz gut. Nur jetzt ist der
Punkt gekommen an dem ich nicht mehr weiter weis, denn in Sachen
Grundschaltungen/Elektronik allgeimein bin ich nicht wirklich gut.
Mein Problem:
Der (Verbrennungs) Motor hat an der Nockenwelle einen Positionssensor
der ein kontinuerliches Signal ausgiebt welches seine Amplitude und
seine Freuquenz in abhängigkeit von der Motordrehzahl verändert (siehe
Oszimessungen im Anhang, 1x Leerlauf und 1x 6000 rpm).
Ich möchte anhand von diesem Signal die Drehzahl und in weiterer Folge
auch die Winkelposition der Nockenwelle erfassen/errechnen.
Hat irgendjemand Anregungen oder Ideen wie ich dieses Signal mit dem uC
auswerten kann?
Ich hab mir folgendes überlegt wie es gehen "könnte":
#1 Spannungsteiler --> ADC und die Nulldurchgänge auswerten + Frequenz
errrechnen, Problem: Was mache ich mit der negativen Welle (mit Diode
töten ??), verfälscht die Messung das Signal nicht zu stark (vl spinnt
dann das originale Steuergerät das ja dieses Signal auch noch braucht)
?, Abhilfe - auskoppeln mit Wandler/Spule - aber wie ?
#2 OPV Schaltung mit Grenzwert bei 0,5 V und steigende Flanke messen ?
funktioniert das über den ganzen Drehzahlbereich, mann muss bedenken
dass die Spannung bei der Enddrehzahl des Motors (12000rpm) schon
verdammt hoch ist)
Wenn Interesse besteht kann ich natürlich weitere Details und bereits
funktionierende Sachen (wie zB. Anzeige des eingelegten Gangs im Cockpit
auf "fettem" 7 Seg. usw...) hier posten
Über jeden Vorschlag wäre ich sehr sehr dankbar und verbleibe mit
freundlich grüßen aus Österreich
Stefan
Hallo Stefan,
Leider hast du den Anhang wohl vergessen, aber ich kann dir einfach mal
meine Überlegungen posten.
Die Befürchtung, dass bei Version 1 die Motorelektronik gestört würde,
könntest du relativ einfach mit einem Impedanzwandler und einer idealen
Diode (beides mit OPV aufgebaut) ausräumen. Wie genau soll die
Drehzahlmessung denn sein?
Version 2: Spannungsteiler am Eingang eines Komparators (Schaltschwelle
musst du richtig wählen) und falls nötig einen folgenden Monoflop
(definierte Signallänge)
Recht schwierig dürfte die Positionserkennung zu realisieren sein, da ja
sowohl Amplitude als (nehme ich mal an) die Signaldauer von der Drehzahl
abhängig sind.
Auch hier stellt sich wieder die Frage, wie genau diese
Positionsbestimmung werden soll.
Bevor ich hier aber anfange, wild zu spekulieren, warte ich besser auf
die Oszi-Bilder und die Spezialisten hier im Forum.
Dein Projekt klingt jedenfalls nicht uninteressant, wenn du uns hier auf
dem Laufenden halten würdest, wäre das sehr nett.
Grüße von der Donau,
Erik
Du kannst auch einen Timer über einen externen Pin zählen lassen, z.B.
T1 für Timer 1. Je nach Zählerstand kannst du die Drehzahl ermitteln.
Wenn ich dich richtig verstanden habe willst du bei einem Bestimmten
Winkel etwas auslösen? Dann kannst du mittels Output-Compare-Interrupt
des gleichen Zählers den Winkel ermitteln (wie oben schon gesagt:
abhängig von der Drehzahl)
Hallo Stefan,
klingt nach nem schönen Projekt, wäre an der Ganganzeige interresiert
insbesondere mechanische Abfrage (reed kontakte?).
Danke im vorraus
MfG MuKuh
Den Anhang scheine ich doch glatt vergessen zu haben (....)
@ Erik:
Danke für die Stichwörter - werde mich damit im inet mal schlau machen
wie das mit auskoppeln usw funktioniert. Eine Version die nur einen
Digitaleingang am uC verlangt hat natürlich auch ihre Vorteile.
Die Genauigkeit ist relativ gering (+- 20rpm) da ja der Schaltvorgang
ohnehin vom Fahrer ausgelöst wird , allerdings sollte die
Wiederholgenauigkeit (ka ob das der richtige Ausdruck ist) relativ gut
sein. (Das selbe Signal liefert immer wieder die selbe Drehzahl)
@ Sonic:
Mein Problem ist eher die externe Beschaltung die ich nicht verstehe.
Wie ich von der Periodendauer dur Drehzahl und zur Position komme ist
mir schon relativ klar. Aber reden wir weiter wenn ich die Bilder
gepostet habe. Danke dennoch schon mal im Voraus
@ Christian:
Der Motor hat bereits einen Sensor hierfür eingebaut. Das einzige was
ich weis ist, dass er seinen Widerstand in Abhängigkeit vom Gang
verändert ( evtl. Poti am Schaltgestängehebel ??) Ich messe den
Widerstand brutal per Spannungsteiler über einen ADC Eingang. Anzeige
per 100mm hohen 7 Segment Display.
Danke schon mal im Voraus für eure rasche und freundlich Hilfe.
Werde mich in Zukunft sicher häufiger hier im Forum beteiligen.
Im Moment komme ich aber leider nur ca alle 4 Tage zum arbeiten also
nicht böse sein wenn ich mich längere Zeit nicht melde.
lg Stefan
PS: Sollte der Anhang wieder nicht funktionieren dann bitte den
verwenden "Den Anhang scheine ich doch glatt vergessen zu haben (....)
@ Erik:
Danke für die Stichwörter - werde mich damit im inet mal schlau machen
wie das mit auskoppeln usw funktioniert. Eine Version die nur einen
Digitaleingang am uC verlangt hat natürlich auch ihre Vorteile.
Die Genauigkeit ist relativ gering (+- 20rpm) da ja der Schaltvorgang
ohnehin vom Fahrer ausgelöst wird , allerdings sollte die
Wiederholgenauigkeit (ka ob das der richtige Ausdruck ist) relativ gut
sein. (Das selbe Signal liefert immer wieder die selbe Drehzahl)
@ Sonic:
Mein Problem ist eher die externe Beschaltung die ich nicht verstehe.
Wie ich von der Periodendauer dur Drehzahl und zur Position komme ist
mir schon relativ klar. Aber reden wir weiter wenn ich die Bilder
gepostet habe. Danke dennoch schon mal im Voraus
@ Christian:
Der Motor hat bereits einen Sensor hierfür eingebaut. Das einzige was
ich weis ist, dass er seinen Widerstand in Abhängigkeit vom Gang
verändert ( evtl. Poti am Schaltgestängehebel ??) Ich messe den
Widerstand brutal per Spannungsteiler über einen ADC Eingang. Anzeige
per 100mm hohen 7 Segment Display.
Danke schon mal im Voraus für eure rasche und freundlich Hilfe.
Werde mich in Zukunft sicher häufiger hier im Forum beteiligen.
Im Moment komme ich aber leider nur ca alle 4 Tage zum arbeiten also
nicht böse sein wenn ich mich längere Zeit nicht melde.
lg Stefan
PS: Sollte der Anhang wieder nicht funktionieren, dann bitte den hier
verwenden: "http://loop0.org/~steve/oszi.zip"
Nein hab ich noch nicht. Aber scheint mir ein verdammt guter Hinweis
gewesen zu sein. Vorallem der LM1815 schaut sehr interessant aus.
Herzlichen Dank erst mal an dich romanua
lg Stefan
Sry dass ich nochmal nach so kurzer Zeit wieder poste - Wird echt mal
Zeit mich anzumelden. Weis irgendjemand wo man so ein Teil bekommt, oder
wie man zu Samples von National kommt ? Muss man da gewerbetreibend sein
?
lg Stefan
Hallo, Stefan,
digikey hat das teil.
Die DIY ECU Projekte liefern viele Anhaltspunte, vielleicht gibt es auch
andere Ansaetze, Induktionsensoren auszuwerten. Eventuell tausche mal
deinen gegen einen Hall-Effect Sensor (die von mir bisher gesehenen
Nockenwellensensoren waren Hall-Effect Sensoren), der gibt nur High/Low
aus , dann hast Du gar keine Probleme mit Auswertung.
>Winkelposition der Nockenwelle erfassen/errechnen
Geht das nicht ueber den Kurbelwellensensor? Die Nockenwelle hat
normallerweise nur einen Impuls per 360 Grad. Bei Deinem Motor scheint
es auch der Fall zu sein. Fuer das Timing der Zuendung wird es zu
ungenau, fuerchte ich.
Meine Lieblingsprojekte sind:
http://www.vems.hu/wiki/
und
http://www.bgsoflex.com/megasquirt.html
LG
Jop habs auch bei Farnell schon gefunden.
Ein Sensortausch kommt leider nicht in Frage, da es für alle baugleichen
Motoren für jedermann ohne weitere Umbauten verwendbar sein soll
(plug'n'play sozusagen)
Bei dem Motor (Suzuki GSX 1300R Hayabusa) sieht das Signal der
Kurbelwelle genau gleich aus nur mit doppelter Frequenz.
In die Zündung wird vorerst nur soweit eingegriffen, das diese
(kurzzeitig) unterbrochen wird sobald eine bestimmte Drehzahl (für den
Start) erreicht wird.
Werde mich in diese DIY ECU Projekte auf jeden Fall weiter einlesen.
lg Stefan
Ich habe hier ein grundsätzliches Problem:
Wozu ist es notwendig, die genaue Position des Nockenwellensensors zu
erfassen? Das ist ein 4 Zylinder 4Takter der durch 2 Zündspulen gezündet
werden kann (180° Versatz). Der Nockenwellensensor ist nur dafür da, daß
Du herausbekommst, welches Zylinderpaar Du befeuern mußt, der Konkrete
Zeitpunkt seines Signals ist Mettwurscht....
Den Genauen Zündwinkel mußt Du schon über das Signal des
Kurbelwellensensors ermitteln, dazu reicht es aber aus, das Signal mit
einem Schmittrigger zu
formen und dann zu erfassen, die Zeitliche Änderung des Signals durch
die
Änderung seiner Amplitude kompensierst Du austomatisch in den
Kennfeldtabellen mit der Einstellung des Zündwinkels....
Wo also ist das Problem?
Gruß,
Holm
Ich will (für den Anfang) lediglich die Drehzahl erfassen und sonst
garnichts. Mein Problem ist die elektronische Schaltung hierzu.
z.B.: Schmitttrigger o.Ä.
sieh es so: Gegeben: Das Signal wie auf den Bildern die ich gepostet
habe
Gesucht: Die Frequenz des Signals.
Der Rest: EGAL !
lg Stefan
Schicke das Signal über 1,5KOhm auf die Basis eines npn Transistors.
evtl
von dieser Basis eine Diode mit Kathode am Transistor und Anode an
Masse,
ggf. zur Störunterdrückung einen Kondensator von ein paar nF parallel
zur Diode.
Der Transistor erhält einen Kollektorwiderstand von ca. 4,7K nach +5V,
dann sollten am Kollektor negative Nadelimpulse zur Auswertung bereit
stehen.
Experimentiere mal damit.
Gruß,
Holm
@holm: Danke für den Tipp, muss mir das ganze mal aufbauen, aber hier
muss ich sicher vorher mit OPV Entkoppeln um das Signal nicht zu
beeinflussen. Ein weiteres Problem ist, dass sich testen vorallem im
oberen Drehzahlbereich sehr Aufwendig gestaltet weil der Motor ja im
Buggy verbaut ist und wir dazu jedesmal auf eine Strecke fahren müssen.
@Sonic: Wirklich kompakte ERklärung, Danke
lg Stefan
Hallo,
Melde mich nach langer Zeit wieder mal.
Habe eine einfache Lösung durch viele Tests gefunden.
Spannungsteiler mit 10k zu 100k Widerständen.
Kleinsignaldiode BA157 nach GND und nach +5V.
ADC Eingang am AVR und schnell genug messen.
Per Timer die Zeiten zwischen den Nulldurchgängen messen und mit f = 1/T
Drehzahl ermitteln.
Werde hier falls Interesse besteht nähere Details zu gegebener Zeit
posten.
--> http://users.loop0.org/users/steve/BUGGY/DSC00032.JPG
lg Stefan
Hi,
ich würde sagen interesse besteht und die "gegebene zeit" sollte nach
knapp 4 jahren auch gegeben sein ;-)
könntest du die schaltung bzw den quellcode zur verfügung stellen?
danke und grüße
Hallo,
Wie du schon selber geschrieben hast ist das ganze ca. 4 Jahre her. Den
Schaltplan / Code muesste ich erst mal "ausgraben".
Es ist aber zumindest schaltungstechnisch so einfach wie oben
beschrieben.
2 Widerstaende und 2 Dioden. Dann einen Timer mit Interupteingang nutzen
und die Zeit zwischen 2 Nulldurchgaengen ermitteln.
Aus heutiger Sicht wuerde ich das auch anders machen, aber damals hat's
funktioniert und mir genuegt.
LG