Small loudspeakers are notorious for lack of bass. Their typical frequency response features a resonance at around 300 hz, and in lower frequencies the response rolls off as f^2. I am trying to alter the cause of the resonance, to shift it into lower frequencies, or even eliminate altogether.
Resonance involves a mass and a spring. In case of a loudspeaker, the mass is the cone, and the spring is cone suspension and air in cabinet.
With a microphone, the force created by one of these "springs" (the air) can be measured, and extra current can then be sent through the voice coil to compensate for that force. This should shift the effective resonance down in frequency, and thus extend frequency response.
The potentiometer adjusts the depth of microphone positive feedback, which changes the amount of bass boost. If it's adjusted too high, the system starts to self-oscillate. Back off a little bit till the oscillation is extinguished, and that is the setting for maximum possible bass boost.
Not any microphone will do. The microphone should have very flat frequency response in bass range of interest, and perfect phase response as well. The microphone must also be able to handle high sound loudness, in my case it was 147 db (470 Pa of sound pressure, RMS). First I hacked a standard microphone to reduce its sensitivity and extend frequency response. It is tricky. Later I found out some piezoelectric buzzers do the job.
The enclosure must be well sealed. I'm not sure what will happen if it has passive subwoofer or a bass-reflex port. My system had a passive subwoofer originally, I have removed it.
Modifying microphones is tricky. Very tricky. I was successful only ONCE, a few attempts after that success failed. Sometimes I would not get the proper sealing, sometimes I destroyed the fet, sometimes I was just sick of messing with these mics that are not designed to be taken apart. I need a better transducer, badly.
Visited electronic component store. Bought a few piezo buzzers to test. Quick success!
It is HPM14A. I took one apart to see what's inside. It has a sealed volume behind the metal-ceramic diaphragm. Works down to some extremely low frequencies.
It puts out voltage proportional to flexing of the diaphragm. It looks like a 11 nF capacitor electrically, so the input impedance of the following amplifier must be a few megaohms. That's no problem, just make sure to use FET-input opamp.
The output voltage amplitude is from 0.3 to 3.4 V depending on loudspeaker and volume, which is a very convenient magnitude to work with.
The diaphragm is extremely thin btw. There is no chance of getting it off without cracking the ceramic, I'm afraid. But it looks like there is no need for that.
I was anxious about its sharp resonances around 4 kHz. I expected the whole system to self-oscillate at that frequency. Well, it didn't, but there was a noticeable ring around there. A little bit of low-pass filtering in feedbass loop made it inaudible.
3M resistor, in combination with piezo capacitor and 6.8nF one set low frequency cut-off of the feedbass loop. 27K-6.8nF RC network is a low-pass filter, for reducing feedthrough of that buzzer resonance. That 6.8 nF cap also reduces buzzer's sensitivity to low frequencies by forming a capacitive voltage divider - this is not important for this particular implementation, but might come in handy if you can't set the gain low enough with the trimpot.
Trimpot adjusts the amount of positive feedback (tweak it until you get low-frequency self-oscillation, then back off a bit).
Assembly, a total prototype quickly thrown together for testing.
And the frequency response.
As before, Feedbass hasn't completely rectified bass part of frequency response, but it reduced the fall-off rate significantly.
There is a peculiar peak at around 2 kHz. I'm not sure where does it come from. Maybe the resonance of the buzzer has changed upon attachment to the speaker... maybe mechanical vibration is transferred through the case instead of air... But with ears, I don't notice it.
Also, I'm quite surprised to find a 3rd-order fall-off in the low frequency. I expected a 2nd-order fall-off (I plotted a best-fit for that with a thin red line). Does anyone have any idea on why is it 3rd order?
And pyroelectricity does cause a bit of trouble (apparent DC offset) for a minute or so after soldering the buzzer, but then the offset just goes away.
I've been using my feedbass-equipped speaker for a little while, and I noticed two good things.
++ Good tradeoff between bass and loudness.
If I were to extend frequency response down to say 50 hz perfectly, the speaker will only be ok at very low loudness, as a lot of bass boost is required (approximately 14 times). Feedbass makes only a 4.5 times boost, which seems to be enough to make the bass very audible, yet leaves much more room to increase the volume.
++ Good overload behavior
As the amplifier clips, the positive feedback is broken, and the system almost instantly leaves the overload. In contrast, a pre-filter based design would remain overloaded until the transient is finished, letting no sound through for that period.
This results in a very soft overload behavior of feedbass, where the bass is distorted, but the sound is not interrupted. With filter-based correction, as soon as some subtle overload begins, the music is completely ruined by the intermodulation. With feedbass, there is almost no intermodulation, and moderate overload sounds OK.
That makes me reevaluate the results: the project is an EPIC SUCCESS!!!, even though it's a bit accidental. And I plan making a few more feedbass speakers soon!
I've been asked by @charleslinquist , why not add bass boost for that particular speaker+box with a filter network in front of the amplifier, instead of all this mess with microphone? Nice question.
I actually have been doing that for a long time, but using a digital processing instead of an analog filter. Building analog filter just seemed too much of an adventure, and here's why.
With a sealed box, the frequency response depends directly on cone motion x(t). This motion can be reasonably well approximated with a mechanical oscillator equation:
Where omega_0 is resonance frequency in rad/s, gamma is viscous friction coefficient and f(t) is external force (i.e. current through voice coil). Dampening by electromagnetic braking is not exactly equivalent to viscous friction, but should be good enough. Flat frequency response more-or-less corresponds to
where a(t) is the waveform of audio record, i.e. air pressure vs time.
So, we can solve for voice coil current:
So easy. Just mix the signal with some first and second intergrals, and the response is compensated... and with perfect phase btw!.. Not so fast, of course. Now we have a problem, that the filter has infinite gain at DC, and we shouldn't amplify anything below 16 hz (because humans can't hear that stuff, while it would cause the speaker to work really hard). So we have to add some high-pass filtering. And in order to eliminate the infinity, the filter has at least to be of second order. My experience with digital filters shows that second order doesn't work well (still extreme sensitivity to subsonics in recordings), and third order is the way to go.
So naiive filter would be:
This requires about 5 opamps for a straightforward design. Maybe this can be collapsed into fewer stages... for example, 2 orders of the subsonic can be embedded into integrators, by doing them as RC-filters rather than perfect integrators. Also, at least two trimpots in mixer to tweak to excellence.
Now that is still not it. If I decide that my subsonic is 16 hz, my box with tiny speakers will be almost useless because of low maximum loudness possible... a bit more volume, and it clips horribly due to enormous bass content required to rectify the response.
So choosing the low frequency cut-off is a compromize: you can get deeper bass, but at an expense of loudness.
In my digital filters, I've exposed that subsonic cut-off frequency as adjustable. This way, if I am in silent room enjoying muskick, I make deeper bass. If party time and muskick has to be loud, I sacrifice bass depth.
So in the analog filter, I want a pot that adjusts the corner frequency of the subsonic filter. And that takes a TRIPLE FREAKING POT! for one filter! And if stereo, a SIX-IN-ONE pot. Man, that's insane. Not to mention that the pot has to be used in rheostat mode, which makes it unreliable. Sure, that can be made with voltage-controlled attenuator ICs, but it's still waaaay too much trouble.
So the design explodes into a horribly complex and hard to calculate system, with many opamps, trimpots, capacitors, and the at-least one triple pot.
The beauty of feedbass idea is that the same resutls could be achieved with one simple frequency-independent signal path, and one single pot that adjusts the subsonic filter (or double, if two separate speakers). Isn't it beautiful?
So far, as you can see in previos project log, the idea doesn't quite work with the system I tried it on. I have some hopes for it if I use a current-drive amplifier instead of a typical voltage-drive one, but so far I have not seen any easy-to-power-from-single-lion-cell IC that will force current into speaker rather than voltage.
Filters in front of amplifier:
* a number of opamps required
* at least 2 trimpots
* a triple potentiometer for low-frequency cut-off adjustment
("full on" means feedbass pot is at the point just below where self-oscillation begins)
Now, why doesn't it do what I expected it to? well, there is a big thing, that I hoped would be small. When compensating for a spring, I need to put out Force. Force is proportional to current through voice coil. But the amplifier outputs voltage, and voltage is related to current as follows (ignoring coil's inductance):
I = (U - U_backEMF) / R
My original hope was that the drivers are crappy, and their back-emf is negligible, so output voltage and coil current are in direct relationship. However, as it is hinted by quite a few observations, U_backEMF, which is voltage generated by the coil due to its movement in magnetic field, is not negligible at all. One of the things that suggests it is the lack of resonance peak in frequency response. The resonance is dampened because the coil is essentially shorted by amplifier, and it brakes like a shorted DC motor. That resonance appears if I connect the speakers through 40 Ohm resistors.
So, all my attempts at deafening a microphone without full teardown had failed, so I went for full teardown.
This is what I did:
This microphone works. But its response is too quick.
And that is something that took me a long long time to figure out. Because I didn't go straight to testing step response. I just tested it at 40 Hz sine wave as before, verified that the sensitivity is just right, and went straight to making circuit. That circuit did do something, and the speaker was giving out some very nice sound. I assembled it into a nice portable thing, and took it with me the next day. To find out that outside, it went crazy and started to self-oscillate.
Then I found out that it was extremely sensitive to temperature of the microphone. And only at that point I started measuring responses.
The thing is, that response (its decay time) is very sensitive to temperature. It is very related to leakage currents of jfet, which depend exponentially on temperature. It is caused by the capacitor being discharged through the gate of JFET. I estimated that at room temperature, gate-to-source leakage resistance is about 20 GOhm, not 20 MOhm as was stated in the datasheet.
So I needed a way to increase the response decay time at room temperature.
I achieved that by adding that feedback capacitor (15 pF) I initially wanted to, across jfet's gate and drain. That was a...
...Success!! (oops, I forgot to capture a screenshot!)
See that capacitor inside the transparent blob of photocurable epoxy? I hope you do... I forgot to take a picture before putting the blob.
So now I have my feedbass working more-or-less as I wanted to, and in the next project log, I will publish frequency responses of the speaker!
There is so much happening, I can't find time to write up project logs. The project is seriously ahead of the logs so far...
I have the speaker with feedbass built, I tested it, it was great, but then I found weird temperature effects, and now it looks like it is not working as it was supposed to, and good sound was essentially a coincidence.
First attempt was to add a capacitor between jfet drain and gate. This should add feedback, thus reduce the gain of the jfet.
I was trying to do that by drilling holes in base pcb. (I didn't want to take the mic apart, because it's unclear how to put it back together after that, and if that may ruin the electret.)
First microphone I drilled had gate electrode available right behind the pcb, so I soldered a capacitor, and plugged the hole with photocurable epoxy. Unfortunately, I likely had blown the jfet while drilling, likely because my dremel was not earthed... the microphone was dead.
So I took another very similar looking one, drilled in same place, but there was no gate electrode. Then another one. I found where gate electrode was by illuminating the internals of the microphone with a laser, but when drilling it, I broke the thing, so another fail.
At this point, I ordered a few kinds of microphones, so that I have a bunch of similar ones to play with. So far, every microphone I had was unique, and its internal structure was quite unpredictable.
FAIL #2. changing internal volume.
If I reduce the internal volume of the microphone, I increase the stiffness of air inside, reducing the deflection of diaphragm. And I figured a really really easy way of doing it: plug the sound port with tape, and make a new sound port by drilling a hole in back PCB.
Done... and .... it's not enough! Still clips severely. =(
FAIL #3. depolarizing electret with temperature.
Easy, I just touched the microphone with soldering iron for half a minute or so. As the microphone cooled down, it was still waaay too sensitive, and I did notice substantial distortion at low SPL, so I might have melted the diaphragm, or something else was damaged.
FAIL #4. Compensating electret with external voltage.
If I cut pcb traces that connect the case to one of the pads on the back PCB, I can then put a voltage source in series with microphone's sensing capacitor.
So I did it, and applied up to 100 V in either polarity. That was not enough deafen the microphone. It may be possible with higher voltage... but I don't want to mess with building a high voltage source just for that, and I need to compensate the field so that only about 1% of it remains, which requires a really stable voltage source, and precision tweaking with tongue at the right angle, and may drift with temperature, so that's not an option. Out of curiosity, it would still be interesting to check, how much voltage is embedded into the microphone thanks to the electret....
Other ideas that I didn't try:
* depolarize electret with x-rays
* with same approach as in FAIL 2, fill the cavity with something (say, oil) before taping it shut
* mechanical shielding from sound pressure. The difficulty is ensuring frequency response stays flat in 10-300 hz range, and has no phase lag...
* and of course, a lot more ways requiring a full teardown.
Let's take one apart, to see how it works, and how can we make it deafer.
Left to right: outer shell, diaphragm stretched on metal ring, a spacer ring that sets capacitor plate separation, fixed plate of capacitor with jfet (datasheet) spot-welded to it, another spacer, and back PCB.
There is a small indent on the outer shell, which likely is the leakage path for air, to slowly equalize pressures inside and outside of the microphone.
Here, I doodled a cross-section view, and a schematic.
Note that other microphones may have somewhat different geometry of elements, but the basic principle should be the same.
There should be plenty of sound in cabinet... I shouldn't worry about noise too much, so the choice of a microphone should be fairly easy...
Oops, it overloads. I tried a few more...
including a couple of these new fancy mems ones...
and the story was the same. They all were in gross overload. After taking apart almost everything around that had a microphone inside, I gave up, and went googling. Turns out, it's not very often that manufacturers specify the overload SPL, and even worse, I don't know, what SPL to shoot for. Oh wait. If SPL is so high, maybe I can measure it,,, with a MANOMETER? OK, let's do it...
So it's 10 Torr peak-to-peak. which is 3.53 Torr rms, which is 470 Pa rms -> 147 dB spl. The maximum overload spl for the mics I digged so far was 136 db.. way not enough! So, two options remain. Keep searching for a low sensitivity microphone, or hack one to reduce its sensitivity. Sure, I picked the HACK WAY.
I don't remember, what exact opamp I used, but it was made of pure obscurium. MCP6283 is a good replacement. If you need a higher voltage amplifier (for +-15V supply), LF356 is an okay choice. The only real requirement is that the opamp should have low bias current to create no significant dc voltage across 3M resistor.
The trimpot can have any value from about 1K up to about 100 K. The lower the value - the lower the extra noise.
LTK8002 can be replaced with any similar audio amp. Examples are mix2037 (excellent, but unobtainium), NAU82011WG (unobtainium), tpa6211, lm4871
attach the microphone to speaker enclosure
The enclosure should be seriously airtight for best results. I recommend adding vibration isolation between the mic and the case to prevent unwanted mechanical coupling to the speaker through walls.
Power up the circuit, and tune feedbass.
The speaker should respond to tapping, but not oscillate too much.
Here's a video. Sorry, it's in Russian... but I've added English subtitles, use them.