Banner publicitario de PCBWay

Problemas con detección de giro en motor

Hola, estoy tratando de robar señal a un sensor de árbol de levas (ya trabajando con su ecu), con la función de detectar giro en motor, me dan igual rpms y demás, simplemente observo el cambio de estado de la señal y digo, gira o no gira. El problema viene, de que estoy perturbando la señal original de algún modo, pues funciona un par de arranques y luego empieza a sacar fallos de sincronización de levas en ecu, el sensor es un hall, alimentado por 5v de la propia ecu, es capaz de suministrarme 10-20ma en los dos flancos de tensión sin problema en pruebas en banco, desconectado el sistema se recompone en un par de arranques, le cuesta, es como si memorizara algún ajuste de tiempos en ecu.
Probé con un pc123 para aislar la señal, pero me di cuenta de lo que pasaba y acabé alimentando directamente a la entrada de Arduino a través de una resistencia de 500ohms, pero es que el resultado es similar. La señal viaja un metro por un cable de 0.35mm2, las alimentaciones a Arduino y demás sensores están en 0.5mm2, yo no creo que sea ruido, pero lo comento, no he metido osciloscopio aún, será el siguiente paso.
Yo pensaba que el auto sería bastante robusto como para robarle unos pocos julios para mí, pero se está comportando como delicadito o no caigo yo en algún problema.


Así estoy usando interrupciones, lo he extraído del código por qué hay más cosas y por no volverse loco, pero diría que aquí no hay problema no?



const int sensorlevas = 2;
volatile unsigned long ultimaDeteccion = 0;

void detectarLevas() {
ultimaDeteccion = millis();
}

void setup() {
attachInterrupt(digitalPinToInterrupt(sensorlevas), detectarLevas, RISING);
pinMode(sensorlevas, INPUT);
}

