Undervolting the ESP32-Cam and OV5640 at 3.3V?

Hello,

I currently use a custom PCB based an Arduino Pro Mini 3.3V to provide power to an ESP32-Cam via an LDO. The ESP32-Cam uses a 2MP OV2640 camera and so far I've had very reliable results at 3.3V, but I'd like to increase resolution by using an OV5640 camera.

I've sorted out the code to use this camera sensor, but when I run the ESP32-Cam with it at 3.3V I get thin bands of color noise in each image (crop of image attached). Reading online, most people attribute this to undervolting the OV5640, and sure enough, I don't see these bands when I run the ESP32-Cam at 5V instead of 3.3V.

For power-efficiency reasons, I really don't want to redesign my board to run at 5V. I'm also a little confused because, regardless of whether it gets 5V or 3.3V, the ESP32-Cam only provides 1.8V to the camera module. I don't believe this is a current-limiting issue either, as the LDO on my PCB can supply up to 500mA and with the OV5640 I'm only seeing about 230mA peak current. I can reproduce the issue running the ESP32-Cam off of a basic FTDI programmer: bands at 3.3V, no bands at 5V.

Any suggestions on why I'd see noise banding at 3.3V supply, but not 5V, when the camera itself only needs 1.8V and doesn't appear current-limited? Or perhaps suggestions on relatively efficient LDOs that can boost 3.3V to 5V while supplying peak current in the range of 500mA?

Thank you for the help! Happy to answer any questions if I've left details out in this post.

Please provide a diagram of that.

Unfortunately I'm not in a position to share the circuit diagram itself just yet. It will be fully open-access in a couple of months but the journal reviewing it (in its current 3.3V form) has strict pre-publication guidelines.

I can say that it is very simple. Essentially an ATMEGA328P using a digital pin to enable/disable a Holtek Semicon HT7833 that sits between a battery (nominally a 3.7V lipo) and the 3.3V pin on the ESP32-Cam. In any case, the behavior can be replicated with an FTDI programmer at 3.3V or 5V, so the board I'm using to supply power may be inconsequential.

I suppose I'm really asking about the ESP32-Cam itself, to see where I am misunderstanding the power requirements of the OV2640 vs OV5640 since, on-paper, both require 1.8V. My one thought is that perhaps the LDO on the ESP32-Cam converting 5V -> 3.3V might be preventing voltage drops (?), vs via the 3.3V pin there is one less LDO between the supply and the camera, just 3.3V -> 1.8V instead of 5V -> 3.3V -> 1.8V.

Let me try to understand. You have a 3.3V LDO that feeds the ESP-CAM. I'm not familiar with anything you mentioned but I assume that you feed the ESP-CAM on the 3.3V pin (if it has one) from the LDO output..

  1. If you feed the LDO with 3.3V and use the OV2640, there is no banding.
  2. If you feed the LDO with 3.3V and use the OV5640, you get the bands
  3. If you feed the LDO with 5V and use the OV5640, there is no bands.

If yes, my suspicion is that the voltage drop over the LDO is too much to get a correct voltage for the OV5640.

Correct in each of the three cases mentioned, thank you for your help!

What makes this a little odd to me is that all components on the ESP32-Cam run at 3.3V or less, 1.8V in the case of either the OV5640 or the OV2640. By powering the board via the 3.3V pin I am skipping the ESP32-Cam's onboard AMS1117 voltage regulator (which takes the 5V pin and brings it down to 3.3V).

It just seems odd to me. The camera is getting 1.8V either way, always from a 3.3V rail, and only when this 3.3V rail is powered by a 5V-to-3V LDO (AMS1117 on the ESP32-Cam) does the undervolting occur. I thought providing a clean 3.3V from a nicer LDO (the Holtek) to the ESP32-Cam's 3.3V rail would have circumvented voltage drops from the AMS1117, not created more.

So currently:
3.3V Supply -> ESP32-Cam 3V Pin (3.3V Rail) -> 1.8V to OV5640 = Noisy Images*

  • Occurs with either an FTDI programmer, or my board (Holtek HT8733)

5V Supply -> AMS1117 (ESP32-Cam 5V Pin) -> 3.3V Rail -> 1.8V to OV5640 = Clean Images

If I understand your comment correctly, you're thinking that the LDO on my board, or the FTDI programmer I am using, are causing too much of a voltage drop since they start at 3.3V. I didn't think that would occur unless I was closer to the current limits of these LDOs, but did I understand that correctly?

As far as I understand it, that drop will always be there regardless of current. I'm getting a littler outside my area of knowledge.

A quick look at the datasheet for the two cameras shows that the OV5640 draws more current that the OV2460. Based on that I would verify the voltages during operation with equipment that can see short spikes (oscilloscope).

It's not clear to me how you have wired the OV5640 to the ESP-CAM; it might pick up noise.

Lastly, does your software take into account possible differences between the two modules and configuration options.

Good luck with the project; I can unfortunately not advise further.

I appreciate all of the help, and your patience with my not being able to post the schematic itself. I may have to invest in an oscilloscope to solve this particular problem.

I think you are right about the voltage drop. I'll try an experiment at home to see which LDO is the culprit and at what voltage.

The OV5640 and the OV2640 share a similar pinout in their most common ribbon-cable variants, so they are drop-in replacements when used on ESP32-Cam boards with an FPC connector. I have adjusted the clock speed in software from 20khz on the OV2640 to 16khz for the OV5640, according to a few other experiments I've seen online doing a similar swap-out of camera sensors.

Again, I appreciate the help. I'll keep experimenting, maybe even buy a few OV5640's from alternate distributors to see if the noise I am getting is specific to this supplier's ribbon cables.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.