High Level Design
Rationale and Sources of Project Idea
We were intrigued by this project because it incorporated so many areas of electrical engineering. Also, the thought process we used to come up with idea involved thinking of household electronics items that we could use the microcontroller to create. Several items seemed to simplistic (for example an alarm clock), and others we felt were not realistic goals (such as a printer). A digital answering machine came to mind. It seemed to have an appropriate level of complexity, and that is what we modeled our project after. To simulate someone talking over a phone, we had a microphone circuit. We had external memory to allow us to store more data. Then, we had track functionality, to simulate multiple messages. We added voice distortion as a fun feature.
The main math revolves around the Nyquist frequency. An established fact is that the human voice’s highest frequency is 4000Hz. In order to get all the Fourier components of a period signal, one must sample at twice the highest frequency. So in this case, we sampled at 8kHz. All other math involved in this project, was dedicated to designing filters with the appropriate cutoff frequencies, and code to maintain this sampling rate.
The backbone of this project is the microphone and the circuit that accompanies it. Without this, we could not realistically test the other components of the design. After this part worked, we implemented code to run the DataFlash. This was necessary, since to record any significant amount of sound, we needed to hook up an external memory source. To actually get an accurate output, we also had to add a DAC circuit. We tried a PWM and a DAC, and a DAC proved to be more accurate in being able to reproduce the human voice. Finally we added a user interface, voice distortion, and the ability to record and playback multiple tracks.
We made compromises in order to get our project into a state where it would demo able. The first is the decision to use DataFlash over secure digital card. We spent many hours in lab trying to get SD to work. However, after realizing that there was a chance that we may not get it working in time, we made the decision to start the implementation of DataFlash. Part of the reason SD was so difficult was the lack of any buffer. This made the timing all the more sensitive.
This site was last updated 05/02/05