Introduction
This is the first prototype of a set of automatic tubular bells I built in 2006. I'll post here the most relevant information about the project. It's features are:
    - 12 chimes
    - Each chime plays one note, so it can play a full octave ( from C to B, including sustains )
    - It can play up to 4 simultaneous notes ( so it can play 4 note chime chords )
    - It is controlled through PC serial port (standar RS-232)

General structure
The instrument is composed of the control unit box and three towers. Each tower contains 4 chimes and two motors, every motor strikes two of the four chimes. All the towers are connected to the control unit box through a 10 wire-bus. The control unit is the responsible of powering each motor with the precise energy and speed to hit each chime, playing the notes that the software in computer sends to it. It is internally composed of three boards. The first board contains the microcontroller, which is an Atmel ATMega16, and the RS-232 communication elements. The second one contains the motor driver circuits, and the third one, the motor position controllers.

 

Building the chimes
First step was finding a good and cheap material to build chimes. After visiting some stores and doing some tests, I found that aluminium was the material which gave me the best sound quality vs. price relationship. So I bought 6 bars of 1 meter of length each one. They had a 1,6cm outer diameter and 1,5 cm inner diameter ( 1mm thickness ) Once I had the bars I had to cut them at the proper length to get the frequency of each note. I searched on the internet and found some interesting sites which provided me lots of interesting information about how to calculate the length of each bar in order to get the frequencies I wished (see links section). Needless to say that the frecuency I was looking for was the fundamental frecuency of each note, and as happens in nearly all instruments, the bars will produce other simultaneos frecuencies appart of the fundamental. This other simultaneous frecuenices are the harmonics which are normally multiple of the fundamental frecuency. The number, duration and proportion of these harmonics is the responsible of insturment's timbre.

The relationship between the frequency of one note and the same note in the next octave is 2. So if fundamental frequency of C note is 261.6Hz , the fundamental frequency of C in the next octave will be 2*261.6=523,25Hz. As we know that Western European music divides an octave into 12 scale steps ( 12 semitones organized into 7 notes, and 5 sustained notes), we can calculate the frequency of next semitone by multiplying previous note frequency by 2^(1/12). As we know that C frequency is 261.6Hz and the ratio between 2 conescutive semitones is 2^(1/12) we can deduce all notes frecuencies:


  Note   Freq  
01 C 261.6 Hz
02 C# 261.6 * (2^(1/12) ) = 277.18 Hz
03 D 277.18 * (2^(1/12) ) = 293,66 Hz
04 D# 293,66 * (2^(1/12) ) = 311,12 Hz
05 E 311,12 * (2^(1/12) ) = 329.62Hz
06 F 329,62 * (2^(1/12) ) = 349.22 Hz
07 F# 349.22 * (2^(1/12) ) = 369.99 Hz
08 G 369.99 * (2^(1/12) ) = 391.99 Hz
09 G# 391.99 * (2^(1/12) ) = 415.30 Hz
10 A 415.30 * (2^(1/12) ) = 440.00 Hz
11 A# 440.00 * (2^(1/12) ) = 466,16 Hz
12 B 466,16 * (2^(1/12) ) = 493.88 Hz
13 C ‘ 493.88 * (2^(1/12) ) = 2 * 261.6 = 523.25 Hz

 

