PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Projekt Drehzahlmesser mit Induktivem Abgriff



Powell
02.07.2007, 14:29
Hallo zusammen,

ich beschäftige mich gerade mit einer Schaltung für einen Drehzahlmesser bzw. anderer Module die Drehzahlabhängig in KfZ/Mopeds angesteuert werden können/sollen

Mein derzeitiges Problem liegt noch an einer Sauberen Signalaufbereitung des Drehzahlsignals. Schaltungen für den Anschluss an die Zündspule oder den Pickup findet man ja leicht im Netz, aber ich möchte es gerne Induktiv machen (einfch ein Kabel um das Zündkabel gewickelt).

Über eine Transistorschaltung und einen Schmitt-Trigger habe ich es schon so weit hinbekommen, dass an meinem Controller saubere Rechtecksignale ankommen. Allerdings zeigt mir mein Display nach Auswertung der Signale nur Müll an :(.

Mein Programm sieht vereinfacht so aus:

Pulsein F , Pinc , 3 , 0
RPM = 1 / F
RPM = RPM * 6000000

F ist die Anzahl der 10 uS Schritte die vergeht, bis es zu einer 0->1 Flanke kommt.
Je höher die Drehzahl, desto geringer die Zeit die zwischen zwei Impulsen vergeht, also den Kehrwert davon =1/F nehmen.
Letztendlich noch der Umrechnungsfaktor: 6000 U/min entsprechen 100 Zündungen / sec, das heißt es vergehen 10 ms zwischen jeder Zündung, entspricht also 1.000 * 10 uS, 1/1.000 * 6.000.000 = 6000

Ist das soweit richtig oder liegt hier schon ein grober Fehler vor?

Mein Display ist jetzt aber leider stark am springen - mal zeigt es 50 an, mal 1100. Weiterhin verhält sich die Drehzahl antiproportional zum angezeigten wert: Höhere Drehzahl, niedrigerer wert... :(

Wenn es jetzt nicht an der Software liegt (bitte prüft mal ob nicht vielleicht doch ein Denkfehler vorliegt) vermute ich dass das Eingangssignal noch zu unsauber ist. Ich vermute dass es nachschwingt und pro Zündung ggf. mehrere Impulse liefert.

Meine Idee war jetzt die, dass man das erste eingehende Signal zählt und dann 3 ms lang alle weiteren Signale Ignoriert. Dann sollte das Nachschwingproblem gelöst sein. Nur wie umsetzen? Mit debounce geht das nicht, denn die Zündimpulse an sich sind sehr sehr kurz. Ich brauche einen Befehl der dem Controller sagt: "wenn ein Zündsignal kommt fängst du an die Zeit bis zum nächsten Signal zu zählen, ignorierst aber erst mal 3ms lang alles was kommt". Wie setze ich das in ein Programm um (Bascom)?

Auch wenn ihr sonst noch Infos zum Thema Zündsignal induktiv abgreifen (Signalaufbereitung) habt, immer her damit :)

Powell
02.07.2007, 15:08
Hallo Nochmal,

ich habe jetzt nochmal genau mit dem Oszi gemessen: Ich bekomme tatsächlich zwei Impulse pro Zündung, und zwar kommt der "Nachschwingimpuls" etwa 700 bis 1500 uS nach dem "richtigen" Zündimpuls. Ich vermute demnach dass das springende Display daraus resultiert, dass er mal die Zeit zwischen Impuls 1 und 2 misst und anzeigt (ca. 1ms) und mal die Zeit zwischen Impuls 2 und 1, also die Tatsächliche Zeit zwischen zwei Zündungen.

Danach würde diese von mir angesprochene "Ignorationsphase" des zweiten Signals vermutlich funktionieren - wie kann man es realisieren?

Crazy Harry
02.07.2007, 19:52
das 2.signal ist negativ - stimmts ? zumindest ist das bei mir so gewesen. ich hab die schaltung von http://www.enduro-stammtisch.de/ verwendet. allerdings nach vielen versuchen und testaufbauten festgestellt, daß das ganze sehr von der anzahl der wicklungen, der dicke des zündkabels und natürlich vom motorrad selber abhängig ist. ich hab dann aufgegeben :D

aber neulich ist mir ein altes elektor-buch in die hände gefallen (flohmarkt :) ) in dem eine solche schaltung drin ist. bei dieser wird das kabel von der cdi zur zündspule einfach durch einen schalenkern geführt.
achsoja das buch: "Messen - was wie womit" (1991)

Magic_X
02.07.2007, 20:00
Hallo,
das Bordnetz eines KFZ (oder Moped o.ä.) ist immer fürchterlich versaut.... du hast es ja selbst gemessen.
Erste Regel deshalb: Saubere, glatte Versorgungsspannung deiner Schaltung, Einbau in ein Metallgehäuse versteht sich von selbst.
Zweitens: Alle Leitungen geschirmt und so kurz wie möglich (sonst Antenneneffekt).
Drittens: Die Amplitude deines Messsignals schwingt wahrscheinlich über (Induktivität), deshalb Begrenzung durch z.B. antiparallel geschaltetete Dioden/Zenerdioden. Mit den Standard "400mW" Typen kommst du aber nicht weit ;-).

Zu deiner Frage mit dem "Ignorieren" von Fehlimpulsen: Zu meiner Zeit hat man noch Schaltungen "zu Fuß" entwickelt. Ich würde den Prozessor (ob er es denn kann oder nicht) nicht damit befassen, irgendwelche Signale zu interpretieren oder nicht. Stell ihm eine Hilfe zur Seite in Form eines sogenannten Monoflops.
Der cmos Typ 4098 (oder 4528) eignet sich dafür, und wenn du ein bisschen googlest, findes du auch das Datenblatt mit Berechnungsbeispielen für die zeitbestimmenden Bauteile.
Wie gesagt, es sind alles nur Vorschläge, vielleicht kannst du ja etwas davon verwenden.

