Features
- Eight optically-isolated output channels on card
- MCP23008 I2C Parallel I/O
- I2C (Two Wire interface)
- 100/400 KHZ operation
- Jumper selectable 2.2K Ohm terminators
- 3-bit address (Jumper selectable) - Up to 8 boards
- Single 4-pin host interface connector (Ground, Power, Clock, Data)
- 24LC024 ODAS Personality EEPROM
- pid = 5
- Write protect jumper
- 5V operation
- Compatible with Arduino, Raspberry Pi, BeagleBone Black
- DB-25F connector for rugged applications
- 95x95mm form factor
- (4) 6-32 mounting holes - one on each corner
MCP23008 Block Diagram
Optocoupler Performance
- Current Transfer ratio curve
- 25mA sink/source capability per I/O
- Maximum current out of VSS pin = 150 mA
- Maximum current into VDD pin = 125 mA
- Output transistor capacitance
Vcc
|
5.000
|
V
|
3.300
|
V
|
Vf LED
|
1.200
|
V
|
1.200
|
V
|
Res ser
|
330.000
|
Ohms
|
330.000
|
Ohms
|
If LED
|
11.515
|
mA
|
6.364
|
mA
|
CTR (min)
|
0.500
|
A/A
|
0.500
|
A/A
|
Iout
|
5.758
|
mA
|
3.182
|
mA
|
All pins Low
|
8
|
|
8
|
|
I(Vss pin)
|
92.121
|
mA
|
50.909
|
mA
|
I Max (Vss)
|
150.000
|
|
150.000
|
|
Loading
|
61.41%
|
|
33.94%
|
|
Output Stage
Connectors
J1 - Power
J2-J3 - I2C
J4 - I2C Address Select Jumpers
J5 - I2C Termination Jumpers
J6 - Card Present/Interrupt
- GND
- INT
- CP - Card present (pulled low)
J7 - I/O connector
DB-25 Female
OptoOut
|
OptoOut
|
DB25RIB
|
DIGIO32
|
DB37RIB
|
|
OptoOut
|
OptoOut
|
DB25RIB
|
DIGIO32
|
DB37RIB
|
Pin
|
Descr
|
Pin_26
|
Descr
|
Pin_40
|
|
Pin
|
Descr
|
Pin_26
|
Descr
|
Pin_40
|
1
|
S7
|
1
|
C1PA7
|
18
|
|
14
|
V7
|
2
|
C0PB7
|
20
|
2
|
G7
|
3
|
C0PA7
|
35
|
|
15
|
S6
|
4
|
C1PA6
|
16
|
3
|
V6
|
5
|
C0PB6
|
22
|
|
16
|
G6
|
6
|
C0PA6
|
33
|
4
|
S5
|
7
|
C1PA5
|
14
|
|
17
|
V5
|
8
|
C0PB5
|
24
|
5
|
G5
|
9
|
C0PA5
|
31
|
|
18
|
S4
|
10
|
C1PA4
|
12
|
6
|
V4
|
11
|
C0PB4
|
26
|
|
19
|
G4
|
12
|
C0PA4
|
29
|
7
|
S3
|
13
|
C1PA3
|
10
|
|
20
|
V3
|
14
|
C0PB3
|
28
|
8
|
G3
|
15
|
C0PA3
|
27
|
|
21
|
S2
|
16
|
C1PA2
|
8
|
9
|
V2
|
17
|
C0PB2
|
30
|
|
22
|
G2
|
18
|
C0PA2
|
25
|
10
|
S1
|
19
|
C1PA1
|
6
|
|
23
|
V1
|
20
|
C0PB1
|
32
|
11
|
G1
|
21
|
C0PA1
|
23
|
|
24
|
S0
|
22
|
C1PA0
|
4
|
12
|
V0
|
23
|
C0PB0
|
34
|
|
25
|
G0
|
24
|
C0PA0
|
21
|
13
|
N/C
|
25
|
|
|
|
|
|
26
|
|
|
Design Validation/First Article Test
Pass Count = 17977, Fail Count = 0
- Runs ODAS Card Test Software on Arduino Nano
- Loopback cables
- Cable connects to DB-25 and NANO-BKOUT pins
- USB running puTTY
- Menu driven
- Auto-detect card if test has been run before
Checking EEPROM for board type...Detected OptoIn8-I2C board
R=Read EEPROM, W=Write EEPROM, T=Test DIGIOs, L=Loop Test, B=Bounce LEDs
- Presents card type list for un-programmed EEPROMs
Checking EEPROM for board type...Company Mismatch
Select the board type
1 - DIGIO16-I2C board
2 - DIGIO-128 board
3 - OptoIn8-I2C board
4 - OptoOut8-I2C board
5 - DIGIO32-I2C board
6 - PROTO16-I2C board
7 - ODAS-PSOC5 board
8 - TBD board
9 - TBD board
Select board >
Select board > 3
Writing EEPROM
Initializing eep buffer
len of buffer=96
reading block
Family=ODAS
Company=land.boards.com
OptoIn8-I2C failed HIGH on bit 1
Read back on 1
OptoIn8-I2C failed HIGH on bit 2
Read back on 2
OptoIn8-I2C failed HIGH on bit 4
Read back on 4
OptoIn8-I2C failed HIGH on bit 8
Read back on 8
OptoIn8-I2C failed HIGH on bit 16
Read back on 16
OptoIn8-I2C failed HIGH on bit 32
Read back on 32
OptoIn8-I2C failed HIGH on bit 64
Read back on 64
OptoIn8-I2C failed HIGH on bit 128
Read back on 128
Loopback Test PASS = 0, FAIL = 1
- Pass Checking EEPROM for board type...Detected OptoIn8-I2C board
R=Read EEPROM, W=Write EEPROM, T=Test DIGIOs, L=Loop Test, B=Bounce LEDs
Loopback Test PASS = 1, FAIL = 0
Production Tests
Test Station Theory of Operations
- Test Station controls/read the Opto outputs via the DIGIO32 card in the Test Station
- Puts out 8 bits on OptoOut8-I2C card
- Reads the 8 bits on DIGIO32 card
- There are three lines per Channel that need to be connected:
- Ground (Gx), Power (Vx), Open Collector Output (Sx)
- If the LED is not being driven, the Open Collector output will be pulled up
- Wire Grounds to Digio32 channels 0-7
- Wire Powers to Digio32 channels 8-15
- Wire Signals to Digio32 channels 16-23
- Resistors can be checked by setting the Power line high and checking the OC outputs
- OptoOut8-I2C card is stimulated by writing to its I2C interface
- Verifies that the Optos work
Test Station Set-up
- Uses ODAS Test Station V2
- Unit Under Test (UUT)
- Attach Host Computer USB to the Arduino NANO on the Test Station
- Run puTTY on the Host Computer
EEPROM Programming
- First time the UUT card is tested, the Test Station auto-detects that the card has an unprogrammed EEPROM
- Test Station also determines that the card has (1) MCP23008 and presents menu
Checking if EEPROM is present on UUT...EEPROM is present on UUT
Checking EEPROM for board type...Board signature error in EEPROM on UUT
Count of I2C devices in range 0x20-0x27 on UUT = 1
No external I2C mux card
Detected MCP23008
Select the board type (EEPROM)
3 - OptoIn8-I2C board
4 - OptoOut8-I2C board
9 - TBD board
X - Boards without EEPROMs
Select board >
- Enter 4
- Test Station will program EEPROM and print
Writing EEPROM
Initializing eep buffer
len of buffer=96
reading block
Family=ODAS
Company=land-boards.com
Product=OptoOut8-I2C
C=Card Tests, D=Direct, E=EEPROM, I=access Internal DIGIO32
Running card Test
- Select Card Tests = "C"
- Select Run Tests = "T"
- Observe test results
Card Debugging
- Need to set power and ground to power the OptoCoupler outputs
- Outputs via writing out the MCP23008 on the UUT
- Read back on the DIGIO32-I2C card
Setup Power and Ground
- Drive Grounds to Digio32 channels 0-7 (dec)
- I from top menu accesses the DIGIO32-I2C Internal to Test Station
- L command sets pins to low
- L 0x00 through L 0x07 sets the Ground pins to Low
C=Card Tests, D=Direct, E=EEPROM, I=access Internal DIGIO32
Direct Access Test Station DIGIO32 Hardware
H=Write High, L=Write Low, R=Read a bit, X=eXit
Bit to clear Low (HEX): 0x00
Bit to clear Low (HEX): 0x01
Bit to clear Low (HEX): 0x02
Bit to clear Low (HEX): 0x03
Bit to clear Low (HEX): 0x04
Bit to clear Low (HEX): 0x05
Bit to clear Low (HEX): 0x06
Bit to clear Low (HEX): 0x07
- Drive Powers to Digio32 channels 8-15 (dec)
- I from top menu accesses the DIGIO32-I2C Internal to Test Station
- H command sets pins to low
- H 0x08 through H 0x0F sets the Ground pins to Low
Bit to set High (HEX): 0x08
Bit to set High (HEX): 0x09
Bit to set High (HEX): 0x0a
Bit to set High (HEX): 0x0b
Bit to set High (HEX): 0x0c
Bit to set High (HEX): 0x0d
Bit to set High (HEX): 0x0e
Bit to set High (HEX): 0x0f
Write through UUT, Read via Internal DIGIO32-I2C
- Wire Signals to Digio32 channels 16-23
- D command accesses the UUT
- H or L 0x00 through H or L ox07 sets the pins high or low
- Measure signal at pullup resistor on output
- Signal should toggle
- X to exit menu
Bit to clear Low (HEX): 0x00
Bit to set High (HEX): 0x00
- I from top menu accesses the DIGIO32-I2C
- R 0x10 through 0x17 reads the output back
Drivers
Revision History
Revision X4
- Move DB-25 mounting hole to center of pins
Revision X3
Revision X2
- Added I2C terminators and jumpers
- Added Write enable jumper
Layout Rev x2
Revision X1
- J5 pin 1 indicator needs to be moved
File:OPTO8-OUT-I2C REV X1
Assembly Sheet
OPTO8-OUT-I2C REV X2 Assembly Sheet