Sorry for the delay – took me a while to put together 🙂
Conversus Vitra, consists of 11 different parts. Body, Top Plate, Friction Sticks, Spinning Plates & Glass Lockers, Pumps, Cooling, Electronics Mainboard, Embedded Software, Controller Software, MIDI Keyboard, Microphones. Each of these parts play a critical role in how the instrument makes sounds, and how it functions. These parts and their design processes are explained in detail in their respective sections. This section covers their relationships, and how these parts work together in general without going into detail.
First and foremost, all structural and mechanical parts are fabricated using a laser cutter. Pumps, tubes, electronic and electromechanical parts are obtained from manufacturers and distributors, the main electronics controller board is custom designed for the instrument and ordered from a PCB fabrication service, and the wine glasses used for the project are from various retail stores.
During the design process, portability was one of the core features that lead the design. Steppers, pumps, and the power supply adds a lot of weight to the instrument already and to compensate for this, remaining parts are almost exclusively laser cut so that the instrument can be modular, portable and lightweight. It is designed so that it would fit into a medium/large sized camera backpack when the glasses and friction sticks are unmounted from the body.
Electronics, except for the custom designed PCB board are all off the shelf components, so that they can easily be replaced.
- Power supply is 12V 30A, and most importantly it is fan-less to reduce noise.
- Controller is an Arduino Due which runs a custom software.
- The main-board PCB is custom designed to fit on top of an Arduino Due, it has 4 stepper motor drivers, 8 logic level MOSFETS and it has screw terminals for the steppers, pumps, servos and main power. It is the central connection hub.
- Stepper motors are NEMA 17 hybrid-bipolar, they weigh 185grams and have a holding torque of 3.7 kg-cm. It is important that these steppers are strong enough to carry the glasses when they’re full, start spinning when they glasses are full, and be able to do all this under the potential and variable stress generated by the arms touching the glasses. They have a 5mm shaft.
- Friction Stick Servos are slim RC aircraft wing flap controllers, they are an incredible 10mm thick, weigh 28grams and run with 5V and can lift 7kg-cm.
- Pumps are CPU cooling pumps, that are non-primed, run under water and are very silent because of this. ( < 38dB), They’re really light (85grams) for their power (3.6Liters/min or 68GPM) @12V, and they have a vertical lift of meters.
Main body, contains all the electronics, namely the power supply, Arduino controller, PCB main-board and 4 steppers. It is made of 4 sheets of acrylic. It is the base unit, it contains the brain of the instrument, and although it is modular and parts can be replaced/unmounted easily, it’s designed so that can it can be carried as one piece. The walls, bottom, and the top plate are made of 0.22” thick acrylic, as it is the protective shell of all the electronics, it should be strong enough to easily carry around and it needs carry all the weight of the construction.
Top Plate, is the base mounting plate for the stepper bodies and the friction sticks. It’s a part of the main body, the largest sheet of acrylic piece, and it is one of the most critical parts of the instrument as it needs to carry lots of weight. It has 4 M3 screw holes, and a shaft hole per stepper motor. The screw holes have rubber grommets to stop water from leaking into the steppers, and to dampen the sound of the steppers to some degree. It has 4 friction stick connection points, which are mounted on the top side.
Friction Sticks, are 220 millimeters tall, and they’re the most accurate part of the design. They carry the servo arms that are touching the glasses, route the tubes into the glasses, and they’re very rigid. They’re two sheets of acrylic, and they sandwich the thin servo between them. Top parts are screwed together and fixed with the servos, and bottom parts are screwed to the main plate.
Spinner plates, are attached to the steppers shaft using a 5mm mounting hub. Glasses sit on top of these spinning plates. To increase grip and reduce the motor vibrations from affecting the glasses negatively, there is a thin layer of EPDM rubber in between the glasses and the spinner plates. They’re attached to the hub with 2xM3 screws. They have 4 locker holes on them, and once these lockers are in position, there are 2 screw holes to fix the locker holes.
Glass Lockers are small in size, but large in role. 4 lockers position the wine glass on the plate, and they have to be less than a millimeter accurate to hold the glasses in position while the glasses are unstable with full speed. Their accuracy reduces the shake and mechanical noise levels dramatically, and they fix the glass in position so there won’t be any accidental spills. They fit on their 4 holes on the spinner plates, and they’re locked into position with a “C” shaped piece, which later screws onto the spinner plate with 2xM3 screws.
Wine glasses can be interchanged, and the base-note of the glasses can be set in software, however after further experimentation, 20cc glass capacity is a fair maximum for the motors to be able to spin the glasses without any issues. Which can be improved by replacing the motors with more powerful ones, however this time the noise and heat becomes a big issue. Because the glass needs to fit onto the spinner there are some technical rules to consider when picking the right glass. One being the radius of the bottom base of the wine glass cannot be larger than 80 millimeters, and can’t be smaller than 50mm or it will be unstable. The radius of the rim should be between 60mm and 90mm for the arms to work. The body of the glass shouldn’t exceed 100mm in width or it will touch the friction stick body. The glasses must be minimum 180mm and maximum 230mm tall.
The controller software runs in MAX / MSP and accepts all sorts of midi inputs or reroutes from any DAW. Piezo microphone signals are also processed here, and combined with the midi input signals they’re translated into packages that are to be sent to the Arduino controller board, which are interpreted into pump on/off, stepper on/off, and servo position signals.
Conversus Vitra has a lot of parts that needs to be accurate and well crafted. Especially the parts that are directly related to the acoustics of the sound. The most important lesson learnt from the project, is that water and electronics don’t play well together. This was definitely the biggest challenge. But the second biggest challenge throughout the project was to pick the right components. Are there smaller / lighter ones? Are they waterproof? Are they quiet? If not, is it easy to dampen or cancel the noise without tinkering with the main design? These were the main titles of the problems. This section covers all design challenges, and why some challenges are harder to address.
Water and electronics do not play well together, and should not be mixed. The biggest challenge, as predicted was keeping the water away from the electronics at high and unstable speeds. When a glass is more than half-way full, stopping and starting the stepper motor fast becomes a big challenge. The first batch of stepper motors (NEMA 14) were only able to handle 1kg-cm and they weren’t powerful enough to start with so much weight. So the only way to start them was to start slowly ramp up, and slowly ramp down to stop, without damaging the motors or spilling water. This was good enough for sustained notes, only for so long.
Early prototypes had fixed, static friction sticks touching the glasses. However, as a glass started to get filled with water, because it got heavier, the pressure applied from the friction stick was not enough to resonate the glass. Meaning, once a glass was 70% full, it became quieter. To address this issue, the first solution was to change the static friction sticks with servo arms (dynamic sticks), that can apply more pressure. This solved the issue to a great extend. However like every other fix, this caused more issues on its own as well. Most important being the lockdown.
When a glass is full, it requires more pressure, which can be applied up to 7kgs with the latest design’s servo arms. But as the arm started touching the glass, old steppers started to fall short. As soon as the friction sticks were lowered to touch the glasses, the pressure of the arms and the weight of a full glass stopped the old steppers. This required a change with the steppers. Replacing the steppers with the new powerful ones (NEMA17) solved the problem, but gave birth to another one. The locking mechanism wasn’t strong enough to hold the glasses in position. Once the friction sticks were lowered to touch the glasses, the pressure of the arms and the weight of a full glass didn’t cause the stepper to stop, but the glass itself stop spinning, because it wasn’t fixed well enough to the spinner plates.
To address the issue, first solution was to change the locking mechanism and try to get better results. After 6 failed iterations (all of which are listed under Spinning Plates & Glass Lockers) finally in the 7th iteration, lockers performed better. Although the glasses were absolutely locked with screws, nuts and bolts, the instrument started to lose its loudness with lower notes, because of the smooth surface of the acrylic, which caused the glass to spin/stop independently from the mounted platform. Finally the issue was resolved after placing a thin layer of EPDM roofing rubber between the glass and the platform to fix the glasses.
Keeping the water away from electronics got harder after switching to more powerful and faster steppers, as starting or stopping too fast with a glass full of water caused splashes. Solution to this issue was to go back to square one, and apply the same technique used with the old stepper motors. With the old steppers, as they’re not powerful enough, the only way to start and stop the steppers was to slowly and nonlinearly accelerate and decelerate. This technique temporarily solved the weak stepper motor issues, but more importantly because of it’s gentle nature, it didn’t cause any splashes. Thus was the most practical way to solve the splash problem.
Acceleration and deceleration helped the system function incredibly efficiently, however it caused many different issues, most important one being the noise. As the steppers got more powerful, the stepper coil noise became worse. After investigating the issue and testing different mounting techniques, none stopped the noise as the problem wasn’t a mechanical vibration noise, which can be dampened, but it was the noise of the coils being charged. After a few weeks of extensive testing, designing the system in such way so that the motor sounds would become a part of the instrument, seemed like a better solution. Or a pseudo-solution.
The idea of utilizing the sounds of the motors, and incorporating them in such way so that they would feel like a part of the instrument was a crazy one – also a hard decision to make. This was perhaps the most interesting hack of the whole project. Considering most of the motors don’t have their noise levels listed on their datasheets, it was a hard decision picking the right motors. The final iteration of the system uses a Max/MSP patch to convert midi signals to base note frequencies, which are then converted to motor speeds, and pushed to the Arduino over serial to be used by the motors as soon as the player touches a key. Tuning the motors, did help with the noise a lot, and although they’re still audible, they do sound more like a part of the instrument now. It was a practical pseudo-solution to a problem rather hard to solve.
As the motors got quieter, the suction pumps became more audible and irritating. The earlier prototypes had two tubes leading into the glasses. One to suck and one to pump. The pumps that are used to pump the water are submersed and are absolutely inaudible mainly because of the waters acoustic insulation. However the suction pumps are self-primed, and they are not submersible; hence the noise. The suction pumps were a part of the original design due to the earlier versions of the PID control loop. Valves, due to their loud switching noise, were not a part of the design. Thus, if the pumping tubes were placed onto the bottom of the glasses, gravity would pull the water back as soon as the pumping was done. To prevent water from going back, the pumping-tubes were at the rim, and the suction tubes were at the bottom of the glasses. So water was pumped in and dropped into the glasses, and sucked from within the glasses. This approach was decidedly abandoned due to the noise of the suction pumps. The final design uses a single tube, which is both aesthetically more pleasing, doesn’t use a suction pump, and is used both for pumping and sucking water out of the glass using a single submersed pump.
Eliminating the need of a suction pump of course meant changing the PID control loop. The earlier designs would stop pumping once the glass reached the target note, and the water level wouldn’t be affected by gravity, as the pumping-tubes were at the rim. The single tube came with its own problems. The biggest being the gravity. As soon as the pumps stopped, gravity would to drain the water out. To address the issue the PID control loop had to be changed. In the new design, the water level is maintained by pumping water into the glasses and compensating the amount of water gravity drains out. This solution eliminated the need of a separate loud pump to suck the water, and/or the usage of a loud valve.
Finally, with each different motor having different mechanical loudness properties, piezo microphones didn’t work out of the box. NEMA14 and early NEMA17 motors can get mechanically too loud, and their noise could affect the wine-glasses’ tuning accuracy. To address the issue, a potential system could use a laser microphone or a small electret condenser microphone aimed at the rim of each glass, eliminating the need to use mechanical pickups.