El siguiente proyecto, bajo la autoría de T.K. HAREENDRAN , es muy interesante, por lo que los invitamos a llevarlo a cabo y, si es posible, nos dejen sus comentarios sobre el resultado obtenido.

Quiero escribir sobre algo un poco diferente esta vez. Quité el codificador rotatorio de la rueda de desplazamiento mecánica de un mouse óptico desechado y lo usé en un pequeño proyecto. ¡Me gustó mucho el resultado!

La historia del truco de la medianoche
Pedí un codificador Grove-Mouse hace más de dos meses desde China, pero no me lo entregué a tiempo (luego me reembolsaron).

Mi intención era usarlo en un proyecto simple de atenuador de lámpara halógena de CC para alguien cercano a mí. Para hacerlo feliz, rescaté uno de un viejo ratón óptico que tenía. Este fue otro proyecto de medianoche.

Esta es una vista rápida de la placa de circuito de mi antiguo mouse óptico USB chino. Como puede ver, hay un pequeño codificador giratorio de rueda de desplazamiento del mouse (9 mm) y un sensor de mouse óptico de un solo chip: MX8733.

Este es el esquema del mouse óptico, proporcionado por el fabricante del chip MX8733 – Shenzhen LIZE Electronic Technology Co., Ltd (http://www.lizhiic.com).

Como es habitual, el codificador rotatorio tiene tres pines. Los pines de ‘datos’ (AB) están conectados directamente a los pines 1 y 8 del chip MX8733. Levanté el codificador rotatorio de la placa de circuito, ya que era lo único que necesitaba para mi proyecto. A continuación puede ver el dibujo de los pines de ese codificador rotatorio de la rueda de desplazamiento del mouse de 24 pasos y 9 mm.

Como se muestra arriba, el codificador rotatorio tiene dos pines de datos (AB) y un pin común (C). Básicamente, un codificador rotatorio tiene dos salidas, A y B, que se desplazan en el tiempo a medida que gira el eje, por lo que el microprocesador puede determinar la dirección y la cantidad de rotación aplicada al codificador. La siguiente figura muestra las formas de onda de voltaje anticipadas a medida que se gira el codificador rotatorio.

Una descripción en profundidad de la teoría de la codificación en cuadratura está ciertamente más allá del alcance de este artículo. Puede consultar manuales y proyectos relacionados publicados en otras partes de este sitio web.

Volviendo a mi historia, instalé un pequeño ‘circuito de prueba’ en una mini placa de pruebas alimentada por una fuente regulada de 5 VCC. Ver mi configuración de prueba:

Las salidas del circuito son ‘bajas’ por defecto, es decir, ambos LED (LED1 y LED2) están apagados. Cuando se gira el eje / perilla, habrá pulsos en las salidas (JP-A y JP-B), dependiendo de la dirección en que se gire el codificador rotatorio. Este es el diagrama de circuito de mi configuración de prueba rápida con dos LED ámbar de baja corriente de 5 mm como indicadores visuales. Las salidas ‘bajas’ son 0V aquí, y las salidas ‘altas’ son alrededor de 1.8V (en realidad, V F de los LED ámbar en uso).

Para ser más útiles, las señales codificadas por desplazamiento de fase se pueden traducir en dos señales lógicas, por ejemplo, ARRIBA y ABAJO. Si gira la rueda en el sentido de las agujas del reloj, la señal ARRIBA se registra en cada paso. Si es en sentido antihorario, la señal DOWN se registra en cada paso. Afortunadamente, usar el codificador de la rueda de desplazamiento del mouse con un Arduino Uno resultó ser fácil después de que hice una pequeña modificación (ver más abajo).

Aquí, JP-A y JP-B se renombran como D11 y D12 respectivamente. Puede ver un nuevo LED (LED3) vinculado a otro punto de circuito etiquetado como D9. La aplicación prevista es la perilla principal de ajuste / atenuación de un atenuador de lámpara halógena. La siguiente sesión describe cómo empleé este codificador de rueda de desplazamiento del mouse recuperado en el ‘plano’ de mi proyecto de atenuación de lámpara halógena. El LED3 anterior (con una resistencia en serie) se usa para pruebas / depuración rápidas del prototipo en lugar de la bombilla halógena de CC real (y su circuito de controlador). El LED3 es, de hecho, un LED rojo ultrabrillante de color rojo transparente como el agua de 5 mm que se utilizó originalmente como fuente de luz en otro ratón óptico desaparecido, es decir, como la parte marcada como D2 en el esquema MX8733 representado anteriormente.

El cableado es un trabajo sencillo. Simplemente enrute los dos pines de datos (A y B) del codificador a los pines D11 y D12 de Arduino Uno. El riel GND de Arduino es común al pin común (C) del codificador rotatorio y al cátodo del LED 3, mientras que el riel de 5V se usa para levantar los pines de datos (A y B). El pin D9 de Arduino controla el LED3. Durante el encendido, el LED se ilumina con un brillo cercano al 50% (como se define en el código). A continuación puede ver la forma de onda PWM disponible en D9 en la activación inicial.

Ahora puede regular su brillo de alrededor del 4% al 98% girando la rueda / perilla del codificador en el sentido de las agujas del reloj (arriba) y en sentido contrario (abajo). A medida que gire el codificador, la secuencia giratoria se traducirá en código binario, desde el cual Arduino puede evocar el número de pasos y la dirección de rotación.

El boceto de Arduino (código) para el proyecto se incluye a continuación. ¡Con suerte, este código debería ser lo suficientemente fácil de entender y pulir!

[code]

/* Mouse Encoder & LED PWM Dimmer :: Arduino Sketch v1 */

int brightness = 120; // Initial Lamp Brightness ~50%

int fadeAmount = 10;

unsigned long currentTime;

unsigned long loopTime;

const int enc_A = 11; // D11 Encoder A I/P

const int enc_B = 12; // D12 Encoder B I/P

unsigned char encoder_A;

unsigned char encoder_B;

unsigned char encoder_A_prev = 0;

void setup() {

pinMode(9, OUTPUT); // D9 Lamp Drive O/P

pinMode(enc_A, INPUT);

pinMode(enc_B, INPUT);

currentTime = millis();

loopTime = currentTime;

}

void loop() {

currentTime = millis();

if (currentTime >= (loopTime + 5)) {

encoder_A = digitalRead(enc_A);

encoder_B = digitalRead(enc_B);

if ((!encoder_A) && (encoder_A_prev)) {

if (encoder_B) {

if (brightness + fadeAmount <= 255) brightness += fadeAmount; } else { if (brightness - fadeAmount >= 0) brightness -= fadeAmount;

}

}

encoder_A_prev = encoder_A;

analogWrite(9, brightness);

loopTime = currentTime;

}

}

[/code]

Estas son las instantáneas de la placa de pruebas de mi banco de trabajo:

Esta no era mi construcción más hermosa.

Una cosa a tener en cuenta: se sabe que los codificadores de mouse baratos causan un gran rebote de contacto, por lo que deberá eliminar el rebote de la señal de los codificadores. Probé algunas variantes para C1-C2 y me conformé con condensadores electrolíticos de 2.2uF (un poco más altos que la norma) para mi codificador de mouse específico.

¡Esté preparado para una caminata perezosa por la web si decide construir un atenuador de lámpara modulado por ancho de pulso controlado por codificador rotatorio!

Próximo en la fila…

Hace mucho tiempo puse mis manos en un sensor de mouse óptico ADNS-2610 realmente antiguo, pero lamentablemente dejé ese experimento (https://www.electroschematics.com/optical-mouse-learn-to-hack/) a mitad de camino sin casi ningún avance. Todavía quiero trabajar con ese sensor, y ahora tengo un sensor de mouse óptico comparativamente nuevo para jugar. El MX8733 posee un interruptor interno para USB DP/DM y PS2 CLK/E/S de datos. Su circuito apenas necesita un cristal externo. No hay mucho que hacer: casi todos los sensores de mouse ópticos tienen una interfaz en serie bastante simple (reloj y datos) adecuada para conectarse a un microcontrolador como Arduino. De todos modos, ¡los tutoriales disponibles en línea son bastante escasos!

No hay mucho que ver con un sensor óptico de ratón común, pero no veo ninguna razón para rechazar el robusto «cerebro de ratón». Sin embargo, esta vez no voy a entrar en el flujo de mis ideas de proyectos al azar, pero en algún momento, compartiré algunas de ellas aquí.

Por cierto, encontré un par de hacks de sensores de mouse óptico en la web y encontré un pequeño módulo de código Arduino que lee los valores delta-X y delta-Y del antiguo sensor de mouse óptico MCS12085 (PS / 2) ya que se mueve. Más detalles del proyecto están en este enlace. https://blog.jgc.org/2012/09/conversion-of-cheap-optical-mouse-to.html. La hoja de datos de MX8733 promete que también es compatible con la interfaz PS / 2. ¡Hasta ahora no he podido hacerlo funcionar con mi Arduino Uno (cargado con el código mencionado anteriormente)! ¿Cómo puedo cambiar el MX8733 de su modo USB predeterminado al modo PS / 2 requerido? ¡Comparta sus pensamientos!

Por último, admito que acabo de usar este espacio para compartir una idea cruda sobre el empleo de un codificador de mouse barato en un proyecto de atenuador de luz Arduino PWM.

Anexo :

En mi proyecto de atenuador de lámpara halógena discutido aquí, he usado una lámpara halógena de 5W / 12V. Para accionar la lámpara halógena, un MOSFET de potencia D4184 precableado (http://www.agspecinfo.com/pdfs/D/D%204184.PDF) se utiliza ya que tiene un optoacoplador integrado para impulsar el mosfet con aislamiento galvánico entre el microcontrolador y la lámpara halógena. Para obtener más detalles, vaya a https://protosupplies.com/product/d4184-módulo-de-control-mosfet/

Fuente original (en inglés): Mouse Encoder Hack
Crédito de las imágenes: Electroschematics.com

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Enter Captcha Here : *

Reload Image