I am designing a auto range multimeter with PIC microcontroller and added extra circuitry for attenuating the signal uu to 3.3V for ADC of PIC controller. The problem I am having is in the auto range switching. I have designed the system to give me 0-2048 for positive range and 2048-4095 for the negative range. The problem occurs at the transition 2048 where it keeps switching between different ranges randomly instead of staying in the correct range. I am not asking specific solution. But if somebody can provide me the correct way to switch range in the auto range multimeter.
- Present the input signal with different scales to different A/D inputs. Range switching is then done in software. Roughly you want to use the signal with the highest reading that isn't clipped. In reality it is good to blend over at least part of the range with the next lower signal so that you have smooth overlap between the ranges. Calibration needs to be done carefully.
- Use a adjustable attenuator chain. Sometimes this is done with relays due to the need to handle large voltages. Again, calibration between the different ranges is important. Some hysterisis is needed to prevent constantly switching if the signal happens to be right at a transition between scales.
- Use a very high resolution A/D with fixed attenuation. This is probably the simplest if you don't need really high input voltage. Delta-sigma A/Ds that can produce over 20 bits are available. They are too slow for many uses, ususally a few 10s of ms, but are still instantaneous on a human scale. For example, if your meter is supposed to work for ±30V, then 20 bits gives you 60 µV resolution.