# How does a Digital Multimeter work?

1. Dec 11, 2015

### Berserk

Can someone kindly explain the exact working of a digital multimeter? I know the basic idea, that everything measured (current, resistance, etc..) is converted to volts. But what happens after? How does the digital part come into this? Thanks in advance.

2. Dec 11, 2015

### Merlin3189

Do you want to know how analogue to digital converters work? That is the next step in the process.

I don't know what method is favoured in contemporary meters, but my old meter uses dual slope integration. You can look up the details, but my off the cuff understanding of the essentials is: Use the sampled voltage to charge a capacitor for a fixed time, then measure the discharge time using a reference voltage. The ratio of the times is proportional to the sampled voltage. So if the discharge time is 0.1 of the charge time, the sampled voltage is 0.1 x the reference voltage.

There are lots of websites with more detail.

3. Dec 11, 2015

### Svein

4. Dec 11, 2015

### Berserk

Yeah i know about the ADC. It converts the analogue input to digital. Alright so, what happens next? Do we just feed that directly to the seven segment display?

5. Dec 11, 2015

### Averagesupernova

I suspect some of the cheaper meters will use successive approximation. They start toggling the most significant bits in an D/A convertor and feed that output to a comparator. They watch for the change on the comparator output and finally when the least significant bit has been toggled they look at what the input to the D/A convertor is. I think most of these in the past have been used in equipment that has a simple voltmeter more to be used as an indicator not meant to be a precise instrument.

6. Dec 11, 2015

### Daz

7. Dec 11, 2015

### Merlin3189

To make it maybe a little clearer.
The integration is like an op-amp integrator: the voltage is applied to a resistor and the current used to charge a capacitor. The voltage on the capacitor then increases in proportion to time and to the input voltage. Equally the fall of capacitor voltage when it is discharged is proportional to the time and the reference voltage.
So Vc ∝ Vin x t1 and Vc ∝ Vref x t2
When you equate these you get t2 = t1 x Vin/Vref
So if you choose t1 along with Vref appropriately, the actual value of t2 could be the display value, say in microvolts. So you have say, a 2000 microvolt meter, which you can use for other ranges by switching the input resistance chain, just as in analogue meters.

I think modern meters have microcontrollers, so can perform further maths on this basic count. If this is done, your imagination is the limit. For eg. you can calculate and store min/max , and average values, display the count as an analogue bar (or even dial).

The value of the dual slope integrator ADC (as I understand it) is the accuracy and linearity. Errors in the exact value of the capacitor and charging resistor tend to cancel out in the two halves of the cycle. Accuracy is limited by the voltage reference (which is the case with any ADC) and by the timing, which only needs to be consistent not accurate. Other ADCs may depend on having a chain of very accurate resistors and comparators which switch consistently at a very precise voltage. This may be more difficult to achieve across a range of temperatures than a stable clock.
The downside of dual slope ADC, which is not a problem in multimeters, is that it takes time. If you need thousands or even millions of samples per second, other methods are much quicker.

8. Dec 11, 2015

### Berserk

The problem is i'm supposed to make a multimeter without using any sort of microcontrollers. I can't use an Arduino as well and the ADC i have to work with is ADC0804. Unfortunately i have no idea how i'm supposed to incorporate this ADC into a circuit. The above comments have been really informative but i need to know more. For instance, can we feed the digital signal from the ADC directly to the LCD display? Or do we require something else?

9. Dec 11, 2015

### Berserk

This was really interesting. Thank You.

10. Dec 11, 2015

### Svein

The ADC0804 is designed for use with a micocontroller. If you do not require a decimal output, you can try something like the test circuit on page 16 of the data sheet (http://www.ti.com/lit/ds/symlink/adc0804-n.pdf).

11. Dec 11, 2015

### Berserk

Is there no other way to use ADC0804 without microcontrollers? Actually i do require a decimal output, but thanks for that data sheet. :)

12. Dec 11, 2015

### Merlin3189

Well, I'd say that was a BIG ask. Have you got to make it, or just design it? There's a lot of work between a plausible sketch of a design and a design you can build:, then a lot more before that becomes a working model.
You need to be clear what the objectives are. (and anyone trying to advise you needs to be aware of what these are.) You are not trying to build a useful meter. So you are trying to learn about some things or show skills and understanding of some things. If we know what these are, you can focus on those and maybe scrimp, fudge or skip unimportant bits.

Since the ADC0804 output is binary, you'd needto convert it for a real multimeter. But maybe for this exercise, the binary output is ok. Let's hope so, because otherwise it gets messy.!
If you're happy with the binary, just drive the LEDs from the ADC - you probably want to buffer them - then concentrate on the input end and control.

