Tabla de contenido:

Cómo leer muchos interruptores con un pin MCU: 4 pasos
Cómo leer muchos interruptores con un pin MCU: 4 pasos

Video: Cómo leer muchos interruptores con un pin MCU: 4 pasos

Video: Cómo leer muchos interruptores con un pin MCU: 4 pasos
Video: 📚Curso básico de cómo 🔎 Leer EEPROM con Programador y Soldadura (Español 2023) 2024, Noviembre
Anonim
Cómo leer muchos interruptores con un pin MCU
Cómo leer muchos interruptores con un pin MCU

¿Alguna vez has estado trabajando en un proyecto (s) y el proyecto sigue creciendo y creciendo, mientras le agregas más cosas (a eso lo llamamos un Creaturismo Feaping)? En un proyecto reciente, estaba construyendo un medidor de frecuencia y agregué un generador de señal / sintetizador de frecuencia de cinco funciones. Pronto terminé con más interruptores de los que me quedaban pines disponibles, entonces, ¿qué puede hacer un chico?

Sin embargo, pronto tuve siete interruptores más en mi Funbox (sí, así es como llamé a mi generador de funciones … lo sé, no tengo creatividad) y aquí hay un breve instructivo que le muestra cómo puede hacer lo mismo. No requiere registros de desplazamiento ni circuitos integrados específicos. De hecho, tampoco requiere un microcontrolador, si se utilizan semiconductores discretos. Aquí hay una forma en que puede leer / administrar varios conmutadores usando un solo pin en su AVR (u otro microcontrolador … He oído que hay otros microcontroladores además del AVR, pero no puedo imaginarlo …).:)

Paso 1: Lo esencial (no realmente)

Para lograr esto, necesitará algunos componentes. Es útil tener una multitud de conmutadores que debe administrar. También necesitará algunas resistencias y un microcontrolador que tenga ADC (conversión analógica a digital) o alguna otra forma en la que le gustaría indicar que hubo un interruptor activado y cuál fue el interruptor.

Si lo desea, puede usar un oscilador controlado por voltaje para indicar esto, tal vez con algunas luces parpadeantes o, alternativamente, con sonido. En esta 'ible, voy a fingir que estamos usando un AVR, pero en tu mundo puedes fingir lo que sea que te haga feliz. Extraño a Bob Ross.

Paso 2: el divisor de voltaje

El divisor de voltaje
El divisor de voltaje
El divisor de voltaje
El divisor de voltaje

Esencialmente, la forma en que lo haremos es mediante el uso de una técnica y un circuito llamado divisor de voltaje. Los divisores de voltaje, como puede haber adivinado, dividen el voltaje V,, en,, por algún valor que usted determine. Puede dividir el voltaje con varios componentes, incluidos condensadores e inductores, pero aquí lo haré con la buena resistencia. La idea Lo que estamos haciendo es poner dos componentes en serie que causarán, cada uno individualmente, una caída de voltaje en el componente. Mira la primera imagen si no tengo sentido. Existe una diferencia de potencial de 9 V de riel a riel. Entre 9V y 0V hay dos resistencias en serie. Cada uno de estos experimentará una caída de voltaje en sí mismo, dependiendo de la resistencia, como probablemente recuerde de V = IR. Si toma una medida de voltaje entre las dos resistencias, obtendrá un valor entre 9V y 0V, dependiendo de cuánto voltaje haya caído en la primera resistencia y cuánto quede por caer sobre la segunda resistencia, antes de 0V. Existe una fórmula sencilla para calcular la caída de voltaje a través de una resistencia en esta situación y se ve así. Deje que el voltaje sobre la resistencia 1 (R1) sea V1 y el voltaje sobre la resistencia dos (R2) sea V2. Como ya no puedo usar el formato, mire la figura 2 a continuación para ver la fórmula … Entonces, en nuestro divisor resistivo, el voltaje Vout puede ser determinado por nuestra fórmula para V2 (ya que estaremos haciendo referencia a GND a 0V). ¿Qué tiene esto que ver con que se detecten un montón de interruptores desde un pin? Bueno, ¡pasa la página y te lo mostraré!

Paso 3: escalera divisoria de voltaje

Escalera divisora de voltaje
Escalera divisora de voltaje

Ahora suponga que tenemos todos nuestros interruptores, tal vez seis, ocho o dieciséis, todos conectados a través de resistencias que actúan como un divisor de voltaje, de modo que cuando cambia el estado del pin del interruptor, se lee el voltaje y, en función del nivel de voltaje, puede saber qué interruptor se acaba de activar. Mira abajo. En la imagen de abajo, he conectado dos bloques de interruptores. El bloque superior tiene dos interruptores y el bloque inferior tiene cinco interruptores. Puede conectar sus interruptores de palanca, momentáneos, táctiles, etc. separados de la misma manera. Lo importante a tener en cuenta es la resistencia a la que está conectado su interruptor. En mi ejemplo, casi he duplicado la resistencia de la siguiente resistencia para crear una brecha de voltaje que es fácil de medir y no confundir con el interruptor antes o después. Si no lo ha notado antes, mire de nuevo y descubra que estamos de vuelta con nuestro viejo amigo, el divisor de voltaje resistivo. La primera resistencia, la de 10 k ohmios, está conectada a 5 V y la segunda resistencia, la resistencia que determinará Vfuera para el pin SWITCH_ADC, está conectado a cada interruptor y, por lo tanto, cada interruptor está asociado con un voltaje Vout particular que se puede leer desde el pin ADC conectado en SWITCH_ADC. A continuación, determine el Vout esperado de cada interruptor de la siguiente manera

Vout = Vin * (R2 / (R1 + R2))

para el interruptor uno:

Vout = 5V * (500 / (10000 + 500)) = 5 * 0.048 = 0.24V o 240 mV

para el interruptor dos:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0.18 = 0.9V o ~ 900mV

y así sucesivamente … Siéntase libre de sustituir sus propios valores por R2 si solo tiene ciertas resistencias a mano … La clave aquí es mantener una brecha de voltaje lo suficientemente amplia entre los interruptores para que cualquier margen de error en el ADC gane ' le ponga en el voltaje esperado de un interruptor vecino. Descubrí que lo más fácil de hacer es construir la escalera divisora y colocar un multímetro / voltímetro en el pin ADC y presionar cada pin y ver qué valores obtienes. Deben ser bastante precisos para lo que calcula. Una vez que tenga todos los valores de voltaje esperados de cada interruptor usando una resistencia en particular, entonces puede hacer que su MCU lea el pin ADC y lo compare con sus valores conocidos para determinar qué interruptor se presionó. Por ejemplo, supongamos que ha registrado una rutina de servicio de interrupción que se llamará siempre que se detecte un cambio en el pin ADC. Dentro de ese ISR, puede leer el ADC y comparar ese valor con su tabla de interruptores. Si está utilizando un valor ADC de 8 bits, su voltaje se convertirá en un número entre 0 y 255 que corresponde a un voltaje entre 0V y 5V. Esto supone que tiene su ADC configurado de esta manera.

Paso 4: resumen

Entonces, ahora debe saber cómo ser frugal al usar pines GPIO para interruptores. Siempre que se esté quedando sin pines GPIO, o casi no tenga ninguno para empezar, o si se da cuenta de que va a utilizar un banco de interruptores, el divisor resistivo es el camino a seguir para guardar sus pines GPIO sin dejar de proporcionar un mecanismo robusto para detectar el acceso del interruptor.

Recomendado: