CC Blog Quick Bits Resources

Precision Circuits – Introduction

Written by Andrew Levido

This is the first of a series of articles covering the basics of precision electronics design. I aim to cover this topic from a practical perspective rather than a theoretical one, although some theory is unavoidable. I will be using real examples and real components to demonstrate the concepts and hope to give away a few tips and tricks along the way.

The series will cover a range of topics including precision op amps, instrumentation amplifiers, signal switching and of course noise. Given there are few devices built today that don’t include a microcontroller we will also look at analog to digital and digital to analog conversion.

Precision in this Context

We should start by defining what we mean by “precision” in the context of precision circuits and disambiguating it from accuracy with which it is often confused. Both precision and accuracy are ways of looking at the error in the measurement of a physical or electrical quantity. Accuracy describes how closely a measurement or series of measurements matches some “true” value – or more likely in practice how closely it matches an accepted proxy for the quantity, probably traceable to some international standard.

Precision describes how closely a series of measurements match each other. It is a measure of the repeatability of a measurement – how confident we can be that a measurement taken in one minute, tomorrow, or next year will be the same as the one taken now. Or how confident we can be that the measurement taken by the second, the 100th or the 10,000th unit off the production line will perform identically to the first one.

Figure 1 illustrates this nicely. Here we have plotted a histogram of 16 different  measurements of a nominal 10.0 V source, taken over a period of time. The mean of the samples is 9.9 V, and the spread of the samples is ±0.2 V around this (from 9.7 V to 10.1 V). The mean differs from the “true” 10 V value by 0.1 V.

Figure 1
This is a plot of 16 samples of a nominally 10 V source. The accuracy of the measurement is the difference between the sample mean and the “true” 10 V value. The precision on the other hand, is the spread of the samples about the mean. In this the precision is ±0.2 V in absolute terms and ±2% in relative terms.

We can therefore say that our accuracy is within ±0.1 V of 10.0 V or ±1%. The precision of our measurement is ±0.2 V of the 9.9 V mean so within ±2%. Precision and accuracy are related but independent quantities. We can have precision without accuracy and accuracy without precision (although the latter would be of limited value). Note in the example above an accuracy of ±1% does not mean that every measurement will be within ±1% of the true value, since the measurement precision is not good enough to allow that.

Accuracy is all about traceability and calibration, whereas precision is all about understanding and controlling the sources of uncertainty or error in our circuits. It is not always about achieving the highest levels of precision –  it is about getting “good enough” precision for the application, and this requires us to know what that precision of our circuit is.

You will have seen from the example above that we talk about precision in both absolute terms, for example ±0.2 V , or in relative terms using percentages ( ±2%). We also use parts per million (ppm) for relative precision when the numbers get very small – for example, 0.01% is equal to 100ppm.

We can always measure the precision of a circuit after it is built, but we have just seen that one sample isn’t enough and we usually want to be sure our design will meet the precision targets before we commit to mass manufacture. Precision circuit design is the process of keeping careful track of errors and uncertainties and how they accumulate to impact the overall precision of the circuit of interest.

Sources of Uncertainty

Before we get into a practical example, it might help to understand where these errors and uncertainties come from. Many errors are the result of complex interaction of causes, but it helps to think of them in some broad categories.

Limitations of physics. Real-world limitations introduce errors. For example, there is no such thing as a perfect insulator, so leakage currents occur. It is impossible to source or sink infinite current, so devices must have some finite output impedance which means outputs will change with load.

Noise. Another inescapable result of physics is the electrical noise caused by random movement of electrical charges in certain materials. This can have a large impact on measurements involving small quantities (microvolts and microamps). Noise is a whole topic in itself that we will cover later in this series.

Temperature. Sadly, almost everything in electronics changes with temperature and usually not for the better. Resistor values change, noise increases, offsets drift. The wider the temperature range your device will be subject to the more this will be an issue that you have to address.

Frequency and time. Like temperature, frequency changes almost everything. A parameter specified at DC may vary considerably as frequency increases. Some things get worse over time too. MLCC capacitors lose capacitance with age and even the frequency of crystals can drift over time. It’s not the biggest problem you are likely to encounter but worth being aware of.

Manufacturing variation. Even a well-designed component, using the best materials and a good manufacturing process will see some degree of variation between parts if you make more than one. It is impossible to make them all absolutely identical. Obvious examples include resistor tolerance or op amp input offset voltage. There will be a natural spread of these values around a mean – the nominal resistance in the case of op amps or zero in the case of offset voltage.

Understanding Component Limitations

There are no perfect components, just as there are no perfect circuits. Component design is the result of a series of trade-offs and compromises. As we designers know only too well, optimising for one parameter may have a detrimental effect on another.

One example that springs to mind is the common multi-layer chip capacitor (MLCC). Many of these use a dielectric material that allows the manufacturers to cram a huge amount of capacitance into a tiny volume for a ridiculously low price. The downside is that the capacitance is highly sensitive to temperature, applied voltage and ageing. The variation with these conditions can easily be two or three times the nominal tolerance of the capacitance. This is the price you pay for 10 cent 10µF 0402 capacitors.

Manufacturers are not always as forthcoming about a part’s limitations as they are about its features (especially on the front page of the data sheet). Be wary of typical values compared to worst case values. You must read the data sheets carefully and thoroughly. Don’t just read the data tables – often the graphs give away useful information about how a device will perform that is quite different from the flattering conditions under which the nominal values are derived.

A Practical Example

With all the doom and gloom out of the way It is or course possible to design some high precision circuits and there are a few handy tricks that help us get there. To get started we will use a simple example that we can build upon in subsequent articles.

Let’s imagine we are designing a DC power supply to power our microcontroller projects. We want to measure the current consumed by our device over the range of zero to one amp. We would ultimately like to measure currents down to the microamp level (or lower) if possible, since our device under test may go into sleep mode.

This is potentially a big ask, and we will develop the idea over the next few articles but let’s start by working out what sort of performance we could achieve with some very basic components and a very simple circuit. Figure 2 shows the circuit we will start with.

Figure 2
This is the first pass at our current measuring circuit. The zero to one amp current to be measured (IL)flows through Rs and the resulting voltage is amplified by U1 to produce a zero to 2.5 V output at Node B. It uses run-of-the-mill 1% resistors and a low-cost rail-to-rail op amp. The performance of this circuit is discussed in the text.

On the left is a 0.1 Ω resistor used as a current shunt. For the time being we will assume it is ground referenced.  This shunt will drop 100 mV across it at the full 1 A load. We need to amplify this signal to get it into the range of an analog to digital converter, say to  around 2.5 V, which means we need an amplifier gain of 25. I’ve used a low-cost general-purpose rail-to-rail input and output (RRIO) op amp, the LM7301 to start with, since its inputs and outputs can swing to the rails, and standard 1% resistors to set the gain. Initially we will power this with a single 5 V supply.

To estimate the precision that we can expect from this circuit we need to move through the circuit one element at a time, find its contribution to the overall error and sum them up somehow. We will take this very slowly this time round to illustrate the process.

At node A we will see a voltage proportional to the load current, but with some uncertainty due to the resistor tolerance. The resistor tolerance is 1% so it will have an absolute resistance value of 100 ± 1 mΩ. We will therefore see a voltage across it of 100 ± 1 mV at full load.

We will also see the op amp’s input offset voltage appearing at node A. Figure 3 shows the relevant extract from the LM7301 data sheet. The input offset voltage at 25˚C is specified to be ±30 µV typical and ±6 mV maximum. This is more than a 100 to 1 difference! We will use the worst-case value for reasons I will discuss below.

Figure 3
This extract from the LM7301 data sheet shows the input offset voltage we can expect from this device. The input offset voltage at 25˚C is specified to be ±30 µV typical and ±6 mV maximum – quite a range! I would strongly suggest using the latter figure in your designs.

We now have two quantities (resistor voltage and offset voltage), each with its own uncertainty, that we need to sum. The error in the total value will simply be the sum of the absolute errors of each part. This probably seems obvious, but you can see the maths that proves it in Figure 4. This figure also shows the less obvious result that the total error when two quantities are multiplied is approximated by the sum of the relative errors of each quantity. The approximation works because we can ignore the ∆x·∆y term if the errors are small.

Figure 4
When adding or subtracting quantities with uncertainties the uncertainty of the result is the sum of the absolute uncertainties, shown in pink at the top. When multiplying or dividing, the uncertainty of the result is approximated by the sum of relative uncertainties, shown in pink below.

This leads to an important rule for precision circuit design: If adding or subtracting quantities sum the absolute errors, if multiplying or dividing, sum the relative errors.

So, back to our circuit. Summing the absolute errors at node A gives a total error of ±7mV. You can probably already see this is a potential problem, but let’s keep going. At node B we will see the voltage at node A multiplied by the gain of the op amp stage. The gain with two 1% gain-setting resistors will be 25 ± 2% or 25 ± 0.5 in absolute terms.

The total error at the circuit output (Node B) will therefore be the sum of the relative errors of the Node A voltage (±7%) and the gain (±2%), or ±9%. This corresponds to about ±225 mV absolute error in the 2.5 V full scale signal. Clearly this won’t be acceptable. The op amp offset voltage is the biggest contributor by far and is fairly easy to deal with. But how will this circuit perform in real life?