Gruß
m

Powell
03.07.2007, 08:56
Hallo ihr zwei,

vielen Dank für eure Posts, zunächst zu Crazy Harry: Lustigerweise habe ich es auch mit der Schaltung von Enduro-Stammtisch probiert :). Ich bekomme aber kein negatives Signal raus - das hab ich nur direkt am Induktiven Abgriff durch das Nachschwingen, am Schaltungsausgang bekomme ich eine - sagen wir nicht so ganz sauberes - 5V Signal. Ich hab dahingehend etwas mit Schmitt-Triggern experimentiert und habe letztendlich festgestellt dass es eigentlich ganz einfach geht: Das beste Ergebnis erzielte ich mit Reihenschaltung aus 1M Widerstand und Z-Diode 5V die das Eingangssignal auf 5V herunterregelt, und dort kommt der Schmitt-Trigger dran an dessen Ausgang ich dann perfekte Rechtecksignale herausbekomme - nur eben noch etwas zu viele.

Zu Magic_X: Die Versorgungsspannung für die Schaltung kommt von einer extra-Batterie die nichts mehr mit dem Bordnetz zu tun hat. Den Vorschlag mit den kurzen geschirmten Leitungen werde ich beim nächsten Versuch mal beherzigen - habe da bisher nicht drauf geachtet.
Deinen Punkt 3 habe ich noch nicht ganz verstanden. Wie ist das mit den Antiparallel geschalteten Dioden gedacht? Warum nicht Standard 400mW Typen?

Die Idee mit dem 4098 ist sehr gut. Ich habe glaubich sogar noch welche davon in meiner IC-Kiste liegen, werde das gleich mal ausprobieren. Wenngleich es auch wieder mehr Platz braucht.
Ich habe es mittlerweile auch hinbekommen die Software entsprechend anzupassen, indem ich einfach gesagt habe "Wenn Eingangssignal > 300 (*10µS=3ms) dann ausgabe an Display. Voila zeigte er mir keine Unrealistischen Werte mehr an. Dennoch stimme ich dir zu Magic_X, dass man es lieber Hardwareseitig lösen sollte - das werde ich im laufe des Tages mal versuchen.

pongi
03.07.2007, 09:38
Die einfache Softwarevariante wäre, falls du die Signale über ein Interrupteingang empfängst: erstes Signal -- > Interrupt --> Zeitmessung starten --> Interrupts für 1500uS blockieren --> Nachschwingen löst keine Interrupts aus --> Interruptflags löschen --> Interrupts wieder erlauben --> nächster Signal löst Interrupt aus --> Zeit auslesen, und von vorn anfangen

BASCOM kann ich nicht, aber in C kann ich dir ein kurzes Beispiel schicken, falls du es brauchst.

MfG

pongi

Manf
03.07.2007, 09:55
ich möchte es gerne Induktiv machen (einfch ein Kabel um das Zündkabel gewickelt)
Wenn es um das Verständnis der Funktionsweise geht: Ein Messdraht der um ein Kabel mit einem Signal gewickelt ist nimmt das Signal nicht induktiv auf. Das Magnetfeld des Signals geht Ringförmig um das Kabel, parallel zum Messdraht. Die Kopplung ist damit kapazitiv.

Ein geschirmtes Kabel nehmen und die Kopplung zum Zündkabel nicht größer als nötig machen sollte eigentlich ausreichen. Als weitere Maßnahme kann man das Signal noch mit einem Abschlusswiderstand dämpfen.

Magge2k
03.07.2007, 11:38
Hiho,

schau mal auf http://www.walktronics.de/html/led-drehzahlmesser.html vorbei.

Der hat sich auch so einen Drehzahlmesser gebaut.

Gruß

Crazy Harry
04.07.2007, 06:01
Hallo ihr zwei,

vielen Dank für eure Posts, zunächst zu Crazy Harry: Lustigerweise habe ich es auch mit der Schaltung von Enduro-Stammtisch probiert :). Ich bekomme aber kein negatives Signal raus - das hab ich nur direkt am Induktiven Abgriff durch das Nachschwingen, am Schaltungsausgang bekomme ich eine - sagen wir nicht so ganz sauberes - 5V Signal. Ich hab dahingehend etwas mit Schmitt-Triggern experimentiert und habe letztendlich festgestellt dass es eigentlich ganz einfach geht: Das beste Ergebnis erzielte ich mit Reihenschaltung aus 1M Widerstand und Z-Diode 5V die das Eingangssignal auf 5V herunterregelt, und dort kommt der Schmitt-Trigger dran an dessen Ausgang ich dann perfekte Rechtecksignale herausbekomme - nur eben noch etwas zu viele.


wenn du dir die schaltung vom enduro-stammtisch anschaust und verstehst, was der da macht .... der triggereingang des 555 wird "vorgespannt" über die beiden R's auf einen pegel knapp über der triggerschwelle. der impuls von der spule (auch wenns keine ist ;) ) senkt die spannung kurz ab und das teil triggert. wenn du die widerstände durch einen trimmer ersetzt, kannst du das recht genau einstellen. aber wie gesagt: das ganze ist sehr vom zündkabel, bike, ... abhängig.

ich hab auch schon gelesen, daß manche einfach einen magnetfeldsensor aufs kabel klemmen

ich bin inzwischen dazu übergegangen doch das unterbrecherkabel (also das kabel vom unterbrecher bzw. der cdi zur zündspule) anzuzapfen und über eine einfache schaltung an den µC zu legen. das funktioniert bisher ganz gut.