Previous table is only for information purpose and it is not necessary to calculate the bars length. The most important thing is the relationship factor between frequencies: 2 for the same note in the next octave, and (2^(1/12) for the next semitone. We will use it in the formula used to calculate the length of the bars. The initial formula which I found on Internet (see links section) is:

   f1/f2 = (L2/L1)^2

from it we can easily deduce the formula which will lets us calculate the length of each bar. As f2 is the frecuency of the next note we want to calculate and we want to know next semitone frequency: f2 = f1 * (2^(1/12))

   f1 / [ f1 * (2^(1/12))] = (L2/L1)^2
   [ f1 / [ f1 * (2^(1/12))] ]^(1/2) = L2/L1
   L1*[ f1 / [ f1 * (2^(1/12))] ]^(1/2) = L2
   L1* [1/(2^(1/12))] ^(1/2) = L2
   L1*[1/(2^ (1/24))] = L2

the formula is:

   L2 = L1 * [2^(-1/24)]

So with this formula we can deduce the length of the chime which will play next semitone, but obviously we will need the length of the chime which plays the first note. How can we calculate it? I don’t know how to calculate the length of the first chime. I supose that exists a formula which relates the physical properties of the material, the size of the bar (length, outer and inner diameter) with the frequency it will play, but I don’t know it. I simply found it by tuning it with the help of my ear and guitar ( you can also use a tuning fork or a PC sound card frecuencemeter to tune it ).
 
The three towers
After cutting the bars to the proper length, I had to construct a support to hang them. I made some sketchs, and finally built these three towers you can see in the pictures. I hung four chimes on each tower passing a nylon wire through the holes I did near the top and the bottom of each chime. I had to drill holes on the top and the bottom because it was necessary to fix chimes on both sides to avoid they oscillate without control when being struck by the sticks. The precise distance to place the holes was a delicate matter and they had to coincide with the two nodes of vibration of the fundamental frequency of the bar, which are at 22.4% from the top and the bottom. This nodes are the no-movement points when the bars oscillates at it’s fundamental frequency, and fixing the bar at these points should not affect them when vibrating. I also added 4 screws on the top of each tower to allow adjusting the tension of each chime's nylon wire.
Motors and strickers
Next step was building the devices that move the striker sticks. This was another critical part, and as you can see in the pictures, I finally decided to use DC motors to move each striker. Each motor has the striker stick and a position control system attached to it, and is used to hit a pair of chimes. The striker stick is a piece of bike spike with a black wood cylinder at the end. This cylinder is covered with a thin auto-adhesive plastic film. This combination of materials gives a soft but loud sonority when striking the bars. In fact I tested some other combinations, and this was the one which gave me the best results ( I would be grateful if someone lets me know a better one ) . The motor position control system is an optical encoder of 2 bits of resolution. It is composed of two discs: one of the discs rotates solidary to the stick and has a black & white codification printed on its bottom surface. The other disc is fixed to the motor and has two infrared CNY70 emitter-receptor sensors which can distinguish the black and white colour of the other disc, and so, they can deduce the position of the stick ( FRONT, RIGHT, LEFT and BACK ) Knowing the position allows the system centering the stick before and after striking a bell what guarantees a more precisse movement and sound.
Control Unit hardware
Once I had finished the three towers, it was time to build the control unit. As I explained at the beginning of the text, the control unit is a black box composed of three electronic boards. The main board contains the logics, the serial communication adapter ( 1 MAX-232) and the microcontroller (an ATMega32 8 bit RISC microcontroller ). The other two boards contain the circuitry needed to control the position sensors ( some resistors and 3 triggers-schimdt 74LS14) and to power the motors ( 3 LB293 motor drivers). You can take a look to the schematics to get more information.
Central part of the Control Unit, with the microcontroller and other ICs. Despite the LCD apears on the schematichs I finally didn't mount it . Click over the picture to enlarge schematichs. Remember to read Project Conditions before using any part of this project.
Position encoders sensors at left . Programming, communications, and tower conectors at right.
Click over the picture to enlarge schematichs. Remember to read Project Conditions before using any part of this project.
Motors and motor drivers. Click over the picture to enlarge schematichs.
Remember to read Project Conditions before using any part of this project.

Software
The firmware has been developed in C, with the gcc compiler included in the free WinAVR development enviroment ( I used programmers notepad as IDE). If you take a look to the source code you will find different modules:
- atb: contains the "main" of the project and the system intialization routines. Is from "atb" where other modules are called.
- UARTparser: is the module with the code of the serial parser, which takes the notes sent by the computer through the RS-232 and converts them into commands understandable for the “movements” module .
- movements: converts a note command recived from UARTparser, to a set of different simple motor movements in order to strike a chime. It tells to the module “motor” the sequence of energy and direction of each motor.
- motors: implements 6 software PWM to power the motors with the precise energy and the precise duration set by the "movement" module.

Click here to download firmware source code. Remember to read Project Conditions before using any part of firmware.

The computer software is a simple Visual Basic 6.0 application which allows the user entering and storing the sequence of notes which compose a melody. It also allows sending the notes through the PC serial port and listening to them played by the Atb.

 

Conclusion
Despite the instrument sounds nice, it is not fast enough to play some melodies, in fact some times it desynchronizes a bit with the melody. So I am planning a new more effective and precisse version, because time precision is a very important matter when we are talking about musical instruments. If you play a note with some miliseconds advance or delay your ear will find something strange in the melody. So each note has to be played in the precise moment with the precise energy. The cause of these delays in this first version of the instrument is that percusion system I have choosen is not as fast as it should. The new version will have a very similiar structure, but will use solenoids instead of motors. Solenoids are faster and more precisse but they are also more expensive and dificult to find. This first version can be used to play simple melodies, as stand alone instrument, or in clocks, doorbells ...

 

Links
In this sites you will find allmost all information you'll need to build your own chimes:
Making Wind Chimes By Jim Haworth
Making Wind Chimes By Jim Kirkpatrick
Wind Chimes Constructors Message Group

Here you will find a video of Automatic Tubular Bells:
Automatic Tubular Bells on You Tube

 

Poject conditions
Using any information, schematic or source code here exposed means accepting these conditions:

- License: All information here exposed may be distributed without charge and in its original form. The copyright and any intellectual property relating to this program remain the property of the author.

- Disclaimer of Warranty : Unless required by applicable law or agreed to in writing, author provides this information, schematichs and software on an "AS IS" basis, without warranites or conditions of any kind, either express or implied, including, without limitation, any warranties or conditions of title, non-infringement, merchantability, or fitness for a particular purpose. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

- Limitation of Liability : In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall the author be liable for any damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the software (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if the author has been advised of the possibility of such damages.

 
... Label, Program & Audiovisuals (c) Tolaemon 1996-2005...