Hello again. This is the second part of my blog on the design of a USB microphone based on the LDC1000. I decided to make a single blog for weeks 2 and 3 since I haven't been able to spend a lot of time on the project these past weeks. Being sick didn't really help either.
Software for the LDC1000
I received my LDC1000EVM some time ago and have done some basic functional tests. The LDC1000EVM uses an MSP430 to transfer data between the LDC1000 and a USB port. Apparently the driver uses a virtual serial port, so it shouldn't be too hard to write your own software tools. The LDC1000EVM does come with an evaluation program: the LDC1000EVM GUI. This software allows you to quickly test the functionality of the evaluation module and change various configuration parameters.
The LDC1000EVM GUI also allows you to save all the data produced by the LDC1000 in a log file. This is useful if you want to manipulate or analyze the data, however there is a limitation: continuous logging at a rate faster than 1sample/0.1ms is not yet supported. From what I can gather the logs use the following format:
Days,Months,Years,Hours,Minutes,Seconds,Milliseconds,Proximity,?,Inductance,unit of inductance,Proximity(again?),Frequency
example: 13:05:14:09:25:30:526.000,7974,,22.094,uH,7974,3629,
Obviously, the evaluation software is also not that useable for my project because there is no way to manipulate or play back the data (besides saving it as a log). Furthermore, the maximum sample rate seems to be limited to 20000Hz. Luckily there is a Matlab library included in the installation package which should allow me to increase the sample rate and linearize the output. Another advantage is that it will be pretty straightforward to analyze the data in the frequency domain using the built in Fourier transforms. I don't really have experience with processing audio in real time using Matlab, but from what I've read it should be possible as long as the operations are simple.
In the end, it would be better if all the audio processing was done inside the microphone, perhaps using the MSP430 or a small DSP. However, for now it's much easier to do all the testing in software.
Construction of the microphone
I haven't constructed a suitable prototype yet, but I am considering some sort of 3D printed mount that can hold the transducer and the coil. I have experimented with a piece of cardboard tube and aluminum foil, but the results were not very good. First of all it is quite difficult to mount the coil at a precise (and fixed!) distance from the transducer. Once you do manage to get a somewhat decent result it is very unstable and affected by slight vibrations and flexing of the cardboard. The good news is that the coil can easily pick up vibrations in the aluminum foil at a short distance. The aluminum foil was only about 100microns thick.
The basic idea for the 3D printed mount would be something similar to the construction of a condenser microphone. In this type of microphone there is a moving diaphragm which is basically one plate of a capacitor. The other plate of the capacitor is rigid and placed at a fixed distance from the first one. If you apply a sound to the diaphragm, the distance between the two plates changes resulting in a variation of the charge on the capacitor plates. Obviously there needs to be a charge present on the capacitor for this to work, so condenser microphones require a DC voltage to operate.
My setup doesn't really use a capacitor, but if we compare this to a microphone with the LDC1000 the diaphragm is the piece of metal we want to detect and the back plate is replaced by the coil. Because the LDC1000 does not require a DC voltage, it's possible to use a plastic case.
source: Difference between a dynamic and condenser microphone | Pro Acoustics USA
The image below shows a 3D mockup of the parts I'm planning to print. There are three types of circular plates, each with holes along the side to attach them together with nuts and bolts.
The back plate would basically be replaced by a solid plastic plate with a thickness of a few mm so it is rigid enough. In the back plate there is a slot to fit the PCB coil that came with the LDC1000EVM. This is just to test the basic functionality using that coil. I will probably have to design my own coil at some point to get the best results. In front of the back plate there will be a couple of plastic spacers to get the best possible distance between the coil and the diaphragm. I will print spacers of 1mm, 2mm and 4mm and experiment to find the optimal distance. The diaphragm should be mounted after these spacers, but I'm not yet sure what type of material I will use. Aluminum foil might be suitable for the diaphragm, but it is pretty fragile. I might consider using a type of conductive spray (made for EMC shielding, example: SCP03B - ELECTROLUBE - PAINT, CONDUCTIVE, SILVER, 3G | Farnell België) and spray that on some other type of flexible material (some type of plastic foil or sheet). This type of spray contains silver or nickel particles so it should be a very good conductor. The last plate is just a protective cover to improve the overall sturdiness of the assembly.
To get an idea of the size: each rings has a total diameter of 110mm. The spacers have a border of 5mm each. I will use 2.5mm bolts to keep it all together.
Plans for this week:
-3D print the prototype
-get the Matlab libraries working
The files for the 3D printed mount should be available soon in case anyone wants to try building something similar. Once I get the Matlab libraries working I will also upload what I have so other people can try it with their LDC1000EVM.
Until next week.. Good luck to all the other challengers too!