If you do need to go to decimal, even for just 8 bits I think you'd need a lot of logic gates . I think there are some 4 bit binary to BCD chips which may be cascadable, but you'd have to look into that and see if they are still available. (Since everyone does use microcontrollers now, there's not much point in making some of these old chips.) *

My own inclination for a one chip solution would be (have been?) to use a PROM, say 1024 x 8bit (such as a 2708 if they still make them) to store the 7-segment values and use the 8 outputs from the ADC with 2 bits from a multiplexing drive as the 10 inputs. Current ROMs are probably all bigger, but you can just use part of them.

Another approach might be to latch the 8 bit output into counter, clock it down to 0 while counting the clock on a BCD counter. Or alternatively, run a BCD counter in parallel with a binary counter and latch the output from the BCD counter every time the binary counter matched the ADC. I've never tried either of these.

Is the 0804 mandatory? If not, you might even build your own ADC: if you are just showing the principle rather than building a useful device, use a BCD counter to drive a DAC and latch the results when a comparator says the DAC and input match. Even go down to a 99 count instead of 255. It's all about what is really needed here.

Edit: * Yes the 74185 does cascade, so 3 chips can do 8bit to 3 BCD then you just need 3 7-segment decoders.

Last edited: Dec 11, 2015
13. Dec 11, 2015

### sophiecentaur

Absolutely. It would have needed a lot of savvy, even in the days when people were familiar with discrete or small scale integrated circuits.

14. Dec 11, 2015

### Daz

There is a way to run the ADC0804 without a micro. Take a look at the "continuous conversions" section of the data sheet. In continuous conversion mode the device sits there ticking away providing a continuous stream of binary values. All you need to do is convert the binary to BCD and display it on seven-segment displays. There are simple TTL chips do perform both operations.

15. Dec 15, 2015

### Berserk

Here is something that I've done. You all were right, it was extremely messy, but anyways here it is. The sad part is despite all that work it still doesn't work so if anyone could tell me what my mistake is, I will be really grateful.

#### Attached Files:

• ###### DLDNEWPROJECTGATES.docx
File size:
99.6 KB
Views:
52
16. Dec 15, 2015

### Svein

Phew - that was a lot of gates. Some comments:
1. You are using old-fashioned TTL. Those draw a lot of current and do not like open inputs (if you want an unused input to stay high, tie it to +5V through a 1kΩ resistor.
2. I do not follow your logic at all - I think you are confusing the LSB (Least Significant Bit) with the MSB (Most Significant Bit).
3. Tying the "A" input on U23 low makes no sense at all. This only ensures that you will not see any odd numbers on that display, only 0, 2, 4, 6 and 8.
4. Since you have 8 bits output from the ADC, the maximum number you must show will be 255 (three digits). You only have implemented two digits display
Try to draw your solution using high-level blocks first, then it is easier to see where you are going.

17. Dec 15, 2015

### Berserk

I used two displays because i have narrowed down the range to 0-50, not 0-255.
After simplifying the expressions, that's what i get. A "low" for the "A" input on U23.
I tried this project by using counters and this is what i came up with. I have never used counters before so i think there might be a few wrong connections. Could you please point them out for me. Thank you.

#### Attached Files:

• ###### uurrgghh!.docx
File size:
34.2 KB
Views:
52
18. Dec 15, 2015

### Svein

Post #12 contains several excellent suggestions. Also: Her is the data sheet for 7447: http://www.ti.com/lit/ds/symlink/sn7446a.pdf [Broken]. Especially look carefully at the table at page 3.

Last edited by a moderator: May 7, 2017
19. Dec 15, 2015

### Berserk

The cd4026 that I've used is a counter and BCD to 7 segment decoder combined. That's why i haven't used 7447.

Last edited by a moderator: May 7, 2017
20. Dec 15, 2015

### Merlin3189

Wow! That's even messier than I'd thought (The logic gates cct in #15).
I wonder if you can say how you reached that circuit? If you explain the steps / development, maybe that would make it easier to check.

Have you any clues about how it is not working? Do you get a display, but it is just wrong numbers? Or are the displays just showing random patterns?

You could test your basic 0804 part of the circuit with a row of LEDs and record the output for some test voltages.
And you could test your decoder logic using 8 switches (or wire jumpers) instead of connecting to the 0804. Then just start from 0 and test each number in turn.

I've been looking for the circuit of a 74185 to see if three of these implemented as logic gates would be simpler and easy to copy! Just using three 185s would be even easier of course, if you can get them.
===============================
Now I see you have tried in #17 the counter method. The two things which struck me were,
- the 0804 does not load the 40103 when the conversion is finished. But the ADC is in free running mode, so I guess you are saying there will always be data on the 0804 outputs, so you just load up the 40103 whenever you like? Sounds ok (though you might get rare glitches if it loads just as the ADC output changes.)
- the 555 sends a clock from its Q to the clk of the 4026, but not to the 40103. I thought you were trying to clock the two counters in parallel? There is a connection from 555 TR to 40103 clk but I don't understand that: aren't you just connecting two inputs?

If the cct is what I am understanding it to be, the 555 should be an astable clock generator providing clock pulses to the 4026 (BCD up counter) and to the 40103 (binary down counter)? The 555 cct does not look like an astable, but I don't know what it does look like. Perhaps you can say what you are thinking here.

Other issues (if I do understand what you are trying to do): timing and control of the sequence of events: How/ when does the 40103 load the data from the ADC? How do you ensure that the 4026 starts at zero when the 40103 loads its value from the ADC? When the 103 reaches 0 how do you stop and hold the 4026 at its value?