Practical results

I built this circuit and measured the results that are shown in Table 1. You won’t be surprised to see that they are much better than the worst-case estimate of ±9%. This is because the errors are the result of statistical variation and the probability that any given sample will be near the mean or nominal value is much higher than it being an outlier. The full-scale error was 33 mV or 1.3% and the errors reduce with reducing level except at the bottom of the range where there seems to be some kind of anomaly.

Table 1
These are the measured results for the circuit of Figure 2. The worst error is 1.3% at full scale, reducing steadily as current is reduced. Note the anomaly at zero current due to op amp output swing limitations.

You can see this also in the plot of the results in Figure 5 on the left. The full set of results looks OK except for the zero-current reading which is slightly off-line. The first three readings are shown on the “zoomed in” plot on the right of Figure 5, along with the ideal response. It is clear there is a problem at zero current.

Figure 5
At left is a plot of the measured results from the circuit of Figure 2. Note the subtle kink in the curve near zero. The graph on the right is a zoomed in look at this area, showing clearly that the reading at zero current is off-line. This non-linearity is due to limitations in the op amp’s output swing.

We know this is not caused by op-amp offset, because that would appear as a consistent vertical shift of the measurements above or below the ideal line, and it is not caused by gain error because that would appear as a variation in the slope compared to the ideal line. Something else is going on – there is a small but definite a “bend” in the measured results at the bottom end.

Well, the culprit is the op amp’s output swing. While the LM7301 claims to be a “Rail-to-Rail” output op amp, a close look at the data reveals that with a 5V supply and a 10k Ω load the output swing typically won’t go below 70 mV (and isn’t guaranteed to be below 120 mV). We are measuring 25 mV which is better than claimed and this a very good swing, better than most op amps, but it just isn’t rail to rail as advertised!

We would rather avoid non-linearities such as this because they are harder to deal with than purely linear errors such as fixed offsets or gain errors as we shall see. I refined my circuit by adding a negative supply rail as shown in Figure 6. Running the tests again produced the data shown in Table 2 and plotted in Figure 7.  

Figure 6
Fixing the op-amp output swing problem is as easy as powering the op amp from dual supply rails as shown here. Otherwise, this circuit is identical to that of Figure 2.
Table 2
The raw results for the dual-supply circuit of Figure 6 show the errors are slightly worse than the single-supply circuit. However, the output characteristic is now more or less linear, lending itself to offset and gain correction.
Figure 7
The measured result of the circuit in Figure 6 is shown here, along with a calculated line of best fit (dotted). There is now a fixed offset and gain error which can be trimmed out in either the analog or digital domains.

In some ways this looks worse than our first test!  The largest error is just over -52 mV or 2.1% of full scale. This error occurred mid-scale, with the absolute error at zero being -42 mV and at full scale being only -6 mV (0.2%).

The good news is the points are fairly linear. The dotted line in Figure 7 is a line of best fit whose equation is shown on the graph. This line suggests there is a fixed offset error of  -54.5 mV and a gain error (the difference between the slope of the line and the ideal slope of 2.5) of about 1.7%. The fixed error comes mostly from the op amp’s offset voltage which must be around -2.2 mV (taking the gain of 25 into account). The gain error comes largely from the resistor tolerances. The good news is that there is no longer a bend in the plot.

Note that the op-amp offset is less than the quoted worst-case figure (±6 mV), but by no means does it fall within the typical figure of ±30 µV. This is just one sample, but it does illustrate the danger of assuming your results will match the “typical” figures in the data sheet.

We will improve this result next time by selecting a “better” op amp and by using higher tolerance resistors. But just for a moment let’s look at another solution. We could compensate for both of these errors (offset and gain) by adding a fixed correction – either through analog trimming or, more likely these days, in software on the microcontroller.

Just because we can, let’s look at how much we could improve these readings by applying gain and offset correction using the values from the line of best fit. Table 3 shows the corrected results. Now the absolute error is never worse than about ±20 mV or 0.75% of full scale. Not bad, given the parts we have chosen.

— ADVERTISMENT—

Advertise Here

Table 3
This is the Table 2 data, after applying a fixed offset and gain correction as might happen in software. The overall error is now well under 1% – not bad for a circuit with these basic components. This trimming-out of linear errors is a technique that many precision circuits use.

This is one of the big secrets of precision design. You can usually trim out fixed offset or gain errors to some significant degree. The emphasis should be on the word “fixed”. Its way more difficult to trim out non-linearities or errors that change over time, such as temperature drift.

Effect of temperature

