Find ADC Module for Arduino Uno Project

Hi everybody!

Currently I have a small project to create an electricity measurement system using SCT-013-000 and ZMPT101B sensors. It is expected that I will use ESP32 for this project, but to be sure, I will try with Arduino Uno R3 first.

According to some information, I know that using the ESP32's analog pin is a bad idea and I should use an ADC module. So I bought the ADS1115 Module and realized it was a mistake. After carefully reading the code and specifications of the ADS1115, I realized that the libraries used to read sine waves depend on the read speed of the ADC module. Arduino Uno R3 has a reading speed of 10000SPS while ADS1115 is only 128SPS with input voltage from 0 to 5V. Maybe the reading speed of the module I mentioned above might be wrong, however I'm pretty sure that the reading speed of the ADS1115 is much lower than the Arduino Uno R3.

So I have 2 questions:
First, are my above thoughts correct? Is the reading speed of the module the deciding factor?

Second, if my thinking is right, is there any kind of ADC module that has faster read speed but is not too expensive? Currently I'm still a student so spending large amounts of money is difficult.

And that's all I want to say. Thank you everyone for reading this far. I'm very sorry if I use wrong grammar or vocabulary because my English skills are poor so I used google translate for most of the above.

Your thoughts are correct - the reading speed of the ADC module is a key factor in determining its usefulness for measuring fast, changing signals like sine waves. The ADS1115 module may not be the best choice for your project if you need to accurately measure fast power signals. Consider other ADC modules with faster reading speeds, such as the MCP3008 or MCP3208, or dedicated power metering ICs like the ADE7753 or ADE7854. Good luck with your project!

1 Like

Maximum is 860 samples/second, which is fine for power line voltage and current measurements.

Hi RagnarokPJ, thank you very much for your helpful advice!

1 Like

Hi @jremington , thank you very much for your advice!

Can i ask a question that does the input range of ADS1115 affect its reading speed?

The sample rate set for the ADS1115 is independent of the input voltage.

If you are using the Adafruit library, I understand that there is a built in delay that you must remove in order to have the highest possible sample rate.

1 Like

OpenEnergyMonitor.org may have some useful information.

You're probably going to run into "processing speed" limitations. If you just make a "regular loop" in C++ the Uno won't loop that fast and processing/analyzing the data takes some time.

1 Like

Thank you very much for advice @jremington !
Just like what you said, the library I'm using is Adafruit. I did a test in C/C++ and the ADS1115 took 0.008 seconds to read, which is too big for the Arduino Uno R3..
So can you tell me what part of this library needs to be deleted to have the highest sample rate, or is there any source of guidance on how to solve this problem?

Hello @DVDdoug , thank you very much for your advice and information!
As you said, when using a regular loop in C/C++, the Uno speed will be reduced and I also have some comparisons with the ADS1115 in C/C++. And it's so bad that it takes 0.008 seconds for a single reading of the ADS1115.

This line is at least part of the problem in the library. If you search for "Adafruit ads1115 sample rate", you will find forum posts on how to fix the problem.


  // Wait for the conversion to complete
  delay(m_conversionDelay);
1 Like

See the posts in this topic

Particularly posts 11 and 14

1 Like

Thank you so much!

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