Hi,
I have a board with an ESP-WROOM-32 module and an MAX4194 Instrumentation Amplifier. The amp has a gain of 1515 to amplify the 0 to 660µV output from a load cell to 0-1V to sample with the ESP32's ADC.
The ESP32 and the analog parts are powered by seperate linear regulators from the same battery. There are no switching regulators on the board.
When the ESP32 is running and the touch pad is enabled I get a 32Hz waveform as seen in the attached image (scope.png). (BTW, that should be 20mV per division, not 2mV as the screenshot shows.)
I do not see this noise before enabeling the touch pad, but as soon as I run touch_pad_init() the noise starts.
Is this normal? It seems strange that the capacitive touch pad peripheral should be making noise, particuarly at such a low frequency.
Is there anything I can do in software to fix this?
Is there anything I can do in hardware to fix this? (Other than low pass filters on the MAX4194 and ADC inputs.)
32Hz noise when touch pad is enabled
Re: 32Hz noise when touch pad is enabled
Hi Emil,
I've asked the hardware team if they have any feedback about this issue. In the meantime, I have a few notes/questions:
The default values are sleep time 4096 cycles (150kHz RTC ticks), and measurement time 65535 cycles (8MHz ticks). This means something like 27ms sleep time and 8ms measurement time, which seems to line up pretty well with the waveform you posted.
Can you confirm no pins are muxed to TOUCH_PAD functions at the time you captured this? If they are, it's possible touch pad signals are being coupled from the capacitive touch pads and their traces.
If no pins are muxed to TOUCH_PAD, where any other pins muxed to other ESP32 analog functions (like the ADC) at the time you captured the trace?
Are you able to show any photos or renders of the PCB layout?
BTW, do I understand correctly that those spikes of approximately 80mV are on the output of the MAX4194? Which implies the voltage at the amplifier input is changing by approximately 50uV?
I've asked the hardware team if they have any feedback about this issue. In the meantime, I have a few notes/questions:
This image doesn't seem to be rendering for me, can you please check it?Noise as sampled by ADC.
To confirm this, you can change the touch pad sleep & measure durations via the function touch_pad_set_meas_time().It seems strange that the capacitive touch pad peripheral should be making noise, particuarly at such a low frequency.
The default values are sleep time 4096 cycles (150kHz RTC ticks), and measurement time 65535 cycles (8MHz ticks). This means something like 27ms sleep time and 8ms measurement time, which seems to line up pretty well with the waveform you posted.
Can you confirm no pins are muxed to TOUCH_PAD functions at the time you captured this? If they are, it's possible touch pad signals are being coupled from the capacitive touch pads and their traces.
If no pins are muxed to TOUCH_PAD, where any other pins muxed to other ESP32 analog functions (like the ADC) at the time you captured the trace?
Are you able to show any photos or renders of the PCB layout?
BTW, do I understand correctly that those spikes of approximately 80mV are on the output of the MAX4194? Which implies the voltage at the amplifier input is changing by approximately 50uV?
Re: 32Hz noise when touch pad is enabled
Thank you.ESP_Angus wrote: I've asked the hardware team if they have any feedback about this issue. In the meantime, I have a few notes/questions:.
Sorry about that. It didn't render on my computer either after uploading. But when I checked on another computer it was ok, so thought it was a browser issue on my end. New image:Noise as sampled by ADC
This image doesn't seem to be rendering for me, can you please check it?.
It seems strange that the capacitive touch pad peripheral should be making noise, particuarly at such a low frequency.
I will check that later today and post an update.To confirm this, you can change the touch pad sleep & measure durations via the function touch_pad_set_meas_time()
The default values are sleep time 4096 cycles (150kHz RTC ticks), and measurement time 65535 cycles (8MHz ticks). This means something like 27ms sleep time and 8ms measurement time, which seems to line up pretty well with the waveform you posted.
If I understand correctly, a pin will be muxed to TOUCH_PAD when I run touch_pad_config() on the pin? If this is correct, then no pins where muxed to TOUCH_PAD at the time I caputured it.Can you confirm no pins are muxed to TOUCH_PAD functions at the time you captured this? If they are, it's possible touch pad signals are being coupled from the capacitive touch pads and their traces.
ADC1 channels 0,4,5,6,7 where in use. With the signal in question on 4.If no pins are muxed to TOUCH_PAD, where any other pins muxed to other ESP32 analog functions (like the ADC) at the time you captured the trace?
I will upload that later today.Are you able to show any photos or renders of the PCB layout?
Yes, that is correct.BTW, do I understand correctly that those spikes of approximately 80mV are on the output of the MAX4194? Which implies the voltage at the amplifier input is changing by approximately 50uV?
Re: 32Hz noise when touch pad is enabled
I can confirm that the time between the spikes increases when touch_pad_set_meas_time() to increase sleep_cycle time.ESP_Angus wrote: To confirm this, you can change the touch pad sleep & measure durations via the function touch_pad_set_meas_time().
Re: 32Hz noise when touch pad is enabled
Hello,
Did you find any explanation or solution for this issue?
We are using GPIOs 0, 2, 25 and 33 for 2 I2C lines (100kHz), and GPIOs 4 and 32 for touch pad.
Both functionalities are working but when measuring with the oscilloscope we start seeing a periodic voltage dip in the pins 0, 2 and 33 as soon as we call touch_pad_init(). It does not occur in pin 25 and we see that that pin does not have touch function according to the ESP docs.
I tried calling rtc_gpio_deinit(gpio_num) for those pins later in the code but still the same behavior is present.
Screenshots of the I2C SDA in pin IO33.
Did you find any explanation or solution for this issue?
We are using GPIOs 0, 2, 25 and 33 for 2 I2C lines (100kHz), and GPIOs 4 and 32 for touch pad.
Both functionalities are working but when measuring with the oscilloscope we start seeing a periodic voltage dip in the pins 0, 2 and 33 as soon as we call touch_pad_init(). It does not occur in pin 25 and we see that that pin does not have touch function according to the ESP docs.
I tried calling rtc_gpio_deinit(gpio_num) for those pins later in the code but still the same behavior is present.
Screenshots of the I2C SDA in pin IO33.
Who is online
Users browsing this forum: No registered users and 128 guests