To look at the effect or temperature I want to first introduce the idea of the error budget table. This just a way of capturing the uncertainties we have discussed above in a neat tabular form. Table 4 shows an example. You can use any format you like, but this is how I generally do it. Under the “At Nominal 25˚C” section you will see each step we went through in the above example, capturing the nominal value and relative and/or absolute uncertainty.

Table 4
This is one way to construct an error budget table that I find helpful. The calculated lines are shown in blue for clarity. Note the inclusion of the temperature-dependent errors in the columns on the right.

For example, Line 1 is the shunt resistor and Line 3 is the op amp offset. Lines 2 and 4 are calculated values and are shown in blue text. I always show both the absolute and relative errors on calculated lines. You can see at Line 8 we get to the ±225mV and ±9% error calculated above.

The second part of the table brings the temperature-dependent errors into the picture. We obviously have to know the temperature range of interest in order to calculate these uncertainties. I have chosen a range of 0 to 50˚C (±25˚C either side of the nominal 25˚C) in this example.

The data sheet for the shunt resistor I used (Stackpole CSR1225) tells me that the temperature coefficient (tempco) of the resistor is 100ppm/˚C. This means we will see a resistance change of up to ±2500ppm or ±0.25% over the range of interest on top of the 1% tolerance. Similarly, the op amp’s offset voltage has a drift of ±2 µV/˚C, corresponding to ±50 µV. This is already more than the ±30 µV “typical” offset at 25˚C claimed in the data – another reason to take “typical” values with a grain of salt.

If we continue with the rest of the analysis in the same way, we arrive at a variation of about ±0.8% over the proposed operating temperature range. Even if we could trim out all of the 25˚C error in software, we are left with a temperature-dependent error approaching 1%.  We will look at how we can reduce this in further instalments.

Optimist or Pessimist?

One objection that frequently comes up when we are summing worst-case errors in this way is that we are being overly pessimistic in our design. We are assuming that errors will accumulate in the worst possible way. For example, we have assumed that our gain error is 2% which assumes that both gain-setting resistors are at the extremes of their tolerances and in opposite directions. If they were both high or low by the same percentage, this would cancel out and the gain would be unaffected.

Is it reasonable to take this pessimistic view? What if our circuit had 10 gain-setting resistors instead of two? Would it be reasonable to assume they would all be at their tolerance extremes in the worst way? There is no right answer to the question, but I can suggest some guidelines.

Uncertainty is a statistical game – it’s all about probabilities and consequences. If the probability of the worst case occurring, and the consequences of having it occur are both low, then it is probably OK to make some concessions. If the probability of an error occurring is high (for example if you are making a lot of something), or the consequences of any errors is significant (dangerous, expensive or embarrassing), I’d suggest taking a cautious approach.

One of the concessions you might choose to make is to assume that the sources of error are uncorrelated. In such cases it is possible to add errors (absolute or relative) as the root sum of squares. In our example of 10 gain setting resistors each with 1% tolerance we would come up with a gain error of ±3.1% instead of 10%.

But I urge caution. The root sum of squares is just another statistical tool – it works best when there are a very large number of samples in a truly random and uncorrelated distribution. We do use this type of summation for noise, which fits these criteria,  as we shall see in a later article.

Summary

So where have we gotten to? We have shown that our simple circuit is probably not up to the job of monitoring the current in our supply if we want anything better than a couple of percent resolution. We can trim out the worst of the ±9% error down to a little better than1%, but we will have another 1% or so of error over the temperature range. This 2% error means a ±20 mA uncertainty. We will have to do better next time.

Keep up-to-date with our FREE Weekly Newsletter!

Don't miss out on upcoming issues of Circuit Cellar.


Note: We’ve made the Dec 2022 issue of Circuit Cellar available as a free sample issue. In it, you’ll find a rich variety of the kinds of articles and information that exemplify a typical issue of the current magazine.

Would you like to write for Circuit Cellar? We are always accepting articles/posts from the technical community. Get in touch with us and let's discuss your ideas.

Sponsor this Article
+ posts

Andrew Levido (andrew.levido@gmail.com) earned a bachelor’s degree in Electrical Engineering in Sydney, Australia, in 1986. He worked for several years in R&D for power electronics and telecommunication companies before moving into management roles. Andrew has maintained a hands-on interest in electronics, particularly embedded systems, power electronics, and control theory in his free time. Over the years he has written a number of articles for various electronics publications and occasionally provides consulting services as time allows.

Supporting Companies

Upcoming Events


Copyright © KCK Media Corp.
All Rights Reserved

Copyright © 2026 KCK Media Corp.

Precision Circuits – Introduction

by Andrew Levido time to read: 15 min