← Work

CDO2

Electronics & Embedded Software Engineer · Aug 2020–Sep 2021

CDO2 builds real-time current density imaging systems for EV battery analysis. Their technology images the current flow inside battery cells to help manufacturers assess performance, safety, and production quality. The project ran as part of an Innovate UK initiative, in collaboration with the University of Sussex, the University of Strathclyde, and calibration work conducted at the National Physical Laboratory.

The company was four people when I arrived and seven when I left. There was no structured onboarding. You were expected to contribute from the first week.

The PCBs

Over the year I designed four PCBs from scratch that went into the product. All were Eurocard-format boards for a 19-inch rack housing the sensor and acquisition system.

Backplane: the structural backbone of the rack. A board with precisely-spaced DIN connectors for inserting the various sensor and acquisition boards. The design required matching the spacing of an existing standard precisely, then building the power and signal distribution around it.

Glynde:the company's first attempt to integrate the MCU directly onto a custom board, replacing the previous approach of using an off-the-shelf evaluation board as a processor. The first iteration had reliability issues: problems with ethernet signal integrity, the external crystal placement, and ESD protection. Each failure was debugged on the bench and became a layout rule for the next revision. By the end, the board was reliable enough that its core MCU circuit became the template for subsequent boards.

Rye:the second iteration. Upgraded to a higher pin-count package to accommodate a CAN interface the previous version couldn't support. Added multiplexer, additional ethernet connector, and CAN transceiver. More care taken with differential pair routing, power plane separation, and decoupling placement. All future CDO2 prototype boards used this schematic as a starting point.

Network switch:the final board, designed with minimal direction. Selected and integrated a 6-port managed ethernet switch IC, implemented an SBC mounting system with a natural heatsink cavity, and worked through a transformerless ethernet implementation for backplane connections. The transformerless approach introduced noise that wasn't acceptable; a transformer-based revision followed. Understanding why it failed required time on the oscilloscope.

[ CDO2 rack with Mu-metal shield, Fig 16 from placement report ]

The Mu-metal magnetic shielding chassis manufactured by MSL, fitted to the CDO2 rack unit.

Magnetic shielding and mechanical work

The magnetometer sensor boards that sit inside the rack are sensitive to external magnetic fields. A bespoke Mu-metal shielding chassis was designed to isolate them. I modelled the full rack in FreeCAD with the dimensional accuracy needed for the specialist manufacturer, Magnetic Shields Limited, to produce the enclosure. Tolerance matters at that scale. Custom front panels for the rack were also designed and prototype-printed before being sent for manufacture.

[ FreeCAD rack model, Fig 14 from placement report ]

FreeCAD model of the CDO2 rack, produced for the Mu-metal shielding commission.

Assembly

The boards were assembled in-house using a manual pick-and-place machine, stencil printer, and reflow oven. Over the year: 40+ PCBs handled, over 3,000 components placed. Package types ranged from 0201 passives to QFN, QFP, and BGA. The most demanding assembly task was BGA alignment — too much pressure collapses the solder balls, too little and they bridge on reflow. Getting it wrong on the last component means rebuilding the board.

[ Rye PCB post-assembly, Fig 8 from placement report ]

Rye development board, assembled. This MCU circuit became the foundation for subsequent CDO2 prototype boards.

Software and debugging

Most software work was in embedded C++, using OpenOCD with an ATMEL-ICE debugger for JTAG access to the boards. Once the custom MCU boards had a JTAG header, this replaced the on-chip debugger workflow entirely: register inspection, hardware breakpoints, flash programming, all through the same interface.

Near the end of the placement: wrote a test harness in Arduino over I2C to read and write registers on the network switch IC, verifying the management interface was functional before the board went into the rack.

[ Debugging setup, Glynde board with ATMEL-ICE, Fig 6 ]

Glynde board connected to ATMEL-ICE for JTAG debugging.

The year

Three things from CDO2 that carried forward:

The difference between knowing how a component works and understanding how it behaves in a circuit is not small. You can describe a capacitor from first principles and still be surprised by what it does to your power rail under a motor transient.

If you ask the right questions of people who know more than you, the rate of learning accelerates sharply. Small companies with experienced engineers are a specific kind of environment — the feedback loop is direct and honest in a way that structured education usually isn't.

The gap between someone who has built systems and someone who has read about them is visible almost immediately.

KiCadFreeCADATSAME70EurocardSMD assemblyBGAPick and placeOpenOCDATMEL-ICEJTAGEmbedded C++EthernetCANMu-metal shieldingInnovate UK