1
\$\begingroup\$

I am building a sort of walkie-talkie using an ESP32 WROOM chip. I use the internal ADC to sample the microphone and the internal DAC to power small headphones. This all works OK, not the highest quality, but sufficient.

The problem

I send the audio data over 2.4 GHz (using the ESP-NOW protocol.) The problem is that I am experiencing noise on the receiving side, with the same frequency as transmitting the packet. For example, I am transmitting each 20 ms sound audio packet 6 times, given that there are 50 frames of 20 ms in a second, that gives 50 * 6 = 300 transmissions per second, then a 300 Hz tone can be heard at the receiver, next to other audio like speech.

The (suspected) cause

I suspect this is due to voltage drops I see on the 3.3 V supply line. I used a 600 mA RT9080 LDO, which should more than sufficient for the radio. Using an oscilloscope, I can see ~20 mV drops of this line when I am transmitting. I think this messes with the internal ADC, and gives faulty readings.

What I've tried

To prevent this I tried adding several capacitors, low ESR 100uF electrolytic capicitor, 100uF tantulum capacitors, and a 0.1uF ceramic capacitor. None seemed to have any significant effect.

The question

Should I use a different capacitor, or are there any other factors I should take into account? I tried looking for an external ADC that would be powered with its own LDO, but that would add a lot of complexity.

Schematic

This is my schematic, not 100% accurate, microphone also has a 2k bias from VCC: enter image description here

\$\endgroup\$
19
  • \$\begingroup\$ A circuit diagram would be helpful. Have you checked the bias voltage that goes to the microphone? Noise there will get into your microphone signal. \$\endgroup\$
    – JRE
    May 3, 2022 at 11:58
  • \$\begingroup\$ @JRE Thanks for cleaning up my question. Unfortunately my circuit diagram is a bit of a mess, I will try to clean it up and post it. I have not checked the bias voltage, but all of my audio circuitry is powered with a separate LDO, a HT7333-A, to prevent noise. Perhaps there is noise on the battery line, going into both the LDO's? \$\endgroup\$
    – bart
    May 3, 2022 at 12:30
  • \$\begingroup\$ Do you just play a received packrt once it's received? If the data sent in those 1000 transmissions per second is not properly buffered digitally, a 1000Hz tone is quite expectable. \$\endgroup\$
    – Sim Son
    May 3, 2022 at 12:53
  • \$\begingroup\$ 20ms*50Hz is not "1000 transmissions per second" \$\endgroup\$
    – user253751
    May 3, 2022 at 13:20
  • \$\begingroup\$ How are the capacitors physically located near the ESP32? \$\endgroup\$
    – user253751
    May 3, 2022 at 13:20

1 Answer 1

0
\$\begingroup\$

So I figured it out. I assumed that the 5V line (actually battery, so more like 3.7V), was not susceptible to noise and was 100% consistent. It was not. Apperently there was something like 100mV noise when transmitting, which after a HT7333-A LDO was 10mV noise on my audio power line. Due to my terrible microphone preamp (still don't really know why it even works), this was amplified to 300mV noise which my ESP32 DAC happily picked up.

This was all solved by using the more modern RT9080-33GJ5 which apperently has a way better PSRR, thus giving almost no noise on my audio power line. Thanks @bobflux you were right on the money with your guess.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.