Задача: необходимо неспешно измерить сопротивление, величина которого лежит в диапазоне от 30 до 300000 ом. Точность - 1% и ниже. Скорость - не важна абсолютно. Результат - в цифровом виде.
Предлагаемое решение, сверху вниз по предполагаемой схеме. Все управляется микроконтроллером "сбоку"
а) Управляемый источник напряжения. Цифровой резистор, два ОУ и полевик. На выходе можем получить 1-30В (примерно) с шагом около 0,1В (если взять резистор в 256 шагов). Через ОУ - на АЦП1 для контроля напряжения.
б) "Батарея" резисторов на сопротивление 30, 100, 1000 .... 200000, 300000 (сколько надо), соединенных параллельно. Каждый резистор "включается" в парралель с помощью полевого транзистора. Транзистор управляется микроконтроллером.
в) Само сопротивление, которое надо измерить.
Сбоку операционник в режиме повторителя напряжения/инвертирующего усилителя с изменяемой ОС (по необходимости) и АЦП2. подключен к получившемуся делителю напряжения из батареи резисторов и измеряемого.
Принцип измерения:
1. Ставим напряжение на 1в
2. "Подключаем" сопротивление на 30 ом путем открытия соответствующего полевика
3. Меряем напряжение с помощью АЦП2
4. Полученное 0 или около нуля? Переключаем на резистор номиналом повыше и/или напряжение повыше, пока не будет где-то "в середине".
5. Меряем, корректируем с учетом напряжения и включенного резистора.
Управляемый источник напряжения нужен, что бы убежать от ошибок, связанных с маленькими токами на больших номиналах и с большими токами на маленьких номиналах.
Компенсация неточности сопротивлений и внутренних сопротивлений транзисторов - в самом начале вместо резистора ставим перемычку или известный резистор и последовательно переключаем напряжение с блока питания и резисторы. По показаниям АЦП1, меряем напряжение и заносим полученное для корректировки в память МК.
По прикидкам, родного 12битного АЦП микроконтроллера хватит, что бы обеспечить 1% и замахнуться на 0,1%
Минусы - надо много ног микроконтроллера (но это можно решить регистром сдвига) и использование "лишнего" АЦП для контроля напряжения/калибровки.