Los multiplexores y demultiplexores son dispositivos que nos permiten controlar un mayor número de dispositivos con un número menor de entradas o salidas. Podemos emplear estos dispositivos para ampliar el número de entradas y salidas de un procesador como Ardunio.
Un multiplexor (o mux) permite dirigir múltiples señales a una única entrada. El dispositivo inverso se denomina demultiplexor (o demux) y permite dirigir una única señal a múltiples salidas.
El CD74HC4067 es un Multiplexor/Demultiplexor de 16 canales bidireccionales. Podemos considerarlo como un interruptor controlado digitalmente, que conecta el pin común con uno de los canales disponibles.
Esto permite escribir o leer de 16 dispositivos con solo 5 pines. 4 de ellos controlan el dispositivo que queremos leer. El pin restante recoge la señal leída o escrita en el canal seleccionado.
Anuncio:
EL CD74HC4067 funciona con señales digitales y analógicas tanto como entrada como salida. Por este motivo a este tipo de dispositivos se les denomina ampliadores de entradas y salidas (I/O expanders).
EL CD74HC4067 también puede ser empleado en dispositivos de comunicación como el puerto serie, bus I2C o bus SPI. Por ejemplo, podemos conectar el pin TX del UART para enviar información a múltiples dispositivos. No obstante, para una comunicación completa necesitaremos más de un CD74HC4067, uno por cada pin que intervenga en la comunicación.
El máximo de corriente que puede proporcionar es 20 mA, limitado, pero tampoco es un gran problema dado que es similar a la intensidad máxima que puede proporcionar un pin de Arduino. Para corriente superiores será necesaria una etapa de amplificación mediante transistor, o salida por relé.
La tensión de alimentación del CD74HC4067 es entre 2V a 6V. En cualquier caso, las tensiones de las señales de los dispositivos no pueden superar a la tensión Vcc.
Los multiplexores CD74HC4067 son dispositivos baratos. Podemos encontrarlos por 0.80€ en vendedores internacionales de eBay o AliExpress.
La conexión es sencilla. Por un lado, alimentamos el CD74HC4067 conectando Vcc y Gnd respectivamente a 5V y Gnd en Arduino. También conectamos el chip EN a 5V, para activar el CD74HC4067.
Por otro lado, conectamos los pines S0, S1, S2 y S3, que controlan el canal activo, a 4 salidas digitales cualquier de Arduino. Finalmente, conectamos el pin de señal a una entrada o salida de Arduino. En el esquema emplearemos el pin A0, pero podría ser cualquier otro pin analógico o digital.
La conexión, vista desde Arduino, sería la siguiente, donde nuevamente hemos empleado el pin A0 pero podríamos emplear cualquier otro pin.Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjA
CD74HC4067 como salida
En el primer ejemplo mostramos el uso del CD74HC4067 para añadir salidas. El siguiente código enciende y apaga progresivamente los 16 canales. Para ello cambiamos los pins de dirección, y empleamos una salida digital de Arduino para encender y apagar el pin de señal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
27
28
29
30
31
32
33
34
|
const
int
muxSIG
=
A0
;
const
int
muxS0
=
8
;
const
int
muxS1
=
9
;
const
int
muxS3
=
11
;
int
SetMuxChannel
(
byte
channel
)
{
digitalWrite
(
muxS0
,
bitRead
(
channel
,
0
)
)
;
digitalWrite
(
muxS1
,
bitRead
(
channel
,
1
)
)A Ruedas Para Curtiss De Vr2 Distancia Wright Silla Mando iTuXZOPk;
digitalWrite
(
muxS2
,
bitRead
(
channel
,
2
)
)
;
digitalWrite
(
muxS3
,
bitRead
(
channel
,
Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjA
3
)
)
;
}
void
setup
(
)
{
pinMode
(
muxSIG
,
OUTPUT
)
;
pinMode
(
muxS1
,
OUTPUT
)
;
pinMode
(
muxS2
,
OUTPUT
)
;
pinMode
(
muxS3
,
OUTPUT
)
;
}
void
Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjAloop ( )
{
for
(
byte
i
=
0
;
i
Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjA
<
16
;
i
++
)
{
SetMuxChannel
(
i
)
;
digitalWrite
(
muxSIG
,
HIGH
)
;
delay
(
200
)
;
digitalWrite
(
muxSIG
,
LOW
)
Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjA
;
delay
(
200
)
;
}
}
|
CD74HC4067 como entrada
El siguiente ejemplo muestra la lectura de valores mediante el CD74HC4067. El siguiente código realiza secuencialmente la lectura analógica del pin A0, y muestra la lectura por el puerto serie. Igual que en el código anterior cambiamos los pines de dirección, pero ahora empleamos la lectura analógica del pin de señal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 0 De Cosmos Britax Safe Silla Römer Negro Auto Grupo Baby Black 5qR3AjL4c17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
const
int
muxS0
=
8
;
const
int
muxS1
=
9
;
const
int
muxS2
=
10
;
const
int
muxS3
=
11
;
int
SetMuxChannel
(
byte
channel
)
{
digitalWrite
(
muxS0
,
Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjA
bitRead
(
channel
,
Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjA
0
)
)
;
digitalWrite
(
muxS1
,
bitRead
(
channel
,
1
)
)
;
digitalWrite
(
muxS2
,
bitRead
(
channel
,
2
)
)
;
digitalWrite
(
muxS3
,
bitRead
(
channel
,
3
)
)
;
}
void
setup
(
)
{
Serial
.
Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjA
begin
(
9600
)
;
pinMode
(
muxS0
,
OUTPUTEn Desplazadoso Sin De Hacer Iluminar Puntos Obras Lámparas Luz I7Ybgfv6y)
;
pinMode
(
muxS1
,
OUTPUT
)
;
pinMode
(
muxS2
,
OUTPUT
)
;
pinMode
(
muxS3
,Gabinete Lámpara De Ángulo Modelado Led Caballo Pantalla Habitación xoeCdrWQB
OUTPUT
)
;
}
void
loop
(
)
{
for
(
byte
i
=
0
;
i
<
16
;
i
++
)
{
SetMuxChannel
(
i
)
;
byte
muxValue
=
analogRead
(
Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjA
muxSIG
)
;
Serial
.
print
(
muxValue
)
;
Serial
.
print
(
"\t"
)
;
}
Pie JacobsenRéplicaNegro De De Lámpara Lámpara Lámpara JacobsenRéplicaNegro De Pie q4R35LjA
Serial
.
println
(
)
;
delay
(
1000
)
;
}
|
Anuncio: