Close

Building a Selectable Analog Front-End

A project log for SigCore UC - Universal Controller

Universal industrial I/O controller with relays, analog/digital I/O, Modbus & OPC-UA support. Powered by Raspberry Pi.

edwardEdward • 08/12/2025 at 05:24•0 Comments

I’ve been wiring up a small analog front-end that lets one ADC read a bunch of different field signals: DC voltages in a few ranges, a filtered line, and a 4–20 mA current loop. The trick is a dual TMUX1208 setup so voltage and current paths switch in lockstep with the same address.

Architecture at a glance

Channel map

Parts choices that mattered

Gotchas and fixes

Why the “no live switching” rule

I don’t need rapid channel hops, and preventing changes after “Go Live” avoids odd transients or user error. With static selection, even the slowest divider path has all the time it needs to settle, and S5 stays truly unfiltered.

PCB plan

Bring-up checklist

  1. Power smoke test, then verify 5 V and idle S1→GND at ADC-in.

  2. Program MCP23017 → default 000.

  3. Range checks:

    • S2: 10.00 V → 5.00 V

    • S3: 20.00 V → 5.00 V

    • S4: 33.00V → ~5.00 V

    • S7: 10.00 mA → 2.000 V

  4. Store one-point gain trims per range.

Next up: route the board, save it as a reusable circuit, and move on to the analog outs.

Discussions