Home‎ > ‎Projects‎ > ‎

Vic's IO Board V1.0

The Why

It all started with a thermostat.  As in I wanted a new one (See here).  Because I am super special little snowflake, none of the thousands of thermostats on the market suited my needs.  The initial inspiration is well documented; I will not waste time repeating myself.

So I needed a way for the control logic to interface with the physical world.  This of course is done via an IO board and there seemed to be two options - the industrial-level stuff intended to be used with PLCs and the amateur "arduino"-level stuff that's available everywhere on the internet for less than $20.

The cover for the first party is in the 5 digit range even if you manage to get an invitation.  The other party is one guy with a funnel looking for someone with a keg.  I wanted to be in the fancy party, but did not have the money nor the invitation to get in.

So I decided to put my experience gained through being a bartender at the fancy party into an IO board of my own.  That's enough analogy maceration.

My goal was to have a robust IO board for my personal project(s).  I wanted the board to:
  • work on 24VDC
  • minimize the impact of human error by having protected inputs and outputs
  • be a coherent package
  • be as easy as possible to troubleshoot and integrate
  • have some level of support by the manufacturer
Basically, I wanted a robust piece of gear and since I couldn't afford one I made my own.

The What

The board, in its current V1.0 incarnation satisfies most of my requirements.  Only thing lacking is support from the manufacturer.  It's a hassle.  They're real moody pricks.

Board features and specs:
  • Dual micro-controllers
    • Dedicated communications processor
    • Dedicated input/output processor
  • 24VDC power supply 
    • Fused
    • Reverse polarity protected
    • Over-voltage protected via crowbar circuit
    • ESD protected
  • Analog sensor power supply
    • Over-current protected with software detect and reset
    • Diode-protected output
  • Eight analog inputs
    • Over/under voltage protected
    • 12-bit resolution
    • Four ICTD inputs that can double as 0-500mV inputs
    • Four 4-20mA inputs that double as 0-5VDC inputs
    • Adjustable low-pass filter on the analog inputs
  • Four digital outputs
    • Over-current protected with software detect and reset
    • Sourcing configuration
    • Diode-protected output
  • Communications
    • RS-232 signaling 
    • Hardware (CTS/RTS) flow control
    • Text-based interface intended for human use
    • Binary interface intended for machine use
  • Firmware
    • Mostly C code written with explicit goal of not being unnecessarily clever and hard to understand
    • Minimal assembler.  Some assembly is present on the account that it is unavoidable and C inline assembler is ugly.
    • Thoroughly documented
    • No external dependencies
  • Open design (coming soon)
    • Full software stack (firmware, middle layer, HMI) is open source
    • Hardware design is provided 
Bellow is a few pictures in the dual board configuration.  Why dual board and not two, three, or four?  Simple.  Because I am the decider and I decided.  

Click on the pictures to expand them.

Top view

Another top view

Dual stack - digital output terminals

Dual stack - RS-232, analog input, analog power supply, and power supply terminals

Back of the PCB

Front of the PCB

Text-based interface intended for testing/human use