-1

I tried to create a tachometer for my motorcycle using an Arduino Uno.
I am trying to measure the voltage of the ignition coil (stepped down to not destroy the Arduino).

I am trying to determine the time between two explosions (one ignition coil high voltage).

I tried to use the pulseIn command in the following way:

unsigned pin=8;
float t;

unsigned long rpm;

void setup() {
    Serial.begin(9600);
    pinMode(pin,INPUT);
}

void loop() {

    rpm=pulseIn(pin,LOW);

    Serial.println(rpm/60);
}

The problem with it is that it won't display stable values. It will go all crazy. With an open circuit it still displays random values.

  • Are you sure that pulse is not shorter than 10ms? – Divisadero Mar 8 '17 at 15:14
  • i tested both pulseIn(pin,LOW) and pulseIn(pin,high) and neither worked. At most, my bike does 14.000 rpm, meaning 14.000/60 (233) rps. 233 rps ..... 1000 ms x rps............1 ms x=233/1000. I guess it is less than 10 ms. Is that the problem? – Andrei Grigore Mar 8 '17 at 15:19
  • arduino.cc/en/Reference/pulseIn - under 10ms it wont work right – Divisadero Mar 8 '17 at 15:29
  • but if you have tested it with smaller speed, the problem will be somewhere else – Divisadero Mar 8 '17 at 15:29
  • 3
    I suspect that it is already too late for that Arduino. How are you safely stepping the voltage down in such a way that it doesn't a) kill the Arduino, and b) kill you? – Majenko Mar 8 '17 at 15:40
0

I can't tell you why that isn't working, but I can give you a working alternative.

unsigned int pin=8;

void setup() {
    Serial.begin(9600);
    pinMode(pin,INPUT);
}

void loop() {
    unsigned float rpm = 0;

    while (digitalRead(pin) == FALSE) {
        rpm++;
        delayMicroseconds(1);
    }

    Serial.println(rpm/60);
}

I might've forgotten something, but that should work.

Edit: the comments may be right, are you stepping down your input voltage?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.