Hello all.
I’ve been using the Pirate radio for over a year now. I have external speakers attached. Does anyone have a circuit to get rid of the loud pop when the radio is started? The large current spike causes the voltage to dip and then the PiZero resets. I have to power it from a 2.5 amp supply, which is overkill fo r this application.
I searched and saw other people asking a similar question. But, I haven’t seen any responses.
Thanks in advance.
-Shawn
Ok, in case you didn’t already know, the current rating of the power supply is an “up to” that amount rating. It can supply up to 2.5A if need be. What current is actually supplied depends on the load attached. A 2.5 A power supply isn’t any more inefficient than a 1 A supply if only 1 A is being asked for. The 1A supply may actually be struggling and producing more heat etc as its at its limit.
Plus, as you turn the volume up on your Pirate radio your going to draw more current. Having some leeway in reserve isn’t a bad thing.
Now, in regards to the pop. It used to be a lot worse. I used to get them just changing channels / feeds etc. Pimoroni made some hardware changes and software changes to mitigate it as much as possible. I have one of the original Phat beats. I get one or two pops on boot up buts thats it. I run the official 2.5A Pi foundation power supply. I use that power supply with all my Pi’s. I have found the price difference to other lower current rated supplies to be minimal, and not worth the trade off in quality. Just my humble opinion
Yes. I’m aware the rating is “up to” 2.5 amps. Because the Pi is rebooting, I am assuming that the “pop” is a large current draw. So large, that the voltage sags and the Pi reboots.
During the normal operation, a 1 amp power supply is fine. It’s just the power up transient that causing the problem.
Here is a fix I will try:
I’m not meaning to be disrespectful etc, but why not just use an official 2.5A supply?
And be advised that that board you linked to is only MONO, it will only drive one speaker.
This is stereo
It’s the “pop” I want to get rid of.
I have several 2.5 Amp supplies. But, why use them if I can use a more common 1A AND get rid of the loud turn-on “pop”?
I forgot to add that I don’t plan to use that chip. I’m going to use the fix that’s listed in the comment at the bottom of the page.
Ah, OK, I see where your going now. Please post back the results. If it works and isn’t to hard to do I may try it on my Pirate radio. Mine is set to wait for network, as a result there is a bit of a delay on start up. I usually hit the power button then go get myself a drink. By the time I’m back its playing my tunes and I don’t hear the pops anyway. ;)
I have a loud pop too on my Pirate Radio particularly when changing to some channels. Sometimes the Pi ZeroW did reset. I have stopped the reset by placing a resistor of 47ohm, 3Watts (wire wound) in series with the loudspeaker. I reasoned that the power supply after the Pi’s voltage reduction (to 3.3V) or stabilisation cct was being spiked by the ‘pop’ as I was using a Pi supplied PSU. My mod doesn’t stop the pop but I have never had a problem with resetting ever since. I found the sound quality isn’t compromised. With that in place and working fine I then loaded the second audio output with a bookshelf loudspeaker whose resistance is 16 ohm. The systems still works without resetting. Good luck - KC
hi
i get the same using the pi av output seems to be a pi problem
i think it is digital processing side
thanks
No. It’s a current spike when the audio driver is enabled. I never did make the mod I mentioned earlier. I still use my Pirate Radio a lot. Every time I turn it on I think, “I have got to install that resistor!”
A standard technique on old hifi amps was to isolate the speakers with a relay that got energised after a small delay.
What are you referring to? Place the left mouse where exactly? This looks like a spam post.
I did see nophead’s solution a couple of months ago. I forgot to comment on it. I like it a lot. I may use a relay solution rather than trying to solder in a resistor.
I remember the high power amps of the 80’s and 90’s (and probably today) that used a relay to isolate the amplifier outputs from the speakers.
I also remember watching the voice coil of a speaker connected to my friend’s amplifier that did not use a relay. I would watch it move almost full throw in, and then almost full throw out as the amplifier circuits set up their biasing. I’m sure a whole bunch of current was moving through the coil.
Thanks for the tip, nophead. :)
-Shawn
@shawnerz
Kind of looks like a clip and past from a Google search, that lost the links pictures?
He’s been bumping quit a few old threads lately?
I FINALLY had the time to resolve this problem. I really liked nophead’s reminder of how the problem was dealt with on audio amplifiers from the 1980’s/1990’s: a relay would connect the speakers after a time delay. This would give the internal amplifiers time to set up their biasing.
This project took much more time and money than I thought. The actual cost of the fix is probably $10 (USD). But I probably spent $40 or $50 to discover the proper fix. If you’re interested in the details, and how I got to the fix, I can post them. But I’ll just post the final actions to make it work. Here is a picture of the final result:
I used a Sunfounder 2 channel relay board here: https://www.sunfounder.com/2channel-dc5v-relay-module-with-optocoupler.html
I used GPIO22 and GPIO27 to control the relays. I created a very simple bash script (relay.sh) in pi’s home directory, and made it executable. Then I added a line in /etc/rc.local so the script starts when the Pi is booted. Here is the contents of the script is:
#!/bin/bash
sleep 15
cd /sys/class/gpio
echo “27” > export
echo “22” > export
cd /sys/class/gpio/gpio27
echo “out” > direction
echo “0” > value
cd /sys/class/gpio/gpio22
echo “out” > direction
echo “0” > value
Then, I connected the speakers. Additionally, I added a 10 ohm resistor to the Normally Closed (NC) connection. This is so that the amplifier sees some sort of resistive termination while it sets up its biasing.
The script gets kicked off a few seconds before you see the login prompt (assuming you have a monitor connected to the HDMI port). There is a 15 second delay to allow pulseaudio and the Phatbeat HAT to come up and initialize. During this time, the 10 ohm (8 ohms is ideal, but 10 ohms is close enough) resistors are applied across the terminals. When the relays energize, then the speakers are connected to the amplifier. And, no “POP”! Yay me! :) :)
The only (very minor) downside is at power off. There is a slight pop when you press the shutdown button at the top of the HAT. But, it’s nowhere near as loud as the turn on pop used to be.
I hopes this helps someone.
-Shawn
Nice solution. In the old days, with tube amps, you could actually damage the speakers from those voltage spikes. Especially on high wattage systems.
For me, the pops actually let me know something is happening, lol. I’m not dismissing what you did, that is a well thought out fix. The pops only really bother me on first boot up as, for what ever reason, the volume is maxed out. I just did a reinstall a couple of days ago, I just left my speakers unplugged on first boot. Then turned the volume down watching the VU meter as a clue. Then shutdown and plugged them back in. Then set my usual volume level and tweaked the VU meter sensitivity so its just toping out on the high notes. .
I might be celebrating too early. Yes, the turn-on pop is gone. But now I have a problem that when I hit the button to shut it down, that transient is enough to cause the PiZero to reset. The Pi used to not do this before. HHmm…I think I need to find the shutdown script that’s called and disconnect the speakers before anything else happens.
I’m a little disappointed.
The GPIO are likely losing whatever state you put them in on shutdown. They will just go to a floating not high not low state. I would think that would release the relays?
The shutdown fix was much simpler than the power up fix. The hard part was finding what program was controlling making the calls to affect the changes when you pressed the buttons. More simply: when you press the Volume up button, what program is responsible for carrying out the command?
The answer is /usr/bin/phatbeatd.
The first thing I did was create a script, and made it executable. I called relay_off.sh:
#!/bin/bash
cd /sys/class/gpio/gpio27
echo “out” > direction
echo “1” > value
cd /sys/class/gpio/gpio22
echo “out” > direction
echo “1” > value
sleep 2
Then in /usr/bin/phatbeatd, towards the end of the file, I inserted the following line to call the script:
@phatbeat.on(phatbeat.BTN_ONOFF)
def perform_shutdown(pin):
os.system("/home/pi/relay_off.sh")
log(vlc.communicate(“pause”))
os.system(“sudo shutdown -h now”)
And, it works great…well, so far. ;)
I hope this helps someone.
-Shawn