Wednesday, March 27, 2013

Amateur PCB Night

We just finished the unit circuit board for the position sensing network that will be used with the "project" which will remain unnamed until Ian's blood pressure subsides enough for additional Google searches on the words "labyrinth" and "maze" to proceed.  The board is pretty simple, a couple 2.54mm pin header strip connectors, and two open drain omni-polar (switch output drives low for both north and south pole fields equally) hall effect switch IC's.  Overall, very similar to the circuit we bread-boarded in an earlier post with the exception of the latches which are replaced with omni-polar switches in the final circuit.  The switches should be much smoother in actual operation, they are roughly twice as sensitive as the latches (magnets do not need to be placed as close to the sensors), and of course we were able to dispense with the circuitry needed to clear the latches in the absence of a field (the switches stop driving as soon as the presence of the magnet field is removed).

KiCAD Board Layout
KiCAD Board Schematic

The idea is to string together a bunch of these 28 sq mm PCBs in a grid shaped sensor array underneath the game board (the final project will utilize 256+ PCBs).  Each moveable piece on the board / sculpture will be embedded with a small rare earth magnet which will induce a magnet field to trigger the sensors.  Ian's friend Michael came up with the (pretty cool) idea to connect all the open drain outputs in a particular row or column in a wired-OR configuration.  If any unit circuit in a row (or column) detects the presence of a magnetic field it pulls down the wired-OR output for that collection of sensors.  This reduces the number of GPIO's required to read a position from the grid, and using an Arduino to read each row and column output, it's simple to detect which squares in the 256 sensor grid are occupied by reading only 32 inputs.

1 comment:

  1. We might be scaling up depending how test scenarios game out. In which case we'd just end up using a mux.