Uses for the Jaycar XC-4438 microphone sound sensor moduleAugust 2016
Some experimentation on audio localisation required a set of suitable microphone/preamp units, which could be interfaced to a microcontroller.
From the Jaycar page, the XC-4438 module is titled as: "Arduino Compatible Microphone Sound Sensor Module"
Although there was no useful description or specification, or schematic available, one was bought for assessment. Priced at only NZ$10.90, there was little to lose, although equally, for that price, expectations were low.
Link to Jaycar XC-4438 page
What followed could be taken as an indication of the parlous state of electronics design, inadequate information and misleading marketing within the industry in modern times.
Advertising and specifications
Having been involved with electronics for a very long time, I read many product brochures plus specification datasheets. That information is used firstly to determine suitability, which then may lead to design of products and systems. Rarely is there enough information to guarantee any design works as required without prototyping, but modern marketing makes prototyping even more imperative.
Before we delve into the technicalities of this board, the XC-4438 advertising provides an example.
On the webpage, linked above, we first note that the product is called "Arduino Compatible Microphone Sound Sensor Module". What makes a product 'Arduino compatible'? Is it the fact that the board operates from 5 volts? In that case, a resistor might be called Arduino compatible. Some Arduino systems require 3.3V rails; the page is silent on that matter. Nothing else on the page suggests what makes the product compatible. The scope for arduino compatibility is therefore now so wide that a berry muffin might be called 'Arduino-compatible' simply because you might make an Arduino based set of scales to determine it's weight. One has to conclude that the marketeers have seen the rapid rise in popularity of Arduino and other microcontrollers and want to try and capture every audience possible.
Clicking the 'Specifications' tab on the webpage leads only to data for the module size and weight. Of use, but insufficient for any design decisions. Clicking the 'Downloads' tab provides a link to the single page "datasheet" which is reproduced below.
What constitutes a 'specification' ?
This is actually a major topic, in need of an dedicated article. The inadequacy of technical specifications throughout the industry is a continual source of vexation. The XC-4438 information sheet is but a minor example.
The heading and description
The Application paragraph suggests possible uses for the board, using an Arduino; there is a faint implication that an SD card slot might exist on board, however this is not the case. The Overview paragraph mentions high sensitivity, without qualification. Further mention of possible applications, for a Duinotech, which seems to mean the proprietary series of modules.
The 'Specification' table
- Sensitivity: Unfortunately "Ajdustable(sic) via trimpot" is not a specification; it is a feature, or facility. A proper sensitivity spec would provide the voltage output of the board for a given SPL (sound pressure) at the microphone, and give the range of adjustment.
- Operating Voltage: The statement "0-5VDC(analog)" makes no sense. The operating voltage would normally mean the range of supply voltage over which the board will operate. It would certainly not operate at 0V. This could be interpreted to mean the voltage output range of the analog output pin.
- Supply voltage: "5VDC". This is fine, except that the board will also operate at 3.3V (determined by myself) as required by some Arduino boards, and will in fact operate safely with a supply of up to at least 12V, if required for non-Arduino applications.
- Dimensions: Useful enough.
- Additional features: "Digital Threshold Comparater(sic)": This again, is a feature, but shown in an specifications table.
Remainder of datasheet
The Pinout table is useful; although a more complete specification would include the analog output range and the logic polarity of the digital output pin; i.e 5V inactive and 0V active as in this case. One has to assume that "SV" means 5V. Apparently, one optional accessory is an SD card module. No mention of a microcontroller.
The datasheet is short on data, is ambiguous, has phrases that make no sense and provides no basis for assessing suitability for purpose. The next section looks at the technical design of the board, actual functionality and operability.
Schematic and performance results
When one sees a module called "Arduino Compatible Microphone Sound Sensor Module", and interprets the minimalist data available, the expectation is that it will have a microphone, a suitable preamplifier, and a level detector. There will be means of adjusting sensitivity.
Schematic: This was drawn up to discover why the module was behaving differently to expectation. A discussion of the performance and limitations follows.
Audio levels from the board
Initially, there was no obvious audio on the scope at AO even when I yelled at the microphone. After adjusting the potentiometer so that AO voltage was at 2.5Vdc there was a very small audio output. It is now clear that there is no preamplifier, and the mic audio directly appears at AO, along with the bias voltage, set by the potentiometer. So, instead of the sensitivity being "high" as claimed, it is "low". So low in fact that it is unsuitable for use with a microcontroller. Electret mic capsules do have inbuilt preamps, and therefore require a bias voltage, but the audio level output is still low and always requires further amplification. The specifications given by the makers of electret microphones can be difficult to interpret themselves, but they all act fairly similarly. Usually, they will state sensitivity as a number of dB. This, by itself, means nothing. However, in this context, it most commonly means that this is the voltage (in dBV) that will result if the sound appearing at the capsule is equal to 1Pa, or 94dB SPL. I have seen some mics as sensitive as -36dB, but most are around -44. Since dBV is a reference to 1 volt, the output of the mic can be calculated for any applied sound pressure level. If the spec is -44, for example, the voltage out of the mic for 94dB SPL is 10^(-44/20) which is just 6.3mV rms. Given that 94dB SPL is quite loud (you need to yell directly in front of the mic), the levels for 'normal' sound levels will be much lower, perhaps 1-2mV.
Now feed that to an analog input of an Arduino. First, set the bias to be mid-point for best dynamic range, so in this case, 2.5Vdc. Arduino's (most) have 10 bit A-D converters, so with no sound, the analog read function will return 511 or close. 10 bit quantisation using 5V reference means that 1 bit is equal to around 5mV. For 94dB SPL and -44dBV mic sensitivity, the peak to peak audio value (assuming sine) will be 18mV (9mV above 2.5V and 9mV below 2.5V. Thats not even 2 bits of change. The reading will go from 511 up to 513 and down to 509. Not a great use of the A-D converter one would say. I did see about 250mV on the scope while whacking the mic with a (small) screwdriver, however that is not an everyday requirement. So, apart from anything further, this poor sensitivity alone makes the board unsuitable for level measurement with a microcontroller.
Is the sensitivity adjustable?
The 100kohm potentiometer will adjust the voltage at AO and this will be the mic insert bias voltage. Typically these inserts draw about 0.5mA. They should be run at between 2.5V and 5V, but can tolerate even 12V. Ideally for best dynamic range of audio and for any subsequent ADC, AO should be near mid-rail, say between 2V and 3V with a 5V rail. To achieve this with 0.5mA, the potentiometer needs to be set to a resistance around 5Kohm. Varying the potentiometer over this range; i.e to set AO between 2V and 3V, the mic sensitivity did not change. However, if the potentiometer was set to make AO below 1.5V. the mic output reduced. This also occurred if the bias was set above 4V. This is because the pot is now at 1kohm or less and the loading of the mic is too great. So, strictly speaking, the sensitivity can be reduced, however, in normal operation, the pot has limited effect on sensitivity. The potentiometer is there to change the switching point of the comparator that signals audio presence.
The threshold detector
The threshold detector utilises an LM393 dual comparator I.C. One comparator provides the DO signal; the other lights an on-board LED when audio is present, assuming the potentiometer is set up correctly. Note that the reference for both comparators is preset to mid-rail by R2 and R6. That is 2.5V exactly when Vcc is 5V. To obtain switching with low audio levels, the potentiometer must be set so that AO is near to 2.5V; either slightly above, or slightly below. For higher audio levels, the AO voltage is set further away from 2.5V. However, I could not achieve any switching action at all if this voltage was more than about 250mV different to the reference 2.5V. The mic audio was just too low.
This shot from the scope shows the AO and DO outputs with audio AC coupled from a generator, in place of the mic.
The bias voltage was just below 2.5V here. So, when the sinewave instantaneously exceeds 2.5V, the DO signal goes low. When the sinewave falls below 2.5V the output is high, or off. There is no hysteresis around the switch point. The onboard LED lights when DO is low. If I attempted to set the AO level too close to 2.5V, multiple transitions could occur for each AC crossing.
There is much wrong with this unit, both in terms of functionality and electronic design. A realistic design for this purpose has to have a microphone preamplifier. Audio overload indicators would indicate if the peak level was approaching the supply rail limits. The dc output needs to be permanently centred at half rail. A proper gain control is required. If a threshold detector was also needed, it needs peak detection plus independent threshold control, with a short holdover period. It must not produce a squared version of the input signal unless that is an additional function. Proper attention to design details are needed such as using potentiometer values that do not need the pot to be set near one end of the range, and even to include bypass capacitors, as recommended by IC manufacturers. In answer to the admittedly coy title of this article, ideas are still forthcoming. Sorry.
From: Balthasar 22 August 2016
Hi, thanks for you review of the "arduino compatible" Jaycar mi-crap-o-phone module. I bought one a while back and finally wanted to have a play with it. Fired up the soldering iron and hooked it up the way I'd anticipate it to work, and of course it didn't work... your article came up first in a google search, explaining nicely why this $10 waste isn't working. I'm baffled though - they sell those by the hundreds I'm sure, and nobody can get them work for sure. How come they still sell them? Looks to be more crystal healing than arduino compatible...
Make a comment via the contact page