Animatronics Controller
March 2022
During renovations of a local museum the controller cables for a pneumatic animatronic puppet were damaged, causing the controller to be unusable. Replacing that controller would have been costly and time-consuming. I designed and built a custom controller PCB and wrote firmware to control the puppet, allowing the museum to continue using the animatronic.
Hardware requirements
Looking at the cut cable and the connectors on the damaged controller, I determined that the animated using 6 cylinders. These control the mouth, eyes, torso rotation and bending as well as an arm. Each cylinder was controlled by a two solenoid valves. One valve extends the cylinder, while the other retracts it. Both valves were controlled by a 24V signal. The controller needed to contain an audio playback method to drive the speaker inside the puppet. The system must react to a trigger signal supplied by an IR motion sensor using 5V logic. The controller must also be able to be powered by a 24V supply, and provide 24V to the solenoid valves.
PCB design and assembly
Using the above requirements, I selected an Arduino Micro as the main controller. It has dual USB, which allows both debugging over USB as well as controlling the DFPlayer MP3 module. This module takes in a microSD card with a few files, which can be queued for playback over serial. The Micro directly controls 7 dual channel N-channel MOSFETs. The 7th channel is used as a spare. A few LEDs are used to indicate state. The PCB has a 24V to 5V buck converter to power the Micro and the DFPlayer. This was not populated as 5V appeared present on site.
Firmware
The firmware was written in C++ using the Arduino framework. It uses a state machine to control the playback of the audio and the timing of the solenoid valves. The firmware is triggered by a 5V signal from the IR motion sensor. The firmware is designed to be easily modified to change the timing of the solenoid valves and the audio playback. The volume also can be easily modified.