現在、私は磁気ピックアップを取り付けたディーゼルエンジンを持っています。私はArduino(Uno/Nano)を使ってエンジンRPMを測定したいと思っています。Arduinoと磁気ピックアップの接続
磁気ピックアップ説明:磁気ピックアップは、ギア(通常は車両のベルハウジング内のフライホイール)に取り付けられ、ギアの回転に応じてピックアップはギアの各歯に電気パルスを生成します。これらのパルスは、正しいRPMまたは速度を示すためにそれを解釈する計器によって読み取られます。磁気速度センサーからの信号、1秒あたりの歯数(HZ)は、エンジン速度に正比例します。私はOptocopler 4N35からの出力に接続され、次いで、その後、ノイズをフィルタリングする.1Ufコンデンサと抵抗を用いて電流を制限ダイオードを使用して信号を整流するように試みた MP - Self Powered
:
磁気撮像画像をOptoからArduinoへの割り込みピンは、Arduinoの割り込みpingを観察するだけで周囲の影響を強く受けます。
また、磁気ピックアップを "A0"ピンに直接接続し、アナログ読み出しを使用してピン13に接続するだけで、MPからのパルスを監視しようとしました。ピックアップによって生成されるパルスの指標としてのLEDとanalogueRead
作品を使用
int sensorPin = A0;
int ledPin = 13;
int sensorValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
digitalWrite(ledPin, HIGH);
delay(sensorValue);
digitalWrite(ledPin, LOW);
Serial.println(sensorValue);
Serial.println(" ");
}
。 (Arduinoを保護するために小型モーターと小型ギアを使用してテストされています)。
LM139コンパレータを使用しようとしましたが、読み取り値は意味がありません (例:60 RPM、1500 RPM、2150 RPM、7150 RPM)。 LM139で使用
コード:
// read RPM
volatile int rpmcount = 0;
//see http://arduino.cc/en/Reference/Volatile
int rpm = 0;
unsigned long lastmillis = 0;
void setup() {
Serial.begin(9600);
attachInterrupt(0, rpm_fan, RISING);
//interrupt cero (0) is on pin two(2).
}
void loop() {
if (millis() - lastmillis == 500) {
/*Update every one second, this will be equal to reading frequency (Hz).*/
detachInterrupt(0); //Disable interrupt when calculating
rpm = rpmcount * 60;
/* Convert frequency to RPM, note: this works for one interruption per full rotation. For two interrupts per full rotation use rpmcount * 30.*/
Serial.print(rpm); // print the rpm value.
Serial.println(" ");
rpmcount = 0; // Restart the RPM counter
lastmillis = millis(); // Update lastmillis
attachInterrupt(0, rpm_fan, RISING); //enable interrupt
}
}
void rpm_fan() {
/* this code will be executed every time the interrupt 0 (pin2) gets low.*/
rpmcount++;
}
// Elimelec Lopez - April 25th 2013
RPMを表示するには、Arduinoの持つ磁気ピックアップをインタフェースするための最良の方法やアプローチは何ですか?
[リンク](https://www.youtube.com/watch?v=tDxK7IWfHEc) これは、MPセンサから出てくる信号のビデオです、私は0-にそれを得るために何をすべき5 V –
LM319の回路図では良好なパルスが得られるはずですが、電気的ノイズが原因で不要な短絡が発生する可能性があります。信号に関連しないスパイクを除去するには、ローパスフィルタを追加する必要があります。あなたが読んでいたのは、あふれている可能性があると思います。あなたの質問に記載されているコードは歯車の歯数を考慮していないので、あなたが得たRPMは多すぎます。 ADCを使用すると、analogRead()を使用すると、信頼性の高いカウントを提供するには遅すぎます。 –