6 votos

Entradas de multiplexación de un microcontrolador

Yo tengo una de 4 interruptor DIL que puedo utilizar para proporcionar la entrada a un microcontrolador, y necesito liberar un puerto a usar para algo más.

Hay una manera para multiplexar 4 entradas a los 3 puertos del microcontrolador? Estoy pensando que puede haber alguna manera de tener 2 pines como entradas, y una 3ª pin de salida que puede ser impulsada por alto a leer el interruptor 1 y 2, y baja para leer el interruptor 3 y 4.

Mi actual diseño simple que se muestra a continuación, se puede hacer esto con sólo 3 pines?

schematic

5voto

lillq Puntos 4161

Lo que usted describe es un 2-en-1 multiplexor, como el 74HC157, que es un quad 2-multiplexor de entrada, por lo que 2 entradas a 1 salida y 1 seleccione la entrada. Utiliza dos multiplexores para las cuatro entradas.

El 74HC153 hace una cosa similar, pero es un dual 4-a-1 multiplexor, por lo que 4 entradas, 1 salida y 2 seleccione las líneas de cada multiplexor. Personalmente creo que la solución lógica para su aplicación.

Conecte la entrada de enable a la tierra, y no se olvide de conectar las entradas no utilizadas, ya sea subterránea o Vcc.

4voto

rishi Puntos 1

Como alternativa a la solución de Steven podría utilizar un demux de 2:4 como este:

Schematic

3voto

lillq Puntos 4161

Gran solución por jippie. Me gustaría explicar un poco en ella.

El esquema:

enter image description here

La idea es hacer uno de los I/Os de salida y los otros dos de entrada que permite leer el estado de los dos botones. Tres veces la salida de \$\times\$ dos entradas es bueno para los 6 botones como el esquema muestra.

¿Cómo puedo activar la salida? Hacen de alto? Vamos a hacerlo para pin 1, entonces diodos B y F son en diagonal hacia adelante, por lo que esperamos ser capaces de leer los botones. Para muchos microcontroladores esto no va a funcionar. Pulsar el botón B hará que la entrada 2 de alta, pero ¿y si el botón no está presionado? La entrada sería flotantes y, a continuación, usted no puede leer nada significativo. Una resistencia pull-down podría ayudar, pero muchos de los microcontroladores sólo tienen resistencias pull-up, y entonces nunca vas a leer un nivel bajo. Yo no sé acerca de todos ellos, pero, al menos, un número de AVR y microcontroladores PIC sólo pull-ups.

En ese caso, la forma correcta es activar la interna de pull-ups y activar la salida por lo que es baja. No estamos controlando los botones B y F, pero Una y E. Si el botón no está pulsado el pull-up va a hacer la entrada 2 de alto. Presione Un botón y tire de la entrada baja.

El algoritmo:

IO2 = input, pull-up enabled
IO3 = input, pull-up enabled
IO1 = output, low
Button_A = IO2 (low = pressed)
Button_E = IO3 (low = pressed)

IO1 = input, pull-up enabled
IO2 = output, low
Button_B = IO1 (low = pressed)
Button_C = IO3 (low = pressed)

IO2 = input, pull-up enabled
IO3 = output, low
Button_F = IO1 (low = pressed)
Button_D = IO3 (low = pressed)

Que yo sepa todos los NXP Cortex-M de los controladores, por ejemplo, tienen ambos configurables pull-up/pull-down resistencias. Para los que se puede utilizar en lógica positiva (alta = presionado) si se utiliza el pull-downs, y un activo de alto rendimiento. Tenga en cuenta que usted va a leer botones diferentes para la misma salida:

IO2 = input, pull-down enabled
IO3 = input, pull-down enabled
IO1 = output, high
Button_B = IO2 (high = pressed)
Button_F = IO3 (high = pressed)

IO1 = input, pull-down enabled
IO2 = output, high
Button_A = IO1 (low = pressed)
Button_D = IO3 (low = pressed)

IO2 = input, pull-down enabled
IO3 = output, high
Button_E = IO1 (low = pressed)
Button_C = IO3 (low = pressed)

2voto

Reserved Puntos 39

Me di cuenta de que usted tiene una entrada analógica allí. Si desea utilizar una cantidad mínima de componentes conecte un lado de todos los interruptores en la entrada analógica, a continuación, conecte la entrada analógica a +V con un resistor de 1K. Conectar cuatro diferentes valores de resistencias al otro lado de los interruptores. Elija sus resistencias cuidadosamente para asegurar que usted recibe un voltaje diferente, independientemente de cuántos interruptores están a la vez. Generar una interrupción cuando la conversión a/D valor está cambiando, o tener una rutina que lee el valor tan a menudo como usted requiere.

2voto

Alex Andronov Puntos 178

Si usted puede confiar en su I/O pins para cambiar en el mismo umbral, y no te importa la deshabilitación de las interrupciones durante un largo momento, mientras usted lee los interruptores (por ejemplo, porque usted acaba de leer en el inicio), se pueden utilizar dos terminales de e/S, seis resistencias y un condensador. El alambre de 1K, 2.2 K, 4.7 K y 10K resistencia en paralelo con cada interruptor y cable de todos los interruptores en serie, de modo que la cadena tendrá resistencia total de aproximadamente 0 17,9 K. Poner un resistor de 1K en serie con cadena y ate un extremo de la cadena a una de las patillas del puerto y el otro extremo a un condensador. El otro extremo del condensador debe ir a tierra. Alambre de un resistor de 10K desde el otro de la clavija de puerto para que el condensador.

Para determinar el ajuste del interruptor, suelo tanto los pines de los puertos y los dejan a tierra por un tiempo. Luego flotar el conectado a la cadena de resistencias y la unidad a la que está conectada a el resistor de 10K. Cuánto tiempo tarda para el pin conectado a la resistencia de la cadena de ir alto. Luego el suelo tanto de los pines de los puertos, dejarlos a tierra por un tiempo, y flotan en el pin conectado a la 10K, mientras que la conducción de la resistencia de la cadena de pin de alto y cuánto tiempo se tarda para la 10K pin para cambiar.

Si los pines del interruptor en la igualdad de tensiones, la relación de las veces va a ser la relación de las resistencias. Desde el 10K resistencia es conocida, se puede calcular el otro.

Es posible mejorar la precisión ligeramente mediante el uso de un tercer pin conectado directamente al condensador para determinar cuando es convenientemente cargada; con el mismo pin para ambas medidas podría asegurar que tanto las mediciones se toman con el mismo umbral de conmutación.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X