I have a little mystery for you…
I want to connect my motorcycle helmet communication set to my Android phone, including the push-to-talk (PTT) functionality. This is a simple wired setup, not Bluetooth.
The communication set in the helmet is straightforward: two 32 Ohm drivers and a microphone. I made a cable according to the CTIA specifications for 3.5 mm headjacks at source.android.com. In the cable I spliced in a push button for the PTT function:
simulate this circuit – Schematic created using CircuitLab
(More about the resistor later) It can't be much simpler than this, right? Now the weird part:
Push to talk doesn't work.
The speakers are working; the microphone works fine, I can talk and record sound from it. Yes, I know ground is the 3rd ring, not the 4th (last). However, whatever I do, pushing the button does not activate the PTT function.
Of course I tested it with an off-the-shelf headset which works perfectly. I measured its characteristics: drivers are 32-33 ohm, microphone 1.13 kOhm and pushing the button shorts the microphone circuit.
The microphone in my helmet has a slightly lower DC impedance (around 890 Ohm) than the Android specification (>= 1000 Ohm), so I inserted a resistor in line with the microphone; I tried values from 100 to 1 kOhm, but still no PTT function. Electrically I cannot find any difference between the off-the-shelf headset and my setup when measuring at the 4-pin connector.
But, it even get's weirder. If I unplug the cable from the helmet (so no drivers or microphone, just the cable with the switch), PTT works. Of course there's no sound but the application reacts to the pushes.
And oh, I tested with two different Android phones by different manufacturers: the same result.
The only difference that I can possibly think of is that the microphone in the helmet might a dynamic type while the one in the headset could be an electret; but how to test that without breaking the headset open?
Could it be that Android phones put a low-frequency signal on the microphone line to detect one? But surely, a 1 kOhm resistor would be enough to fool that.
More info:
Mic open circuit voltage: 1.79 Volt (measured at the headphone jack)
My cable:
Microphone DC resistance: 0.90 kOhm
With microphone attached: 0.54 Volt
Button closed: 0.00 Volt
Headset:
Microphone DC resistance: 1.13 kOhm
WIth microphone attached: 1.32 Volt
Button closed: 0.00 Volt
Fixed 1 kOhm resistor: 0.58 Volt
So definetely a different voltage, which is not explained solely by DC resistance..
Best Answer
Well, I figured it out. First, I discovered that the helmet microphone is an electret and I reverse-biased it. Oops. I discovered this by plotting a U/I curve of the microphone; I noticed the diode-like curve so I reversed polarity and also measured two other headsets.
(Horizontal is milliVolt, vertical is micro-Ampères)
Still, the helmet_rev curve is way higher and even with the correct polarity PTT didn't work because the voltage over the mic was still low (0.74 V). So I plugged in the second helmet set that I have, and that worked immediately.
Conclusion: the microphone in the helmet is broken. Not sure how since it still captures sound, but in any case it is out of spec for this application. Could I have damaged it by connecting it in reverse, even at such low voltages?