

The Illinois Tech Robotics RIB is a custom PCB used to control our robots of all sizes.
- Size
- 140 × 90 mm
- Copper layers
- 2
- Thickness
- 1.65 mm
- Parts
- 96
- Nets
- 155
- Pads
- 607
- Tracks, vias
- 2,396, 2,580
- Pours
- 7
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 14 Feb 2023
- Updated
- 28 Sep 2023
Overview
Rib is an open-source printed circuit board by illinoistechrobotics, from the illinoistechrobotics/rib repository on GitHub. It is a 2-layer board of 140 × 90 mm with 96 parts on 155 nets, routed with 2,396 tracks and 2,580 vias.
It is built around the 74HCT244D, PCF8574T and MAX6959AAEE+, with the MCP3008-I/P, DC56-11EWA and LM3940IT-3.3 among its other parts. Its parts include 21 resistors, 19 connectors, 10 ICs, 10 diodes and 8 capacitors. It belongs with the robots and motor control boards and the RP2040 boards of this library.
Main components
1174HCT244D
SO-20-300mil-40℃~+125℃ 13ns@4.5V,50pF 160uA 2 4 4.5V~5.5V 6mA 6mA 74HCT Tri-State Unidirectional SOIC-20-300mil Buffers, Drivers, Receivers, Transceivers ROHSNexperiaBuffers, Drivers, Receivers, TransceiversPCF8574T
SOP-16-300mil-40℃~+85℃ 100kHz 10uA 2.5V~6V 25mA 300uA 8 8 Cascading and address extension、Built-in LED driver I2C Interrupt Output Open-drain SOP-16-300mil I/O Expanders ROHSHGSEMII/O ExpandersMAX6959AAEE+
QSOP-16-150mil-40℃~+125℃ 2-Wire Serial Interface 23mA 3V~5.5V 400kHz 5.9mA 667mW 8 Segment x 4 Digit Adjustable Glow、Key Scan QSOP-16-150mil Digital Tube Drivers ROHSMaxim Integrated (Analog Devices)LED Display DriversMCP3008-I/P
PDIP-16-40℃~+85℃ 1.35MHz~3.6MHz 10 1LSB 2.7V~5.5V 200kHz 5nA 61dB 8 Multiplexers SAR SPI Yes PDIP-16 Analog to Digital Converters (ADC) ROHSMicrochip TechnologyAnalog To Digital Converters (ADC)DC56-11EWA
DIP-180.56 19.05mmx25mmx8mm 2 7 Segment 75mW Common Cathode Red DIP-18 LED Segment Displays ROHSKingbrightLED Segment DisplaysLM3940IT-3.3
TO-220-40℃~+125℃ 1 10mA 150uVrms 1A 200mV@(100mA) 3.3V 7.5V Fixed Over Temperature Protection、Short Circuit Protection Positive TO-220 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSTexas InstrumentsLinear Voltage Regulators (LDO)MCT9001
DIP-8-55℃~+100℃ 1V 2 2.4us 2.4us 30mA 400mV@2.4mA,8mA 50% 55V 5V 5kV 600% 60mA DC Phototransistor DIP-8 Transistor, Photovoltaic Output Optoisolators ROHSonsemiTransistor, Photovoltaic Output OptoisolatorsSB260
DO-151 Independent 2A 500uA 60V 700mV DO-15 Schottky Diodes ROHSLeshan Radio (LRC)Schottky DiodesSB230
DO-15-50℃~+150℃ 1 Independent 2A 30V 500mV@2A 500uA@30V 55A DO-15 Schottky Diodes ROHSDIOTECSchottky DiodesSTP2N80K5
TO-220-3MOSFETsSTMicroelectronics1N5339B
DO-27-65℃~+200℃ 1 Independent 1Ω 2uA 400Ω 5.32V~5.88V 5.6V 5W DO-27 Zener Diodes ROHSonsemiZener Diodes
README
README.mdIllinois Tech Robotics - Robot Interface Board (RIB)
This is a PCB design based around the existing Goliath protoboards, but adapted to work with a Raspberry Pi Pico (W), but is also usable with other robot designs using solder bridge jumpers to support various configurations.
Features
Output
The majority of the circuitry allows connecting 2 OSMC's (Open Source Motor Controller) v3.22 over RJ45. They are wired with pin 2 through 9, as CAT6 only has 8 conductors and pin 1 and 10 are the same as 2 and 9 respectively, in this case we don't need the increased current offered by the extra pins.
The 10 connections for the OSMCs are just PWM or digital outputs using MCT9001 Optocouplers, by default set up for 12V (Or whatever is supplied to VIN), but with a jumper it can be set to 5V or 3.3V logic to interface with a variety of motor controllers.
There is a MAX6959 36-channel LED driver chip, that independently controls the 2-digit 7-segment display, the status LEDs of the ethernet ports, and the 3 RGB LEDs present.
Input
2 rotary quadrature encoders can be connected with RJ45, intended to be used with the Pico's PIO. The RJ45 connections for the encoders have breakouts for Z inputs (for absolute positioning) or 2 more encoders with relative positioning only. These inputs are not connected to the Pico by default due to the limited number of GPIO pins.
There is a MCP3008 ADC which is used for battery voltage & current monitoring.
I/O
There are 2 PCF8574 I/O expanders which are mostly ununsed, allowing for the connection of low bandwith devices (e.g. enable pins, end stops / limit switches, basic on/off logic) as their speed is limited by the I2C bus. That said, the interrupt pins are broken out and can be optionally used for a decent connection for a rotary encoder.
The first I/O expander is connected to 2 N-channel MOSFETs that are connected to the board's input voltage for VIN @ 2A (total) controllable high-power output.
There are 3 extra GPIO pins exposed, which can be used for connecting e.g. the extra encoder pins, the I/O expander interrupts, or I2C communication to other RIB(s) in order to create a megaRIB for connecting more than 2 OSMCs.
Finally, there is a place for a Digi xBee to sit and communicate with the robot over 2.4Ghz / 900 MHz radio.
POWER
Additionally, the PCB pulls power in from the OSMCs over the RJ45 connections or the top left terminal block. The RIB can take in from 8 to 60V of power, or you can provide 5V via headers directly. If it's necessary, the RIB can be powered by a 2S Lithium battery, the power supply can still function at around 7V in.
The onboard 5V switching power supply can provide ~1.8A and the 3v3 regulator, which pulls from the 5V line, can use up to the same 1.8A limit. The 3v3 regulator exists to provide extra power to the xBee and 3v3 logic without having to put strain on the Pico.
The power inputs on the OSMC RJ45's can also be changed to output power and will match the logic voltage 5V/3.3V.
Programming
The Pi Pico W can be programming with Arduino-Pico, the Pico C++ SDK, Micro/CircuitPython, or Embassy Rust framework. Code examples below are written based on the Arduino-Pico framework. Note: we discovered a bug in Arduino-Pico's setXX functions affecting the RIB that is only fixed in v3.6.0 or higher.
Things to know for programming the hardware on the RIB:
The xBee is connected to UART0 / Serial1 on the Pico via pins 16 & 17 for TX & RX respectively.
Serial1.setRX(17);
Serial1.setTX(16);The I2C bus for the LED driver and I/O expanders is connected to I2C1 / Wire, pins 20 & 21 for SDA and SCL respectively.
Wire.setSDA(20);
Wire.setSCL(21);The LED driver has address 0x38. There is no library for the MAX6959 available online, we wrote one in rib-test-code. Look for lines like Wire.beginTransmission(0x38) and functions like set_digit() for example.
The I/O expanders have addresses 0x20 for the top one (connected to MOSFETs) and 0x21 for the bottom one.
The library xreef/PCF8574 has the ability to set pins as well, so the code you would use is
PCF8574 ioex1(0x20, 20, 21);
PCF8574 ioex2(0x21, 20, 21);Parts
96| Qty | Value | Footprint | References |
|---|---|---|---|
| 14 | 470 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R21, R22, R25, R26 |
| 7 | MCT9001 | Package_DIP:DIP-8_W7.62mm_Socket | OC1, OC2, OC3, OC4, OC5, OC6, OC7 |
| 6 | MountingHole_Pad | MountingHole:MountingHole_4.3mm_M4_Pad_Via | H1, H2, H3, H4, H5, H6 |
| 5 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R37, R38, R39, R40, R41 |
| 5 | Conn_01x02_Male | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J14, J15, J17, J18, J19 |
| 5 | SB260 | Diode_THT_AKL:D_DO-15_P10.16mm_Horizontal | D1, D2, D3, D6, D7 |
| 4 | RJ45_LED | Connector_RJ:RJ45_Amphenol_RJHSE538X | J1, J2, J3, J4 |
| 3 | 10uF | Capacitor_THT:C_Rect_L7.0mm_W4.5mm_P5.00mm | C5, C6, C7 |
| 3 | 1uF | Capacitor_THT:C_Rect_L7.0mm_W4.5mm_P5.00mm | C1, C2, C3 |
| 3 | 2k_Network05 | Resistor_THT:R_Array_SIP6 | RN2, RN3, RN4 |
| 3 | Conn_01x04_Male | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J7, J9, J10 |
| 3 | LED_RKBG | LED_THT:LED_D5.0mm-4_RGB_Staggered_Pins | D8, D9, D10 |
| 3 | Screw_Terminal_01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | J11, J12, J13 |
| 2 | 2k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R42, R43 |
| 2 | 74HCT244 | Package_DIP:DIP-20_W7.62mm_Socket | U3, U4 |
| 2 | Conn_01x08_Male | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J5, J6 |
| 2 | PCF8574 | Package_DIP:DIP-16_W7.62mm_Socket | U6, U7 |
| 2 | SB230 | Diode_THT_AKL:D_DO-15_P10.16mm_Horizontal | D4, D5 |
| 2 | STP2N80K5 | Package_TO_SOT_THT_AKL:TO-220-3_Vertical_GDS | Q1, Q2 |
| 2 | SolderJumper_2_Open | Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm | JP3, JP4 |
| 1 | 120uH | Inductor_THT_AKL:L_Radial_D12.5mm_P7.00mm_Fastron_09HCP | L1 |
| 1 | 1N5339B | Diode_THT_AKL:D_5W_CASE-017AA_P12.70mm_Horizontal_Zener | DZ1 |
| 1 | 22uF | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C4 |
| 1 | 33uF | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C8 |
| 1 | Conn_01x03_Male | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical | SW2 |
| 1 | Conn_01x05_Male | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J8 |
| 1 | Conn_01x06_Male | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J16 |
| 1 | DC56-11EWA | Display_7Segment:DA56-11SURKWA | U9 |
| 1 | LM2592HVT-5.0/NOPB | LM2592HVT:LM2592HVT-5.0&slash_NOPB | U2 |
| 1 | LM3940IT-3.3 | Package_TO_SOT_THT:TO-220-3_Vertical | U10 |
| 1 | MAX6959AAEE+ | Package_DIP:DIP-16_W7.62mm_Socket | U8 |
| 1 | MCP3008 | Package_DIP:DIP-16_W7.62mm_Socket | U5 |
| 1 | Pico | MCU_RaspberryPi_and_Boards:RPi_Pico_SMD_TH | U1 |
| 1 | R_Network08 | Resistor_THT:R_Array_SIP9 | RN1 |
| 1 | SW_Push | 4.5mm_button:SW_Tactile_PUSH_4.5mm_H3.8mm_TS_C016 | SW1 |
| 1 | SolderJumper_3_Bridged12 | Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm | JP1 |
| 1 | SolderJumper_3_Open | Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm | JP2 |
| 1 | XBEE | RF_and_other_modules:XBEE_PRO_PTH | XB1 |
Questions
How big is the Rib PCB?
It measures 140 × 90 mm and has 2 copper layers, 1.65 mm thick.
What parts does the Rib use?
96 parts, built around the 74HCT244D, PCF8574T, MAX6959AAEE+ and MCP3008-I/P. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Rib KiCad files?
From the illinoistechrobotics/rib repository on GitHub, at the commit this page was made from: the board is rib.kicad_pcb and its schematic rib.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Rib design in my own project?
Its repository states no licence, so its author keeps all rights: ask illinoistechrobotics before reusing the design.
Similar boards
- 2 layers264.8 × 118.6 mm

- 2 layers70.5 × 40.1 mm

Kicad flyback
nguyenthanhluan171205-tech/flyback-converter-10w
Design, simulation, PCB layout, and experimental validation of a 10W Flyback converter (80-220VAC to 12VDC, 90% efficiency).
63 parts - 2 layers100 × 100 mm

LinearPS
profdc9/LinearPS
Linear constant constant/current constant voltage power supply PCB
102 parts14 - 2 layers139.7 × 127 mm

- 2 layers60 × 57 mm

Projet Réveil électronique
Hultoncity2330/Circuits_Project1_Electronic_Alarm
Projet de conception d’un réveil électronique réalisé sous KiCad. Le dépôt contient le schéma électronique, le PCB routé, les fichiers du projet KiCad ainsi que plusieurs vues du circuit final.
26 parts - 2 layers162.3 × 96.5 mm

- 2 layers70 × 90 mm

- 2 layers136.8 × 87 mm
