Estoy tratando de construir un tacómetro digital para mi motocicleta Yamaha FZS600 Fazer 2002. Tengo un problema con la lectura de la señal del sensor CPS. Es un sensor de efecto hall, supongo. Encontré el enchufe de la misma. Tiene dos cables. Uno es GND, por lo que el otro debe ser la señal. No tengo un osciloscopio para probarlo, así que lo conecté al osciloscopio de la tarjeta de sonido a través del divisor de voltaje y el amplificador operacional, como se puede ver en el siguiente esquema.
simular este circuito : esquema creado con CircuitLab
Ajusté los valores R1 y R2 con un potenciómetro de 10k y obtuve la señal presentada en la imagen 1. Se ve bien (parece que no sería un problema leerlo con un uC).
En el siguiente paso, conecté el mismo circuito a un pin analógico de un Arduino y cargué un programa simple para leer constantemente el voltaje en ese pin y transmitirlo a través de la serie. El resultado se puede ver en la imagen 2. No se parece en nada a la forma de onda de la imagen 2. En primer lugar, la señal leída por una tarjeta de sonido está invertida, pero es razonable. La señal leída por un Arduino no tiene sentido. La pregunta es cuál es el circuito adecuado para leer una señal de dicho sensor.
El LM358 se alimenta individualmente desde 12 V con un condensador de 1uF a GND. Los valores ajustados son: R1 = 9,27 kOhm R2 = 1,79 kOhm
Sin divisor de voltaje o con R1 más pequeño, parece que mi circuito altera la lectura de CPS de la ECU de la motocicleta y el motor funciona de manera desigual o se detiene.
@Andy alias, tenías razón sobre el problema del alias. De acuerdo con su consejo, probé con éxito la señal CPS con Arduino a una velocidad más alta. La modificación requerida fue cambiar un prescaler del reloj ADC. Hice esto de acuerdo con este tutorial http://www.microsmart.co.za/technical/2014/03/01/advanced-arduino-adc/ y aquí está lo que tengo
Sin embargo, aún quedan dudas sobre el circuito adecuado para leer la señal CPS y filtrar el ruido. Cuando giro la perilla del divisor de voltaje del potenciómetro de manera que R2 se vuelve más grande y R1 más pequeño, la forma de onda se vuelve más ruidosa. Además, me pregunto qué nivel de voltaje puede tener esa señal CPS. Arduino indica que es de 5 V, pero ¿cómo puedo saber que no es mayor?
Se llama aliasing: si no convierte la señal analógica en digital a una velocidad lo suficientemente rápida, se acerca a suficiente basura. Considere esta imagen de una onda sinusoidal muestreada a una velocidad demasiado baja: -
http://www.iu.edu/~emusic/361/images/digitalaudio-aliasing.png
Imagina que la forma de onda marrón es tu señal analógica. Las flechas son cuando el Arduino muestrea la señal marrón y la línea punteada azul es lo que podría interpretar que significan esas muestras, es decir, nada como la señal original porque está muestreando a una velocidad demasiado lenta. Debe "muestrear" a una tasa que sea mayor que el doble de la frecuencia más alta de interés, como aquí: -
Sin embargo, debería poder ver que el muestreo anterior perderá matices en la forma de onda que cambian demasiado rápido.
Transistor
usuario103993
BartolomeoR
steve g
BartolomeoR
QueRosaBestia