Mux Shield II User Guide PDF
Mux Shield II User Guide PDF
Table Of Contents:
Introduction 1
Hardware Description 1
Pin Descriptions 2
Freeing up Pins by Using Solder Jumpers 2
Suggested I/O Connectors 4
MuxShield Library for Arduino 5
_________________________________________
Introduction
Sometimes you need extra inputs and outputs on your Arduino; maybe you’re taking readings from dozens of
sensors or controlling a bunch of LEDs. Whatever it is, the Mux Shield will help you out. Stack it onto your Arduino
and you’ve just added 48 extra I/O pins. You can select whether the pins are analog inputs, digital inputs, or digital
outputs. The Mux Shield uses a clever combination of multiplexers, shift registers, and control signals to
accomplish this but don’t worry - it’s all wrapped up in a simple-to-use library that comes with examples.
This guide will help you get up and running and also explain how the shield works. If you want to skip the details
and get down to business, install the library and run the demo examples (see the MuxShield Library for Arduino
section).
_________________________________________
Hardware Description
The Mux Shield is an input and output (I/O) expander for Arduino platforms. It contains 48 connections for
increasing the number of analog inputs, digital inputs, and digital outputs. These 48 connections are split up into
three 16-pin rows: I/O1, I/O2, and I/O3. Each of these rows may be independently set as analog inputs, digital
inputs, or digital outputs in firmware or by using solder jumpers. That means you could have 16 analog inputs, 16
digital inputs, and 16 digital outputs simultaneously, or 32 digital outputs and 16 analog inputs simultaneously, or 48
digital outputs simultaneously, etc. Each 16-pin row cannot have split functionality - i.e. having 3 analog inputs and
13 digital outputs on row I/O1 is not possible. The Mux Shield uses Arduino digital pins 2, 4, 6, 7, analog input pins
A0, A1, A2, and optionally uses digital pins 8, 10, 11, 12.
The Mux Shield uses TI 74HC4067 analog multiplexers (mux’s) for input functionality and TI 74HC595 shift
registers for output functionality. Control lines are used in different ways depending on whether the I/O row is to be
an input or an output. If the I/O row is set as an input, the control lines are used as address lines to the mux’s. If
the row is an output, the control lines are used as clock and latch lines to the shift registers. See the Pin
Descriptions section for more details on how these lines are used.
Pin Descriptions
Name Pin Description
S0 2 Select 0: Acts as address input S0 for multiplexers IC7, IC8, IC11 when OUT MODE is
low; acts as serial clock SCLK for shift registers IC3 and IC4 when OUT MODE is high
S1 4 Select 1: Acts as address input S1 for multiplexers IC7, IC8, IC11 when OUT MODE is
low; acts as serial clock SCLK for shift registers IC5 and IC6 when OUT MODE is high
S2 6 Select 2: Acts as address input S2 for multiplexers IC7, IC8, IC11 when OUT MODE is
low; acts as serial clock SCLK for shift registers IC9 and IC10 when OUT MODE is high
S3 7 Select 3: Acts as address input S2 for multiplexers IC7, IC8, IC11 when OUT MODE is
low; acts as latch clock LCLK for shift registers IC3, IC4, IC5, IC6, IC9, IC10 when OUT
MODE is high
OUT MODE 8 Pulled high to communicate with shift registers, pulled low to communicate with mux’s
IOS1 10 In/Out Select 1: Pulled low when row I/O1 connections are to be used as inputs to
Arduino; pulled high when row I/O1 connections are to be used as outputs from Arduino
IOS2 11 In/Out Select 2: Pulled low when row I/O2 connections are to be used as inputs to
Arduino; pulled high when row I/O2 connections are to be used as outputs from Arduino
IOS3 12 In/Out Select 3: Pulled low when row I/O3 connections are to be used as inputs to
Arduino; pulled high when row I/O3 connections are to be used as outputs from Arduino
I/O1 A0 In/Out 1: Common input or output signal for row I/O1; used as a serial output to shift
registers IC3 and IC4 when IOS1 is high; used as common input from multiplexer IC7
when IOS1 is low
I/O2 A1 In/Out 2: Common input or output signal for row I/O2; used as a serial output to shift
registers IC5 and IC6 when IOS2 is high; used as common input from multiplexer IC8
when IOS1 is low
I/O3 A2 In/Out 3: Common input or output signal for row I/O3; used as a serial output to shift
registers IC9 and IC10 when IOS3 is high; used as common input from multiplexer IC11
when IOS1 is low
To free up Arduino pin 10, and hardwire row I/O1 as either input or output:
1. Cut the trace between the pads of SJ2 (shown
in red). A solder jumper can be placed between
these pads at a later time if you want to re-enable
software control of whether I/O1 is used as input
or output.
To free up Arduino pin 11, and hardwire row I/O2 as either input or output:
1. Cut the trace between the pads of SJ3 (shown
in red). A solder jumper can be placed between
these pads at a later time if you want to re-enable
software control of whether I/O2 is used as input
or output.
To free up Arduino pin 12, and hardwire row I/O3 as either input or output:
1. Cut the trace between the pads of SJ4 (shown
in red). A solder jumper can be placed between
these pads at a later time if you want to re-enable
software control of whether I/O3 is used as input
or output.
To free up Arduino pin 8, the Mux Shield must use all 48 I/O’s as either all inputs (analog or digital) or all outputs.
This is because pin 8 is used as a control signal gate and chip enable signal. If pin 8 is freed up, pins 10, 11, and
12 are no longer needed and can be disconnected using the directions above.
1. Cut the trace between the pads of SJ1 (shown
in red). A solder jumper can be placed between
these pads at a later time if you want to re-enable
software control of input/output configuration.
Manufacturer’s Site:
http://www.te.com/catalog/pn/en/5650868-5
Mouser:
http://www.mouser.com/Search/Refine.aspx?Keyword=5650868-5
DigiKey:
http://www.digikey.com/product-detail/en/5650868-5/
Manufacturer’s Site:
http://www.te.com/catalog/pn/en/5535070-4
Mouser:
http://www.mouser.com/Search/Refine.aspx?Keyword=5535070-4
DigiKey:
http://www.digikey.com/product-detail/en/5535070-4/
Manufacturer’s Site:
http://www.te.com/catalog/pn/en/650477-5
Mouser:
http://www.mouser.com/Search/Refine.aspx?Keyword=650477-5
DigiKey:
http://www.digikey.com/product-detail/en/650477-5/
Manufacturer’s Site:
http://www.te.com/catalog/pn/en/650478-5
Mouser:
http://www.mouser.com/Search/Refine.aspx?Keyword=650478-5
DigiKey:
http://www.digikey.com/product-detail/en/650478-5/
Function Reference:
MuxShield()
Description: Use this to create an instance of the MuxShield library
Parameters: None
Return Value: None
MuxShield(int S0, int S1, int S2, int S3, int OUTMD,int IOS1, int IOS2, int IOS3,
int IO1, int IO2, int IO3)
Description: Create an instance of the MuxShield library with user-defined pins
Parameters: Arduino pin numbers that correspond to Mux Shield pins (see pin definitions section)
Return Value: None