
The Kinematic Wave Engine is a dedicated 8-channel servo controller. It autonomously drives an 8-rod kinetic sculpture, generating a continuous travelling sinusoidal wave that (is supposed) to move a ping-pong ball back and forth along its track.
It is an interactive art piece demonstrating parallel hardware timing, real-time procedural animation, and custom silicon design.

This project was essentially a learning experience for me. It may not be the most useful project, it may not be optimized (or even working at the end), but it's mine and has been a great learning vehicle :)
You can find a Python-based 2D physics simulation in the sim/ folder to better understand about the final goal. The simulation was used to fine-tune default and hardcoded parameters.
To increase the confidence even more, the design was tested on an FPGA (CMOD A7 devkit - Artix 7). All looked good, fingers crossed.
The final kinematic sculpture does not exist yet. I will have the full manufacturing time to develop it !
It basically will be a simple mechanical assembly of 8 rods controlled by 8 servo motors. (see the simulation view) The servos will need an external power source. Each servo motor signal will connect to the 8x outputs. The IC is doing the precise timing control of each servo signal and generates the traveling wave.
Input signals are used to provide some minimal control:
8x servo (like SG90) + kinematic rod sculpture
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | MODE_SW | SERVO_PWM[0] | SPI_CS |
| 1 | SPEED[0] | SERVO_PWM[1] | SPI_SCK |
| 2 | SPEED[1] | SERVO_PWM[2] | SPI_MOSI |
| 3 | SPEED[2] | SERVO_PWM[3] | SPI_MISO |
| 4 | SPEED[3] | SERVO_PWM[4] | MIRROR |
| 5 | AMP[0] | SERVO_PWM[5] | REVERSE[0] |
| 6 | AMP[1] | SERVO_PWM[6] | REVERSE[1] |
| 7 | SPREAD | SERVO_PWM[7] |