So I'm working on a CW decoder that will take an audible Morse code signal and decode it and then display the decoded signals on an LCD display. I've got that much working by just connecting an audio cable from my computer to analog 1 and ground on my Arduino. The issue is that I wanted to incorporate a microphone so I could use this device to decode CW without having to be directly connected to the audio source. So I purchased this..
It's just a simple electret microphone with an audio amplifier circuit attached. This particular one is advertised as having a fixed gain of 20db, but what I'm finding is that I have to have the audio source turned up very high and placed about an inch away from the microphone before the arduino is able to decode the signal.
What do I need to do to make this work better?
Can you post a link to where you purchased it please?
I am going to assume that as it relates to my topic that I will not be shunned for linking to an external site, so here's the link..
I've been continuing to dig for information on this and I'm finding pretty much everywhere that I need to include an amplifier to make use of this module. The amplification circuit that is built in provides 20db, but electret microphones have a very low output. So little that 20db of gain still isn't very much.
So I'm sniffing around the internets for a mono amplifier circuit.. Maybe I'll just have to get out my transistors this weekend and see what I can come up with.
It's hard to see the actual wiring on that board, but the gain will be set by the ratio of the 2 resistors...
a 2k7 and a 1k. if used in a standard non-inverting opamp layout that would give a gain of about 4x, about 12dB
Try fitting a 27k for the 2k7 - that should get you 29dB if my guess is right
try varying them
The module seems to have a capacitive coupled output (C4).
That means that you have to use a 1:1 voltage divider on the analogue pin, to force the pin mid-voltage when idle. Try two ~47k resistors. No sound will now read an A/D value of about 512.
I assume you're using an analogue input, and are sampling often enough.
No experience in sampling audio. Somebody else will hopefully chime in.
Post your code.
Thanks for the input guys I really appreciate it. For anybody who is curious about the project, below is a link to the project I'm working from, note the voltage divider resistors in that schematic. I've also modified the code to support an I2C display since that's what I have on hand and makes for a lot simpler wiring. This is a project that was built by an amateur radio operator, and I want to use it in the same application. I'm also a Fallout fan and still regularly play through Fallout 3 so I thought it would be cool to use this to decode the radio beacons that can be found scattered around the capital wasteland.
Skovholm CW Decoder
So now I'm shopping around for an inexpensive mono audio amplifier and have some quarter inch audio jacks on the way that were ordered for a guitar amp that I am repairing for somebody, so the extras may end up in this project.
Hopefully this will turn into something I can actually use with my ham radio equipment at some point. I'll also be working on a CW encoder eventually but I'm planning to task that to a Raspberry Pi so those questions will be going to a different forum.
Thanks again everybody, I'll be following and posting on this thread while I continue the project.
Well I found an inexpensive stereo amplifier that will probably do the trick. It's coming from Shenzen, so I'll probably have come up with another solution by the time it gets here, but just in case I haven't it's on the way..
how is your unit different than this one ?
BTY, this is not a paid or selling site, so links to products you purchaused and are using is a good thing.
There is a place you can sell your stuff, it is a different forum.Electret Microphone Amplifier - MAX9814 with Auto Gain Control : ID 1713 : $7.95 : Adafruit Industries, Unique & fun DIY electronics and kits
linkes to products you have problems with helps us help you
There are a few differences between the module I am using and the one you linked. The one important difference is that the one I am using has a fixed gain of 20db where the Adafruit version allows you to set the gain higher. These little condenser (Electret) microphones are not very sensitive, and the job I have tasked it with requires that it be very sensitive. For testing, until I get an additional audio amplifier included into the build, I have removed the microphone completely and connected the audio output from my computer to the arduino analog pin. Since I am using computer generated CW signals anyway. Moving forward, I plan to have an audio pass through meaning an auxiliary cable will be connected from the source device, weather that is a computer or a radio or other sound source but there will also be an output on the decoder so an external speaker or headphones can be connected so the signal being decoded can be listened to as well. The more I'm working with this, that just seems like the better way to go. I do, however plan on also including a built in microphone that can be used optionally so i will still need to incorporate an amplifier. I'll probably need to have two actually. One for the microphone and one for the decoder audio output. Since this is going to be mono input and output, I'm considering using a single stereo amplifier and just using one channel for the microphone and one channel for the output port. We'll see how that goes.
Anyway, the point i was going to try to make before my brain got side-tracked talking about the bits I've already talked about is this. Even connected directly to the audio output of my computer, the unit is only able to handle CW signals up to 20 words per minute, regardless of how I tweak the code. So I am considering the addition of another bit of circuitry, the LM567 tone decoder. The best part about this IC is that I can also use it to achieve something known to amateur radio CW operators as "Zero beat" Which basically means both operators have matched the frequency of their signals which makes for much better sending and receiving. I can add an LED and perhaps an indication on the display when the zero beat is achieved. This is done by adjusting the center frequency with a pot. From there, the LM567 will decode the CW tones and pass them to the arduino which now has less work to do. This should make the whole thing run more smoothly.
This all means that my project has become more complicated, but I'm hoping I will have a more useful final product since not every operator likes to work at 20 words per minute or less. I am eager to get this thing into a nice neat project box but it will remain on a breadboard until I am satisfied. I'll come back and post more information and updates when I have them.
So I've received a pack of four LM567 tone decoder ICs purchased on ebay and will be working on a "Zero beat" circuit in the following days/weeks. Work puts a damper on science unless it's your job. Anyway, my hope is that I can send the resulting signal from the zero beat circuit to an analog pin on the arduino to decode and display it. Just like I'm doing now, but with an additional layer (I hope) of accuracy. Instead of having to adjust center frequency in the sketch, I'll be doing it with a 10k variable resistor. The method is simple, when I've matched the frequency of the incoming CW signal, an LED will flash visually indicating the dots and dashes. So instead of feeding an audio signal into the arduino, I can give it low/high states. I'm hoping it will have an easier time managing that but I won't know for sure until I try it. Once again, it looks like everybody has lost interest in my post so this might just end up being another one of Steve's blog posts that nobody reads.