Mechanical Design, Machine Design
Video
Slide

Brainstorming
This week’s assignment is to design and build a machine. This is a group assignment.
After discussing the different ideas we had and were proposed to us, we agreed to make a kinetic sand table.
Many examples can be found. Here is one: https://duneweaver.com/.
To start, we discussed how our machine will work and what we’ll need to make it come to life.
Here are some of the parameters we decided :
- Mechanical structure based on the CoreXY mechanism
- Movement control: 2 stepper motors with appropriate drivers and belt pulleys with appropriate timing belts
- Machine homing with 2 end-switches for X and Y
- Head of the machine : magnet mounted on a trolley
- Drawing zone will be a 50 cm x 50 cm square
- Trajectory generation ;
- Bonus : LEDs (for aesthetic), electromagnet (for depth control), glass/plexiglas/acrylic top cover…
We already had a lot to work with:
- Extruded aluminum beams and accessories, for the structure
- Stepper motors and their drivers, for movement control
- A strong (neodyme) magnet and a magnetic marble (we got lucky finding them)
- Some stuff was also brought by members of the group from home, in the end, we kinda had everything we needed.
We also had a CoreXY model to get inspiration from :

Individual task assignments
After reviewing what we’d need, we assign the tasks as follow:
- Elodie: Global structure and 3D pieces design (motor holders, feet…)
- Michel: Stepper motors control and PCB design
- Jonas: Design of the trolley for the magnet and aluminum frame assembly
- Fabio: Enclosure for the sand and magnetic ball
Here are some final result of everyone’s initial assignment :
Global structure

PCB

Trolley

Sand enclosure

Assembling the structure
Jonas started the assembly of the structure alone, Fabio eventually helped him to assemble and mount the remaining pieces.
At this point, we kinda all worked together on the same task except Michel, who helped a bit but mainly focussed on the code and creating functions which will be very important for the final part of the project.
Trolley assembly

3D printed holders assembly

Aluminum frame assembly
We first used L-shaped pieces to assemble the beams:

Problem encountered
This first structure has several problems:
- The feet weren’t strong enough, one of them broke:

- The L-shaped pieces weren’t very reliable and the beams could sometimes move
- The inner dimensions were also smaller than the 50 cm x 50 cm, because we used already cut beams that were 50cm long
- Holders can be improved, some tolerances needed adjustments
Hence,
- Elodie modified the feet and holders:
(Yellow : old version, red : new version)
- Fabio and Jonas cut longer aluminum beams and changed the connection pieces:

New structure assembly

First tests
We tested the mechanical system by pulling on the belts by hand.
The moving axis and the trolley move freely and smoothly.
Michel already tested the electronics and was able to control the motors.
We decided to put sand in the enclosure and smooth it with a ruler:

It’s time to make our first global test:
It works !
Second spiral
We still need to add features:
- End-switches must be mounted on the frame. A homing procedure must be defined.
- The current code can send a number of steps and desired speed to each motor. We need to be able to tell them to move a given distance on the X and Y axis.
- We need to transform a SVG picture in comprehensive commands for the motors.
- The PCB needs to be attached to the structure
improvement tests
- The relative and absolute X-Y moves are working as intended.
- The homing procedure works great !
However, after the homing, the machine doesn’t move as expected.
After some trials and errors, we found that a 45° movement (dX = dY) triggers the problem and Michel was able to solve it (More details on its personal page). - Elodie found sandify.org, a web app to create GCode files of nice patterns for kinetic sand tables.
- Fabio sets up a procedure to transform a SVG file in a GCode one, using Inkscape.
Third spiral
We write a code to transform a GCode into (x,y) coordinates tuples and send them to the RP2040, using the Xiao module USB connection.
The RP2040 receive a coordinates tuple and uses its absolute move function to travel to this position. When the move ends, it send an acknowledge to the PC and wait for the next coordinates.
We have a fully functional machine !
Our machine in action
Here are some video of our sand table in action:
Circles
Abstract shapes
Dinosaur
Here are some pictures of all the tests we did on our machine
Circles
Circle & lines
Triangles
Window
Abstract shape 1
Abstract shape 2
Dino
Dog
Hand
Atom
Puma
Useful files
The test files used to create these drawings can be found here