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.
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).
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.
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
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 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: -
Sie sollten jedoch erkennen können, dass beim obigen Sampling Nuancen in der Wellenform fehlen, die sich zu schnell ändern.
Transistor
Benutzer103993
BartholomäusR
Steve G
BartholomäusR
WasRoughBeast