How do you make a mechatronic player piano with $350? In the course I described in my last post (about Olin College’s Principles of Engineering), college students were tasked with creating a rigorous mechatronic system, and my team of three chose to build a player piano.
If you view the video below, you’ll see that the design is nothing like a ‘normal’ player piano.
Going back to when it was simply an idea: the team decided to electronically control a system of solenoids to play the notes on a piano. We needed a real piano, and we found an upright piano offered for free on craigslist.com. A U-Haul rental later, the piano was successfully moved to the lab.Converting a normal piano to a modern player piano usually requires invasive woodworking to install a solenoid under each key. We didn’t have this option for many reasons:
1) A solenoid of sufficient strength for each key would greatly surpass our budget
2) We are not experienced piano technicians or woodworkers and an irreversible mistake could ruin our piano (we cared about our piano whether it was free or not)In order to slide the solenoid carriages along the aluminum track, we originally chose a steel gear rack and pinion attached to a stepper motor. The stepper motors we used have a step resolution of 200 steps per revolution, so a PIC microcontroller could send the proper pulses (amplified by transistors) to the stepper motor and the carriage would travel a precise linear distance.This proved problematic for numerous reasons.
1) Stepper motors inherently vibrate and cause noise
2) The steel gear even slightly vibrating against the gear rack created a horrible screeching noise
3) Our choice of stepper failed to perform with enough holding-torque
We had to change the rack and pinion material and nylon was an obvious choice because it’s relatively inexpensive, low friction and quiet. Stronger stepper motors would push us beyond our budget, so we chose DC gearmotors (from Merkle-Korff).
However, this provided its own set of problems, losing the stepping ability of stepper motors by switching to DC motors, how would a solenoid be positioned above a desired key?
Running out of money in our budget and time, various rotary encoders including Hall effect sensors were out of the question. A simple and inexpensive solution: a very large voltage divider. You can see in the photo above the two wires leading off either end of the top aluminum piece.
In case you’re not familiar with voltage dividers, a voltage divider is two or more resistors linked together in series after one another. This means that in-between each resistor the voltage is different, and using over 40 identical resistors in series yields 40 unique voltages.
We simply lined up each unique voltage over each key we cared to play. This would allow the firmware on the PIC to continually detect the voltage of a carriage that’s dragging a metal brush in contact the voltage divider wires. Each unique voltage determines the key location of a carriage.
Other components include a PTFE (better known as Teflon) slider on a reinforced aluminum guide track, manually machined aluminum mounting plates (fabricated in Olin’s metal shop) that hold the motor, solenoid and slider together, and various other machined aluminum mounting brackets.
Obvious limitations of this device are that it is currently only able to play white keys and that none of the carriages can cross paths. Ideally, a solenoid for each key would provide the ultimate playing ability, but that wouldn’t be seemingly as challenging.
Albeit the playing is slow and out of rhythm, comments on the design are appreciated (and the motors can actually run twice as fast as shown).