TacTile: 3D Interactive Display Using Phased Solenoid Arrays

My name is Carson Ray, and I am conducting a yearlong research project at the Roanoke Valley Governor's School in Roanoke, VA.



Technologies like braille readers designed for the vision-impaired are often costly, very slow to update, and are constrained to static 2D text and images, limiting color and depth perception. A solenoid array could be a cheaper and faster-updating alternative for interactive image and animation visualization in 3D.

The goal of my project is to develop a proof-of-concept for a modular fast-updating 3D display tile with an individually addressable solenoid array, with each solenoid capable of multi-phase movement, non-volatile positioning, and touch sensitivity. The display, consisting of multiple connected tiles, will be controlled using a Raspberry Pi.

Design Concept

Each solenoid will have a copper tube core with coils of wire separated by magnetic washers. The armature pin will be a plastic cylinder with magnets attached to the bottom. The magnets will be held in place between the magnetic washers and eddy currents in the tube will resist movement. Energizing one coil in the desired direction of movement will attract the magnets. A laser matrix passing through holes in the pins will detect when they are pressed down.

Each solenoid will have 8 coils and therefore 8 possible pin positions. Each tile (6cm x 6cm) will have an 8 x 8 grid of solenoids. Tiles can be modularly connected with six pin headers on all four sides, and the laser matrix is attached around the square group of connected tiles.

Why PCBWay?

A PCB project sponsorship would allow me to economically fit the complex switching and addressing circuitry required to update each solenoid in the small space requirements, using several power and logic control PCBs. I am also interested in discounts on their PCB assembly surface for the small package ICs I am using on some boards.

Circuit Design

An analog of the solenoid addressing circuitry was prototyped using an Arduino, as seen in the video above.

The tiles will also be individually addressed, and this is done using a bidirectional daisy-chained system based on SPI. The Raspberry Pi will send signals to one tile, and then controls whether they are relayed down or right until the desired tile is preceding tile in chain.

SS (Slave Select): Determines whether data is relayed down or right.

CLK: Clock signal


SEN (Slave Enabled): Whether tile is selected for direct data transfer.

LEN (Latch Enabled): Whether tile is acting as a “pass-through” for data.

MISO0/1(Master Input Slave Output): Data propagated to next tile in chain.

Board A (PCBWay assembly): This board sits on top of the coils with the copper tubes passing through it and supplies common grounds to groups of coils using small package MOSFET drivers.

Board B (PCBWay assembly): This board sits below the solenoids and supplies high current to groups of coils using small package MOSFET drivers.

Board C (Hand assembled): This board is stacked below board B and has a demultiplexer array that allows selection of an individual coil by choosing voltage and ground connections.

Board D (Hand assembled): This board is stacked below board C and has a variety of logic ICs to control an SPI-based daisy-chain addressing system so that individual tiles can be selected and controlled using pin headers that connect the tiles on all sides.

Board L1 (Hand Assembled): This board provides power to laser diodes on two sides of the display.

Board L1C (Hand Assembled): This board serves as a modular connector of L1 boards at the corner.

Board L2 (Hand assembled): This board sequentially selects photoresistors on opposite sides of the laser diodes to read their analog values and determine if the laser is reaching them.

Board L2C (Hand assembled): This board serves as a modular connector of L2 boards at the corner.

Apply for sponsorship >>
1600+ Projects Sponsored
Oct 04,2023
845 viewsReport item
  • Comments(0)
  • Likes(0)
You can only upload 1 files in total. Each file cannot exceed 2MB. Supports JPG, JPEG, GIF, PNG, BMP
0 / 10000