OptoOut8-I2C

From Land Boards Wiki
Jump to navigation Jump to search

Tindie-mediums.png

OptoOut8-I2C-X3-CCA-5452-640px.jpg

Features

  • Eight optically-isolated output channels on card
    • (8) 4N25 optoisolators
  • 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

MCP23008-Blk-Dia.PNG

Optocoupler Performance

4N28-DC-TransferRatio.PNG

  • 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

4N28-CurrentTransferRatio-curve.PNG

  • LED Current vs voltage

4N28-LED-IvsV.PNG

  • Output transistor capacitance

4N28-OutputCapacitance.PNG

  • Switching Time

4N28-SwitchingTime.PNG

  • Opto Characteristics
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

OptoOutputStage.PNG

Connectors

J1 - Power

OptoOut8-I2C-J1-Power-X2.PNG

J2-J3 - I2C

OptoOut8-I2C-J2-I2C-X2.PNG

J4 - I2C Address Select Jumpers

OptoOut8-I2C-J4-AdrSel-X2.PNG

J5 - I2C Termination Jumpers

OptoOut8-I2C-J5-I2C-Terms-X2.PNG

J6 - Card Present/Interrupt

OptoOut8-I2C-J6-Int-Terms-X2.PNG

  1. GND
  2. INT
  3. CP - Card present (pulled low)

J7 - I/O connector

OptoOut8-I2C-X3-CCA-5457-640px.jpg

DB-25 Female

OptoOut8-db25 f.gif

OptoOut8-I2C-J7-sch-X2.PNG

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

  • Test Code
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
    • 9600 baud
  • 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
Select board > 3
Writing EEPROM
Initializing eep buffer
len of buffer=96
reading block
Family=ODAS
Company=land.boards.com
  • Test 'T'
  • Fail (no cable)
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 OptoOut8-I2C card using this procedure.

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

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
    • If the wrong cards are listed, verify jumpers (as above) are installed on UUT
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
  • After first time card is powered up, menu will show
Checking if EEPROM is present on UUT...EEPROM is present on UUT
Checking EEPROM for board type...Detected OptoOut8-I2C board
Count of I2C devices in range 0x20-0x27 on UUT = 1
No external I2C mux card
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
Testing UUT = OptoOut8-I2C
Test PASS = 1, FAIL = 0

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 4 (2022-9)

  • Move to KiCad 6
  • Move DB-25 to board edge
    • Verified connector is flush
  • Fix DB-25 mounting hole locations
    • Holes line up perfectly with connector which has built in tabs
  • Add filled power layer pour on top
  • Improve legends
  • Order new batch of boards
    • Tested first board, passed all tests
    • Built/tested 8 cards - all worked
  • Cards actually have green silkscreen

OptoOut8-I2C REV4 FRONT 3D.png

Revision X3

  • Move DB-25 left

Revision X2

  • Added I2C terminators and jumpers
  • Added Write enable jumper

Layout Rev x2

OptoOut8-I2C-layout-X2.PNG

Revision X1

  • J5 pin 1 indicator needs to be moved

Assembly Sheet