Engine Sound Synthesizer for Electric Airplanes.
Yann LeCun and Jean-Claude Le Cun
HistoryElectric R/C airplanes have a big advantage over gas airplanes: they are quiet. For years, we toyed with the idea of developing a sound generator for electric airplanes that would make them produce realistic airplane engine noises.
This page describes an airplane sound generater system that was developed in 2005/2006 and tested during the summer of 2006. It's main innovation (and main feature) is that the pitch of the engine sound is proportional to the speed of the propeller.
At first, we experimented with very simple circuits that consisted of an 8K byte eeprom chip connected to a simple digital to analog converter made with an R/2R resistor ladder. The address bus of the eeprom was simply connected to a counter. It worked, but there was no simple way of producing a clock for the counter that was proportional to the speed of the propeller, because the clock frequency for a typical engine RPM (about 8KHz) can't easily be generated from the slow RPM of an outrunner motor (at least not without some rather complicated frequency conversion circuit).
Hence, we opted for a software implementation on a microcontroler. We picked the Tini2138 from New Micros. It is a tiny module with a powerful LPC2138 ARM7-TDMI CPU from NXP running at 60MHz. The LPC2138 has the distinct advantage of being extemely small and lightweight, and of having an on-board 10-bit DAC, which we could use to produce the sound without requiring an external DAC. It also has 512KB of flash, which provides ample room for sound loops. On the down side, the Tini2138 module is rather expensive at $70.
A new Arduino-based design is coming upAs we write these lines (in August 2009), we are developing a new sound generator based on the hugely popular Arduino microcontroler platform. The system will be much cheaper, easier to build for hobbyists, and considerably ligher so it can fit into park flyers. But it's not entirely ready yet. Stay tuned.
DesignA reflective optocoupler (a phototransistor and an infra-red LED) points towards the rotating body of the outrunner brushless electric motor. The motor has a white band on half its perimeter and a dark band on the other half. The sensor output is fed to an amplifier and a Schmidt trigger whose output is connected to one of the "timer" inputs of the microcontroller. the input can be configured to save the value of a counter at each rising edge, hence meauring the period of the RPM sensor without burning CPU cycles. The software in the microcontroller sets its sampling period (the rate at which it pumps sound samples to the DAC) to a value proportional to the period measured by the sensor. If the RPM is below a threshold, the frequency to set so that the engine sound is at idle. The microcontroller has a number of potentiometers that are periodically read through ADC inputs. They are used to select the engine sound being produced, to adjust the coefficient linking the RPM to the sampling frequency, and to adjust the idle RPM.
The sound from the LPS2138 DAC is fed to an audio amplifier (about 40 Watts are required) and to a low-cost loudspeaker: the Visaton R10S, which is cheap, has a 4 Ohm impedence, is powerful (it can stand 40 Watts), and is relatively light (though not nearly as light as we would like).
The whole system is powered with a 4-cell LiPo battery.
The system was mounted in an old "Magnatila" model.
SoundsThe sounds were extracted from engine sound files that are provided with various flight simulator models. Suitably short sound loops were automatically extracted using a program that find appropriate breaking points so that the end of the loop meshes seamlessly with the beginning. Finding the cut point is performed using a simple cross-correlation method. The sound loop were resampled to 22050 samples per second, and scaled to 10 bits per sample. With 512KB or flash, the LPC2138 has ample room for lots of high-quality, uncompressed sound loops. Each sound loop is 32,000 samples (64KB at 2 bytes per sample), which allows us to store about 7 sound loops (without compression, and with a lot of wasted space since we only use 10 out of 16 bits for each sample word).
Sounds loops were produced for Cessna 172, DC3 Dakota/C47, Piper J3, Merlin engine (Spitfire and P-51 Mustang), Rayan PT22, Extra 300, and Airbus A340 jetliner.
VideosThese videos were recorded on July 30th and August 6th, 2006 at the flying site of the Aéro-Modèles Club de la Cote d'Emeraude, in Plerguer, France, near Saint-Malo.