So lesen Sie das Signal vom Kurbelwellenpositionssensor im Motorrad

Ich versuche, einen digitalen Drehzahlmesser für mein Motorrad Yamaha FZS600 Fazer 2002 zu bauen. Ich habe ein Problem mit dem Lesen des Signals vom CPS-Sensor. Ich nehme an, es ist ein Hallsensor. Ich habe den Stecker davon gefunden. Es hat zwei Drähte. Einer ist GND, also muss der andere das Signal sein. Ich habe kein Oszilloskop, um es zu untersuchen, also habe ich es über den Spannungsteiler und den Operationsverstärker mit dem Soundkarten-Oszilloskop verbunden, wie im folgenden Schema zu sehen ist.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ich habe die R1- und R2-Werte mit einem 10k-Potentiometer eingestellt und das Signal in Bild 1 dargestellt. Es sieht gut aus (es sieht so aus, als wäre es kein Problem, es mit einem uC zu lesen).

Bild 2 - CPS-Signal von Soundkarte gelesen

Im nächsten Schritt verband ich die gleiche Schaltung mit einem analogen Pin eines Arduino und lud ein einfaches Programm hoch, um die Spannung an diesem Pin ständig zu lesen und seriell zu übertragen. Das Ergebnis ist in Bild 2 zu sehen. Das sieht überhaupt nicht aus wie die Wellenform aus Bild 2. Zunächst einmal wird das von einer Soundkarte gelesene Signal invertiert, aber es ist vernünftig. Das von einem Arduino gelesene Signal ist bedeutungslos. Die Frage ist, was die richtige Schaltung ist, um ein Signal von einem solchen Sensor zu lesen.

Bild 2 - CPS-Signal gelesen von Arduino AnalogRead()

Der LM358 wird einzeln von 12 V mit einem 1uF-Kondensator gegen GND versorgt. Eingestellte Werte sind: R1 = 9,27 kOhm R2 = 1,79 kOhm

Ohne Spannungsteiler oder mit kleinerem R1 scheint meine Schaltung das Lesen des CPS durch das ECU des Motorrads zu stören und der Motor läuft ungleichmäßig oder stoppt.


@ Andy aka, du hattest Recht mit dem Aliasing-Problem. Gemäß Ihrem Rat habe ich das CPS-Signal mit Arduino erfolgreich mit einer höheren Rate abgetastet. Die erforderliche Modifikation bestand darin, einen Prescaler des ADC-Taktes zu ändern. Ich habe dies gemäß diesem Tutorial getan http://www.microsmart.co.za/technical/2014/03/01/advanced-arduino-adc/ und hier ist es, was ich habe

Mit Arduino mit einem schnelleren ADC-Takt abgetastetes CPS-Signal

Trotzdem bleibt die Frage nach der richtigen Schaltung zum Lesen des CPS-Signals und zum Herausfiltern von Rauschen. Wenn ich den Potentiometer-Spannungsteiler so drehe, dass R2 größer und R1 kleiner wird, wird die Wellenform lauter. Außerdem frage ich mich, welche Pegelspannung dieses CPS-Signal haben kann. Arduino zeigt an, dass es 5 V sind, aber woher weiß ich, dass es nicht größer ist?

Es ist ein digitales (Ein/Aus) Signal. Warum würdest du es an einen analogen Eingang anschließen?
Arduinos verfügen über einen eigenen, einfach zu implementierenden Interrupt. Ich habe es viele Male für Drehgeber verwendet und es scheint, als wäre es genau das, was Sie brauchen könnten. arduino.cc/en/Reference/AttachInterrupt
Ich habe Interrupts verwendet, aber die Messwerte entsprachen nicht meinen Erwartungen. Deshalb habe ich sie an einen analogen Eingang angeschlossen, um zu sehen, was in der Schaltung vor sich geht.
Vermutlich zeigt der Doppelimpuls (in der Wellenform von der Soundkarte) Zylinder Nr. 1 an.
@Steve G Der Doppelimpuls ist kein Problem. Eigentlich ist die Wellenform der Soundkarte schön und einfach zu interpretieren, aber warum ist die Wellenform am analogen Eingang von Arduino so laut?
Was ist Ihre Arduino-Abtastrate? Wenn Sie zu grob abtasten (<3-5 Mal die erwartete Impulsbreite), erhalten Sie eine Ausgabe, die sehr ähnlich aussieht. Eine Abtastrate von 2 pro Impuls reicht aus, aber mehr ist besser.

Antworten (1)

Es heißt Aliasing - wenn Sie das analoge Signal nicht schnell genug in ein digitales umwandeln, erhalten Sie fast genug Müll. Betrachten Sie dieses Bild einer zu niedrig abgetasteten Sinuswelle: -

http://www.iu.edu/~emusic/361/images/digitalaudio-aliasing.png

Stellen Sie sich vor, die braune Wellenform ist Ihr analoges Signal. Die Pfeile sind, wenn der Arduino das braune Signal abtastet, und die blaue gepunktete Linie ist das, was Sie diese Abtastungen so interpretieren könnten, dh nichts wie das ursprüngliche Signal, weil Sie mit einer zu langsamen Rate abtasten. Sie müssen mit einer Rate "abtasten", die größer als das Doppelte der höchsten interessierenden Frequenz ist, wie hier: -

Geben Sie hier die Bildbeschreibung ein

Sie sollten jedoch erkennen können, dass beim obigen Sampling Nuancen in der Wellenform fehlen, die sich zu schnell ändern.

Ok, also werde ich versuchen, mit einer höheren Rate zu sampeln. Ich frage mich immer noch, warum der Operationsverstärker selbst als Spannungsfolger die CPS-Schaltung stört, obwohl er theoretisch eine hohe Eingangsimpedanz hat. Warum braucht es vorher einen Spannungsteiler?
Wie groß ist das CPS-Signal und mit welcher Spannung (+ und -) wird der LM358 betrieben?
Ich habe Probleme, einen Spannungspegel des CPS-Signals zu bestimmen, weil ich kein geeignetes Oszilloskop habe. Der LM358 wird von +12V und GND versorgt. Wenn Sie es mit +5 V versorgen, wird der Ausgang auf 3,5 V begrenzt. Vielleicht sollte ich einen Rail-to-Rail-Operationsverstärker ausprobieren?
Was ist das Ausgangssignal in Bezug auf Maximum und Minimum für das Signal, wenn es mit 12 V betrieben wird?
Ihr zweites Diagramm (das meines Erachtens Aliasing zeigt) nimmt 500 ms ein und es scheint wesentlich weniger als 4500 Samples in diesem Fenster zu geben. Es scheint eher 450 Samples in diesem Fenster zu geben oder vielleicht eines pro Millisekunde. Da ein Impuls ungefähr 1 Millisekunde zu belegen scheint, haben Sie ein Aliasing-Problem.