My project is a “breathing” white 12v LED strip controlled by an esp32 on a dev board, and switched with an IFLZ44N mosfet.
In my video you can see it working but also hear the power supply complaining.
I’m using the LEDC Arduino library which allows me to select the frequency and resolution for PWM.
If I set the frequency too low the whine is extreme, but at this setting it’s the best I’ve been able to achieve, which is about 9000Hz. Unfortunately you can still hear the sound from across the room!
It is a cheapo solid state power supply that claims it can output 12v up to 25A. I tried my desktop supply and it emits some whine too, so I don’t think replacing the power will totally fix this.
Is there a technique for tuning the frequency or even just masking it somehow?
Before deciding on the frequency, and then mounting the strip in a position where the LEDs are directly observable, you should try moving the LEDs fast relative to your eyes. Eg. take the end of the strip and wave it from side to side. You may notice flicker at frequencies below 200Hz.
Ok, good thinking. I settled on 1000Hz and also made it something in remotely reconfigure should the need arise. That combined with the other suggestions, and getting a better power supply has made the system whisper quiet now.