Variable burden resistor with dip switch, feedback wanted

Hi everyone, I’m new here. I’m designing an energy monitoring system around the ESP32-S3 and I am learning a lot from OpenEnergyMonitor and I’m drawing a lot of inspiration from its design.

I want to have some flexibility with the burden resistor because I want to measure different circuits with varying max currents (ranging from a few amps to about 50 A) and I want to utilize as much of the ADC range as possible. I’m getting the SCT-013-000 current transformers, which don’t have a burden resistor. My idea is to add a 4-bit dip switch to select different resistors in parallel. One resistor will always be there so one cannot accidentally leave the CT open.

So far, the best resistor values I have come up with are: 300R always present, and then 150R, 75R, 36R, 18R on the dip switch. Basically powers of 1/2 rounded to E24 values (see attached schematic). This would allow me to map max RMS currents of about 2, 6, 11, 15, 20, 24, 28, 33, 37, 42, 46, 50, 55, 59, 64, and 68 amps to a range of 0.9 V, thus saturating the ADC range for many different circuits.

What do you guys think? Is this a good idea or are there some issues that I haven’t thought of? I was also considering an interchangeable resistor, like a resistor on a jumper, but I couldn’t find that anywhere. Any feedback or other ideas would be welcome.

My initial reaction is, it’s a bad idea. Contact resistance of your DIP switch could be (or become over time) significant and variable, especially with the lower resistance values.
The second reason is, any current transformer is most accurate when working into a short circuit. You can’t do that in practice, but the higher the burden resistance, the worse the c.t’s performance and accuracy.

If you need something like your diagram, replace the switch with 4 jumpers? I think contact resistance is less likely to be an issue.

What is the input voltage range of your ADC? It looks to me from the list of currents that you are looking for accuracy, and the YHDC SCT series isn’t the best in the world. If you are designing for ~ 1 V ADC input, why not use a collection of 0.333 V output c.t’s? The accuracy will be much higher than a SCT-013-000 with a 300 Ω burden, your arrangement, so you almost certainly wouldn’t need so many ranges spaced so closely to achieve similar accuracy. (Example, this Aim Dynamics | SCT-0400 333mV Output AC Current Transducer by Magnelab is specified to be within 1% from 10% to 130% of rated current, and the lowest is 1 A rated; a 20 A and a 75 A will cover your range of currents with 1% accuracy.)

This might be useful reading:

Thank you for your thoughts. I like your idea of using jumpers instead of a dip switch, especially since it would only need to be changed occasionally.

The ADC can measure 0 - 0.95V. One can increase the upper limit by setting a few different attenuations in software, but then I’d need different offset voltages. So I plan to just use 0 - 0.95V. I do see your point, though, about accuracy. If the CT is only 1% accurate, there’s no point in measuring the output voltage with a much higher accuracy, so I guess I don’t need to be so concerned about filling the 0 - 0.95V range for many different input currents.

I am pretty set on the SCT013-000, though, because I need a lot of them and they’re just $3 - $4 a piece. They claim 1% accuracy as well, although I have seen claims of linearity ranging from 0.2 - 3%. I will have to do some tests once I get them.

AIUI, the ADC in the ESP-32 line of products is not the best choice, as one of the issues it suffers from is non-linearity.

Info on the issue and a “fix” here: