Por fin me llegó el osciloscopio y pude hacer algunas medidas.
Como sé que su tiempo es oro, les planteo mis consultas al principio de este mensaje, fuera de contexto, y luego les explico con más detalle.
Consulta 1: ¿Cuál sería la mejor forma de detectar con un PIC los cambios de sentido de circulación de la corriente por dos bobinas, sabiendo que estos cambios pueden producirse cada 64us?
Consulta 2: ¿Puede un PIC funcionar lo suficientemente rápido como para leer el valor de uno de sus puertos al menos 2 veces en un intervalo de 64us?
Consulta 3: ¿Qué transistor MOSFET de tipo N elegirían para utilizarlo como interruptor en una fuente de 14,5V y que saturase a 8,6V.
Consulta 4: ¿Qué optoacoplador elegirían para conectarlo al MOSFET anterior y que entregase 5V a la salida para utilizarlos como entrada del PIC?
Consulta 5: ¿Son significativos los tiempos de reacción del MOSFET y optoacoplador anterior respecto a 64us?
Lo que pretendo es desarrollar un sistema cuya entrada sea la excitación que controla un motor paso a paso (que ahora está estropeado), y cuya salida sea mostrar en un display la velocidad que marcaría la aguja del velocímetro que gobernaba ese motor.
El circuito del automóvil opera a 14,5V (yo creía que los automóviles funcionaban a 12 V, pero el voltímetro no miente) y excitaba las 2 bobinas de un motor paso a paso bipolar mediante microstepping. Esta excitación de tipo PWM (como he podido medir con el osciloscopio) consiste en pulsos de 8,6V con una longitud de 64us. El motor está compuesto por un estátor de 32 pasos y un engranaje reductor 16:1 que acciona la aguja del velocímetro, es decir, el rótor debe girar 16 vueltas para que la aguja del velocímetro gire una.
Tengo acceso a los extremos de ambas bobinas, a la toma positiva del circuito del automóvil y a su tierra, pero a nada más (el resto de la circuitería es inaccesible).
Con el vehículo a velocidad 0, en los extremos de las bobinas se leen las siguientes tensiones:
Al aumentar ligeramente la velocidad se observa:
1. Que el ancho de los pulsos del extremo A de la bobina 1 va decreciendo hasta hacerse nulo, momento en el que su tensión se vuelve 0 y el pulso se traslada al extremo B (indicando un cambio en el sentido de la corriente que recorre esta bobina).
2. Que al mismo tiempo va aumentando el ancho de los pulsos del extremo A de la bobina 1, hasta ocupar los 64us, momento en el que su ancho empieza a decrecer hasta hacerse nulo, momento en el que su tensión se vuelve 0 y el pulso se traslada al extremo B (indicando un cambio en el sentido de la corriente que recorre esta bobina).
Según he podido leer, este comportamiento corresponde a la excitación de tipo microstepping. En el siguiente gráfico represento el ancho de los pulsos de cada extremo de las bobinas en función del giro del rótor (lo he representado como si el motor fuera de sólo 8 pasos, aunque en realidad es de 32):
Como el velocímetro puede alcanzar un máximo de 255 Km/h, para lo que el rótor tendría que girar aproximadamente 16 vueltas completas, es decir, 13x32=521 pasos, no sería necesario que el PIC detectase los anchos de los pulsos en cada instante, sino sólo los cambios de sentido de la corriente en las bobinas, pues detectando cada paso se lograría una resolución de 0,5 Km/h, con la que me conformo.
Ahora les explico cómo se me había ocurrido resolver técnicamente el problema: Como no quiero afectar a la corriente que circula por las bobinas, había pensado conectar el gate de un MOSFET tipo N a cada extremo de bobina. Como quiero aislar mi circuito de la electrónica del vehículo (para no freírlo si cometo algún error), había pensado que cada uno de estos MOSFET alimentase un optoacoplador, y que las 4 salidas de estos optoacopladores estuvieran conectadas, por ejemplo, a los 4 bits de menor importancia del puerto B del PIC. De este modo, en el puerto B se leería el giro del motor como la secuencia de valores 10,6,5,9,10,6,5,9,10,6,5,9,… Obviamente, entre estos valores podrían detectarse otros, como 0, 8, 2, 4 o 1 si el puerto B se leyese en el intervalo de tensión 0 de alguno de los pulsos, pero estos valores simplemente los ignoraría en el programa. En pocas palabras, el software del PIC se limitaría a leer continuamente el puerto B, actualizando el valor de una variable en la que se almacenaría el número de pasos girado en función de que se detecten los valores 10, 6, 5, o 9 (y el orden en el que se detecten).
¿Qué les parece?
Siento haberme extendido tanto.