4

I’m trying to create a multimeter. I’ll be mainly using a 16 bit ADC (ADS1115), an ESP8266 on Node MCU. I’ll use the MCU to communicate with a phone app to switch between different multimeter modes, i.e. NOT using a physical switch, however I encountered some issues trying to implement the voltage measurement functionality.

For current measurement, I’ll be using a current sensor module, specifically the ACS712, with the ADC to measure currents.

For voltage measurement:

I’ll be using a decoder to switch between different scales (1 V, 10 V, 50 V, 100 V, 200 V).

My approach is to use switches and voltage dividers as shown in the image below:

Schematic

The input voltage (the one I will be measuring) will be applied at 1, then I’ll basically use a high-side driver switching transistor combinations for switching, and then take the output voltages summed up from all the different scales (except the 1 V scale; the 1 V scale will be directly fed to the ADC), then added up to a summing amplifier, then to the ADC input pin, then I’ll do the required calculations to obtain the true voltage.

Notice: I’m not using the correct resistor values, I’m still constructing it, the intermediate op-amps are for buffering, and the final op-amp is to sum.

However, I have noticed an issue:

When applying a high voltage reading, the voltage around the OFF transistors will be the same reading (causing the transistors to burn due to excessive voltage applied), making this circuit unreliable for switching, I don’t know if I can find a transistor that can bear the application of 200 V.

I took another approach for voltage measurement (not much different though): I’ll be using only 1 switch and voltage divider for all scales and the output then will be fed directly to the ADC, but here comes another issue:

As of my understanding, the ADC (http://www.ram-e-shop.com/ds/ic/ADS1115.pdf) won’t be able to detect low voltages below 2 V. The output from a decoder will be around 5 V, and according to the datasheet of the ADC the maximum ratings of analog to input ground maximum ratings range between VDD -0.3 V and VDD + 0.3 V where VDD is the applied voltage. Please look into the datasheet for more info.

This means I can't use it for low voltage readings (the 1 V scale).

So my question is how to overcome the issues mentioned above, is there any better approach to implement the voltage measurement rather than decoding and switching?

My main issue is to find a reliable switch that would handle high voltage applications.

I also tried to think of a different approach using an analog multiplexing IC (http://www.ram-e-shop.com/ds/74xx/744051.pdf) to switch between the different voltage scales, but the output of the IC is limited by the input voltage of the IC, i.e. due to this limitation I can’t obtain much voltage from its output.

ocrdu
  • 8,705
  • 21
  • 30
  • 42
  • Comments are not for extended discussion; this conversation has been [moved to chat](https://chat.stackexchange.com/rooms/102496/discussion-on-question-by-noor-eldeen-salah-abdullah-auto-scaling-in-a-multimete). Any conclusions reached should be edited back into the question and/or any answer(s). – Dave Tweed Dec 23 '19 at 15:18
  • Hey, I'm also trying to figure this out as well. maybe this manual for the fluke 27 will help you (around page 58) :https://www.testmart.com/webdata/mfr_pdfs/FLU/27______smeng0100.pdf – user169808 May 11 '20 at 18:20
  • This might be useful to take a look at. https://lygte-info.dk/info/DMMDesign%20UK.html – Triplex Im Sep 06 '22 at 19:20

1 Answers1

2

My main issue is to find a reliable switch that would handle high voltage applications.

Many digital multimeters avoid this problem by not switching high voltage when auto-ranging. With the ADC you've selected, you don't really need to do switching: the ADC has got multiple input ranges.

the ADC (http://www.ram-e-shop.com/ds/ic/ADS1115.pdf) won’t be able to detect low voltages below 2 V

That's not the case. The ADC will measure differential voltages of +/- full-scale, and the full scale can be selected from: 6.144V, 4.096V, 2.048V, 1.024V, 0.512V, 0.256V. The last range has resolution of about 8µV.

Let's say you'll be dividing the +/-200V range down to +/-5V - that's the largest range you can use with that chip. The scaling ratio is 40:1, i.e. you're dividing the voltage by 40.

So, the overall schematic could look something as follows:

schematic

simulate this circuit – Schematic created using CircuitLab

R1-R2-R3-R4 is the input 40:1 divider. MOV1 and MOV2 shunt transients. Q1-Q4 are fast shunts - a secondary layer of protection. The 2.5V voltage can be derived from +5V supply by dividing it in half with a voltage divider, and buffering with an op-amp.

To retain resolution for voltages below about +/-20V, a separate pair of op-amps would be connected in parallel to C1, but configured for differential gain of 20x, i.e. R11=9k09, R10=10k0. It would go to AIN2/AIN3 inputs of the ADC, if you're OK with using ADC's internal mux for this. Otherwise, you could use external switches.

A good alternative is to use an integrated single-to-differential converter instead of discrete op-amps.