Skip to the content
2 layers56 × 65 mmTiaan fsr exp, the printed circuit board in 3D

This repository hosts the CAD files for the FSR PCB.

Size
56 × 65 mm
Copper layers
2
Thickness
1.6 mm
Parts
19
Nets
47
Pads
125
Tracks, vias
295, 33
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
28 Nov 2022
Updated
25 Mar 2023

Overview

Tiaan fsr exp is an open-source printed circuit board by BEARUBC, from the BEARUBC/FSR_Mat_PCB repository on GitHub. It is a 2-layer board of 56 × 65 mm with 19 parts on 47 nets, routed with 295 tracks and 33 vias.

It is built around the 74HC4051 and 74HC595. Its parts include 5 connectors, 4 capacitors and 1 resistor.

Main components

2

README

README.md

FSR Matrix Printed Circuit Board

**As of 2023-03-24, this README is outdated. Documentation for Tiaan's FSR is in progress.

These are the CAD files for the FSR printed circuit boards (PCB) using through-hole only components. This board is used for controlling a force sensitive resistor matrix, reading analog values from each cell.

📖 Description

This design is based off of Sensitronics' MatrixArray products which are comprised of a multitude of force sensing resistor elements arranged in a grid. Providing n-input multitouch + force sensing capabilities, MatrixArrays are the basis for musical instruments, PC input devices, and other innovative designs. If you have measured single-element FSRs by looking at the voltage across a divider, we're doing the same thing here.

But in this case, we're choosing the point to measure by powering a single drive column, enabling one mux channel so that the ADC sees a single row. In the next section, the Arduino code demonstrates a scan pattern to read all $\approx$ 160 elements in sequence.

🚨 Dependencies

  • Software
    • KiCAD v6
  • Hardware
    • ThruMode MatrixArray
    • Arduino Uno (or other)
    • 74HC595 Shift Register (x2)
    • 74HC4051 Analog Multiplexer (x2)
    • 20k resistor (x1)
    • Solderless Breadboard & Jumper Wire

💻 Installing

🕹️ Software

Use a web browser to navigate to www.kicad.org the KiCad EDA website. Click the DOWNLOAD button on the KiCad home page. On the download page that opens, click the Windows button. Under Stable Release, click either Windows 64-bit or Windows 32-bit, depending on if you are going to install KiCad on a 32-bit or 64-bit version of the Windows operating system. Save the KiCad installation file. It may take a while to download, depending on your internet speed.

  1. Click the Open button under File > Open (Ctrl + O) and navigate to this repository
  2. Select the force_sens_resistor.kicad_pro file
  3. Double click the *.sch file and begin to edit the board
🤖 Hardware

Arrange the hardware connections folling this schematic:

▶️ Executing program

Now that the hardware's connected, it's time to write some code.

To read a single intersection, or "cell", of the MatrixArray, we need to perform the following sequence:

  • Drive the cell's row with +5V
  • Enable the cell's column (multiplexer channel)
  • Take an ADC reading on pin A0
  • Output the reading via serial port

Simple enough, so from here, we will write a scan pattern to efficiently drive and read each cell of the Matrix. Recalling that we're calling shift register drive pins "rows" and multiplexed read pins "columns" in this example, we'll enable each column in order, and while each column is active, we'll drive each row high and take a reading.

cpp
// Constant definitions
...

void setup() {
  Serial.begin(BAUD_RATE);

  pinMode(PIN_ADC_INPUT, INPUT);
  pinMode(PIN_SHIFT_REGISTER_DATA, OUTPUT);
  pinMode(PIN_SHIFT_REGISTER_CLOCK, OUTPUT);
  pinMode(PIN_MUX_CHANNEL_0, OUTPUT);
  pinMode(PIN_MUX_CHANNEL_1, OUTPUT);
  pinMode(PIN_MUX_CHANNEL_2, OUTPUT);
  pinMode(PIN_MUX_INHIBIT_0, OUTPUT);
  pinMode(PIN_MUX_INHIBIT_1, OUTPUT);
}
void loop() {
  for(int i = 0; i < ROW_COUNT; i ++) {
    setRow(i);
    shiftColumn(true);
    shiftColumn(false);                         //with SR clks tied, latched outputs are one clock behind

    for(int j = 0; j < COLUMN_COUNT; j ++) {
      int raw_reading = analogRead(PIN_ADC_INPUT);
      byte send_reading = (byte) (lowByte(raw_reading >> 2));

🧔🏽‍♂️Authors

Contributors names and contact info

Tiaan Boshoff Kyle Kochi Tiffany Prayitino Umar Ali

🧾 Version History

  • 1.0
    • Initial Release following Sensitronics' MatrixArray tutorial

Parts

19
QtyValueFootprintReferences
40.1uFCapacitor_THT:CP_Radial_D4.0mm_P2.00mmC1, C2, C3, C4
4MountingHoleMountingHole:MountingHole_2.7mm_M2.5_DIN965_PadH1, H2, H3, H4
274HC4051Package_DIP:DIP-16_W7.62mm_SocketMUX1, MUX2
274HC595Package_DIP:DIP-16_W7.62mm_SocketSR1, SR2
2Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ3, J5
120kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
1Conn_01x03Connector_JST:JST_XH_S3B-XH-A-1_1x03_P2.50mm_HorizontalJ2
1Conn_01x06Connector_JST:JST_XH_S6B-XH-A-1_1x06_P2.50mm_HorizontalJ1
1Conn_02x17_Odd_EvenConnector_IDC:IDC-Header_2x17_P2.54mm_VerticalJ4
1LOGOLOGOG***

More from BEARUBC/FSR_Mat_PCB

1
  • 2 layersForce sens resistor, the printed circuit board in 3D

    Force sens resistor

    BEARUBC/FSR_Mat_PCB

    This repository hosts the CAD files for the FSR PCB.

    12 parts2

Similar boards

  • 4 layers120 × 108 mmDk2 06, the printed circuit board in 3D

    Dk2 06

    mattybrad/drumkid2

    189 parts12GPL-3.0
  • 2 layers100.2 × 116.5 mmLepetocontrol, the printed circuit board in 3D

    Lepetocontrol

    svofski/lepetomane-control

    A MIDI control surface with pretty LEDs

    145 parts6
  • 4 layers300.8 × 110 mmFireflow, the printed circuit board in 3D

    Fireflow

    mcbronkowitch/fireflow

    FireFlow — a modulation-first ambient groovebox: the modulation system is the instrument, not a layer on top of it. Five independent lanes per part driving a synth, granular, wavetable, resonator or bucket-brigade deck.

    208 parts2MIT
  • 2 layers80.2 × 94.6 mmMANUEL ARGIBAYMOLINA ELECTRONICS, the printed circuit board in 3D

    MANUEL ARGIBAYMOLINA ELECTRONICS

    ManuelArgibay/Industrial-I-O-Controller

    Industrial 24V I/O controller featuring protected high-side and low-side outputs, multiplexed analog and digital inputs, and MCU-based control.

    89 parts
  • 2 layers125.1 × 77.7 mmProcessor Board, the printed circuit board in 3D

    Processor Board

    dennis9819/diyMA2

    MIDI Controller for GrandMA2 onPC

    40 parts2

Questions

How big is the Tiaan fsr exp PCB?

It measures 56 × 65 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Tiaan fsr exp use?

19 parts, built around the 74HC4051 and 74HC595. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Tiaan fsr exp KiCad files?

From the BEARUBC/FSR_Mat_PCB repository on GitHub, at the commit this page was made from: the board is tiaan_fsr_exp.kicad_pcb and its schematic force_sens_resistor.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Tiaan fsr exp design in my own project?

Its repository states no licence, so its author keeps all rights: ask BEARUBC before reusing the design.