Medir RPM desde el cable de bujia

Hola, soy nuevo en el foro y soy nuevo tambien con la plataforma arduino.
Soy informatico y fanatico de los fierros (motos) por lo que siempre he querido hacer un tacometro digital
que tome la señal desde el cable de la bujia. tengo uno comprado http://www.horacioresio.com/tacometro-digital.asp
que funciona muy bien. Quiero hacer uno usando arduino pero no me doy mucha maña con la electronica. Se que
necesito captar y adaptar la señal para que pueda ingresarse en el arduino. Mi idea es medir cuanto tarda entre
pulso y pulso y asi obtener las RPM's del motor.
Aca hay un thread muy interesante pero inconcluso....Spark plug wire inductive pickup for RPM - Circuit design - Eng-Tips
Alguien me puede ayudar con la adaptacion de la señal ?.

Hola,

Si pillas la señal que activa la bobina de encendido(en el primario) y le pones una resistencia en serie muy grande (100k), con un par de diodos de clamping , yo creo que sería suficiente.
El micro ya tiene estos diodos dentro, pero le pondría unos diodos rápidos externos por si acaso:

Es una moto antigua? No tiene tacómetro? Me refiero por sacar la señal de otro lugar que sea más "limpia" la señal.

Saludos

Igor R.

Y con algún sensor tipo hall o algo así pegado al cable de la bujia, no seria mas seguro??

Buenos dias:

Pues yo ando con lo mismo. Aqui tienes unos ejemplos.De los tres circuitos que salen el 3º es el que he montado:

Pero como comenta el compañero si la moto es viejuna, bienvenido al maravilloso mundo de los ruidos electromagneticos.

Saludos

No hay caso... arme el primer circuito SportDevices. Chassis and Engine Dynamometers y no lo he podido hacer andar en forma correcta. Obtengo lecturas erraticas que no tienen sentido. Como no soy muy electronico tengo dudas... por ejemplo en elcircuito donde hay un * y dice BOARD significa que no hay contacto directo o sea que el cable no va conectado ?. Las pinzas que muestran son especiales ?. Como debe ser el cable que va al cable de bujia ?. Este es el 3er circuito que armo distinto y no logro que funcione.
Por ultimo a la pregunta si loquiero para motos viejas, la respuesta es si. Ahora estoy probando con una Honda Z 50 de mi hijo del año 1991.

Hola spectrum

Me parece que estás cometiendo un error de base: querer medir las rpm desde la bujía. Los equipos comerciales en general lo hacen así, pero, por la sencilla razón que de este modo son adaptables a cualquier vehículo que no lo lleve, pero eso no significa que sea la mejor forma de hacerlo.

Por la época de la moto, supongo que llevará un encendido electrónico CDI, de descarga de condensador o en todo caso, uno de platinos. En un CDI, en la salida de la bobina tienes alrededor de 25000 voltios y en la entrada 12 (si fuese de platinos, puede que tuviese 6). Digo yo que será más sensato usar los 12v, que están muy cerca de los 5 que necesitas y se pueden bajar con un par de cables y resistencias, que andar enrededando con inducciones, capacitancias y demás zarandajas a 25000 voltios que, como se te vaya un poco la mano, lo que se va a encender en vez del motor va a ser el arduino XD

Para pasar de 12v a 5v (o menos, todo lo que sea más de 1 voltio ya activa un pin digital) necesitas un divisor de tensión, para que de la señal de 12v tres o cuatro vayan al pin digital del arduino y el resto se deriven a masa.

Un divisor de tensión, consta de dos lineas o circuitos cada uno con una resistencia. Una (R1), entre la toma de corriente en la entrada de la bobina y el pin de entrada del arduino. La otra (R2), entre la salida de R1 y la masa (ground). El voltaje que tendrás en la entrad del arduino será Vout=(R2/R1+R2) * Vin Si tienes 12v y colocas la resistencia que va a la entrada digital de, por decir algo, 1k y la que va a masa de 2k, tendrás (1/3) * 12 = 4v en la entrada digital. Cuanto mayor sea el valor de las resistencias, menos intensidad le estarás robando a la chispa de la bujía, así que casi mejor si empiezas con resistencias gordas, del orden de un mega o similar. Los pines del arduino necesitan muy poca intensidad para activarse.