void loop()
{
if ( millis() - ultimaDeteccion < 500)
 
Si el motor da error cuando conectas algo y no da error cuando desconectas ese algo, es obvio que el problema es el algo que estás conectando.
Tendrás que encontrar otro algo que no interfiera.

Si no pones esquemas es como si contaras el cuento de maría sarmiento...

A priori poner una resistencia mas grande para que consuma menos

En ocasiones es problema de las masas, la señal puede que no de lo que tu esperas, cortando el positivo, algunas cortan negativos y cosas así.
En mi caso lo solucioné poniendo todas las entradas optoacopladas y no referenciando a la masa del vehículo ninguna de ellas. En tu caso pusiste el optoacoplador pero uniste las masas osea que te quedaste igual que estabas. O no, en tu noesquema noseve lo que hiciste onohiciste, si seguía igual de mal es que lo conectaste igual de mal.

Pasear el cable tampoco ayuda.

Un mal código te puede dar malas lecturas de las rpm pero no puede dar errores en la ecu.
 
Última edición:
Buscando por ahí se menciona que utilizando un circuito buffer se puede copiar la señal, para posteriormente modificarla,mencionan el uso del integrado [ SN74LVC125A Quadruple Bus Buffer Gate With 3-State Outputs ]
 
Como no tengo idea del arduino, pero si de lo otro, te comento, no se puede tomar la señal de un sensor de levas del tipo hall, porque se modifica la amplitud de la señal, lo que menos modifica la señal original es tomarla por medio de un transistor y amplificarla a lo que uno quisiera.
Por otro lado, el problema no es que el auto sea el delicado, es el arduino el que no esta pensado para soportar los "ruidos" que se generan en el auto, todo equipo electronico que se coloque en un auto, tiene que estar pensado para filtrar miles de armonicos generados por el encendido, alternador y todo lo que se mueva, por mas que no los veas, estás ahí y molestan bastante.

Otra cosa que podrias hacer, es aumentar un poco la corriente de la tensión de referencia, siempre que el sensor sea capaz de manejar sin que lo perjudique, si el sensor se alimenta con 5V, la referencia seguro es de 5V de baja corriente.
 
Si solo necesitas una señal del tipo "On-Off" para determinar si el motor gira o no, podrías utilizar el interruptor del bulbo de presión de aceite 🤷‍♀️ 🤷‍♀️
 
Aprecio todas sus respuestas, sinceramente no esperaba que el Arduino pudiera afectar con su alta impedancia de entrada, realmente me tiene sorprendido.
Respondiendo un poco a todos:
Lo del buffer lo estudiaré tiempo y datasheet en mano.
El proyecto es precisamente para mandar al cuadro de instrumentos baja presión de aceite, por qué mi vehículo no lleva.
Actualmente lo tengo funcionando el equipo a la perfección, pero le tengo un retardo para que no mande el mensaje en los primeros instantes, por lo que no puedo coger esa señal "del bulbo de aceite", quizás, tenga que pensar en otra como sensor de presión de rail por ejemplo, creo que dos metros dio en el clavo, me obceque con esa señal y ya llevo buenos ratos pensando en ella, pero quizás sea mejor dejarla en paz.
Por canbus no quiero coger esa señal por qué con mis pobres conocimientos tendría que hacer uso del bus de diagnóstico, y no quiero ocuparlo de ningún modo.
Mi más sincero agradecimiento a todos
 
Aprecio todas sus respuestas, sinceramente no esperaba que el Arduino pudiera afectar con su alta impedancia de entrada, realmente me tiene sorprendido.
Respondiendo un poco a todos:
Lo del buffer lo estudiaré tiempo y datasheet en mano.
El proyecto es precisamente para mandar al cuadro de instrumentos baja presión de aceite, por qué mi vehículo no lleva.
Actualmente lo tengo funcionando el equipo a la perfección, pero le tengo un retardo para que no mande el mensaje en los primeros instantes, por lo que no puedo coger esa señal "del bulbo de aceite", quizás, tenga que pensar en otra como sensor de presión de rail por ejemplo, creo que dos metros dio en el clavo, me obceque con esa señal y ya llevo buenos ratos pensando en ella, pero quizás sea mejor dejarla en paz.
Por canbus no quiero coger esa señal por qué con mis pobres conocimientos tendría que hacer uso del bus de diagnóstico, y no quiero ocuparlo de ningún modo.
Mi más sincero agradecimiento a todos
Nadie ha dicho que sea el consumo del Arduino, como no has puesto que circuito usas, no sabemos que pasa.
Puede que si o puede que no.
Solo sabemos que si que pasa.
Probablemente tengas masas cruzadas. O no.
O sea el cable que pasa por donde no debe o será otra cosa.
 
Nadie ha dicho que sea el consumo del Arduino, como no has puesto que circuito usas, no sabemos que pasa.
Puede que si o puede que no.
Solo sabemos que si que pasa.
Probablemente tengas masas cruzadas. O no.
O sea el cable que pasa por donde no debe o será otra cosa.
El circuito...lo más simple que imaginas, la señal entrando al Arduino a través de una resistencia, probe pullup y pulldown, hasta que estudie el sensor y vi que tenía capacidad para manejar la señal tanto a positivo como a negativo con "fuerza", idénticos resultados, la resistencia de entrada ...con 4.7k ni se enteraba el Arduino, con 500ohmn obtuve mejores resultados pero afectaba mucho al arranque lanzando error la ecu. Masas...pues en principio podría algo tener que ver, pero en principio la masa del sensor es potencial 0v, mismo que la batería, y por supuesto que el del Arduino.
Veremos qué pasa en los próximos días cuando operé con otra señal de la misma manera.🤞
 
Ah sí, ya lo veo.

Será que le pasa algo o eso
Jejej, se a lo que vas, eres estrictamente correcto, como debe ser. Yo seguiré buscando problemas hasta que finalmente acabe dándote la razón analizando con el osciloscopio la señal, pero es que me da pereza hasta comprarle pilas para bajarlo a la calle y enchufar, intentar ver...cambio un cable, el código y pruebo.
Pero si, tienes razón, yo soy experto en otros campos y pido mucha más info para ayudar y poder seguir un camino al éxito.
 
Última edición:
Atrás
Arriba