The gauge is designed as a series of parallel 3D printed plastic “decks”, separated by standard PCB standoffs. It’s compatible with a typical 3 1/8 inch panel cutouts.

Controller and interface board is the last deck. Like every gauge in CANSim, It’s based on Arduino Nano and provides RJ45-based CAN interface. All gauges communicate with a master controller which in turn has USB connection to a host PC with a simulator (or to a networked PC).

Parts List

“

NComponentQuantityNotes
1Front Bezel Glass1
2Front Bezel1
3Arrow1
4Face1
5Face deck1
6Motor deck1
7Motor x27.168 (or similar)1
8M3 Stand-off8
9M3 Screw4
10M3 Nut4
11M3 Heat Set Inserts4
12M2 Screw 20mm2
13Controller/IO PCB1Custom made

Assembly

  • Insert glass (1) into front bezel (2). Optionally glue (normally not required for home use). Front bezel is ready.
  • Glue the face paper (4) into its deck using PVA or similar glue.
  • Mount the motor (7) into its deck (6) using two M2x20 screws.
  • Stack the face deck and the motor desk using 4 standoffs (8). Attach the arrow (3) to the motor.
  • Place the front bezel on the top of the assembly and fix with four M3 screws (9).
  • Attach PCB and fix with M3 nuts (10).
  • Mount on the panel using cutouts.

Front Bezel

A front bezel design is shared by most of CANSim instruments. It contains the plate itself and a glass. A bezel is typically 3D printed from ABS.

front-bezel-v42.stl

A circular glass (74mm diameter) can be cut from 2mm transparent acrylic plate. 1.5mm or 3mm will work as well

front-bezel-glass-v7.stl

Faceplate

Motor deck

Assembly tips

Electronics and PCB

Schematics:

“

The board is done with single-side PCB design, for easier home manufacturing.

Top (component) side

Top (component) side

Bottom (solder) side

Bottom (solder) side

Firmware and I/O

Generic gauge is receive-only instrument, it can receive a single float value as a gauge position.

PortData TypeDescription
0FLOATArrow Position 0..MAX

Firmware source code: https://github.com/avignatenko/SimGauges/tree/master/src/GenericSingleNeedle