Para evitar estropicios, lo mejor es que tomes la señal de la entrada de la bobina (o para practicar, de una bateria) y el divisor de tensión lo hagas con un par de potenciómetros y el circuito en lugar de conectarlo al arduino, mejor a un tester. Luego solo es jugar con los potenciómetros para distribuir los voltajes como te convengan.

Para detectar el cambio de voltaje que se produce al saltar la chispa, tendrás que utilizar las interrupciones de hardware attachInterrupt(pin, manejador, modo). En el arduino uno solo tienes dos pines digitales que admiten interrupciones, el 2 (interrupción 0) y el 3 (interrupción 1). Léete bien la documentación de attachInterrupt porque durante estas interrupciones el arduino está medio muerto y dentro de la función que maneja la interrupción no puedes hacer apenas nada que sea algo más complejo que incrementar un contador, por lo que si quieres enviar datos al exterior, supongo que querrás, lo tendrás que hacer desde loop() el código sería más menos así:

boolean interrupcionactivada=false;

void setup(){

        attachInterrupt(0, manejainterrupcion, CHANGE);
        //he puesto CHANGE pero seguramente no será la mejor opción, lee la documentación.

}

void manejainterrupcion(){

      interrpucionactivada=true;
}

void loop(){

      if (interrupcionactivada==true){

      //aquí lo quieras que haga cuando detecta la chispa, calcular el tiempo, enviar datos al exterior, etc.
     

     interrupcionactivada=false; 
     }

     delayMicroseconds(poquito);  
     //a 6000 rpm, hay un intervalo entre chispas de solo 20ms (10 en motores 2t) así que casi mejor
     //trabajar con microsegundos. Aquí da igual porque la interrupción anulará la pausa, pero en
     //otras operaciones, mejor micro que mili

}

Hala, que no te queda ná XD

Con una resistencia grande y un par de diodos de clamping, no te hace falta divisor de tensión.... ;). De todas formas, mejor ponerle alguna protección más....
Yo diría que el cambio lógico de "0" a "1" es aprox. 2.5 v

Hace bastante tiempo hice esto para un conocido por si te puede servir=> Tinkering with Electronics...: Shift Lights con Arduino

Justamente la gracia es que pueda usarlo de forma universal en casi cualquier motor naftero poe eso elegi tomar desde el cable de la bujia. Tomar la señal antes de la bobina hace que sea poco practico para cambiar de moto a moto.
Los encendidos de las motos generan mucho ruido electromagnetico, no ?. Segun tengo entendido las entradas digitales del arduino son muy sensibles, no estara entrando ruido y disparando interrupciones ?

Buenas tardes:

Estoy realizando un proyecto de un lap timer con unas cuantas funciones mas (temp,RPM,vel). Comence con pic , aqui te pongo un video del funcionamiento basico. Ahora estoy pasandolo a Arduino (por unas mejoras que ya pondre cuando este mas avanzado) y te puedo asegurar que el encendido de la moto del video es el mas "ruidoso" que te puedas imaginar. La señal esta cogida de la bujia, como el otro que se ve en el video e igual que hacen los demas cuenta rpm comerciales (Koso,Alfano,MVT....). Tambien te digo que hasta los comerciale se quedan fritos. Ahi va el video:

Saludos

pd: Tengo mas videos , en otros motores de 2 y 4 tiempos,echales un vistazo.

Gracias Rabanisa, eso es lo que quiero lograr con el arduino. Podrias compartir la info. Gracias

Buenos dias:

Estoy ultimando unas cosas, en cuanto las tenga quiero poner un post como proyecto y poner toda la informacion. Lo que si que te puedo adelantar segun mi experiencia es que Arduino es mas sensible a los ruidos (por lo menos de este tipo) que el pic. Pero tiene apaño.

Saludos.