Простое измерение сопротивления с помощью микроконтроллера

Какой простой способ измерить сопротивление (в данном случае 0-100 кОм) с помощью микроконтроллера (я использую STM32, у него есть 12-битный АЦП, таймер, но нет компаратора). Я хочу, чтобы это было просто (не слишком много компонентов) и дешево.

Первой идеей, которая у меня была, было использование АЦП с делителем напряжения. Однако это сводит проблему к измерению напряжения на известном резисторе, что гиперболически зависит от измеренного сопротивления, поэтому фактическая точность сильно различается в диапазоне значений неизвестного резистора. Это также требует, чтобы известный резистор был намного меньше, чем известный, но это должно быть хорошо, если не требуется большая точность.

Требования:

  • Диапазон: 0-100 кОм
  • Точность: не менее 1 кОм, предпочтительно <100 Ом, но на самом деле мне любопытно (думая о других возможных применениях, которые могут потребовать большей точности), насколько высоко (с точностью) мы можем получить, не создавая слишком сложных схем.
Каково входное сопротивление вашего АЦП?

Ответы (3)

Используйте прецизионный источник тока с регулируемым напряжением для подачи известного тока на резистор. Если измеренное значение слишком низкое или слишком высокое, отрегулируйте источник тока, чтобы он был более подходящим. Возьмите несколько показаний и усредните... Может быть, 50 показаний, чтобы компенсировать нехватку битов в вашем АЦП.

Для высоких значений сопротивления вам потребуется буферизировать сигнал на АЦП с помощью схемы операционного усилителя с единичным коэффициентом усиления, потому что вход АЦП имеет довольно низкий импеданс.

Источник тока может быть построен с использованием ЦАП для установки потребности. Для максимальной гибкости потребуется два транзистора и два операционных усилителя.

Вы можете подумать, что это слишком сложно, но если вы передумаете, дайте мне знать. Это достойный метод, который я мог бы добавить.

@ignacio хорошая ссылка, чувак.
Обновлена ​​ссылка ww1.microchip.com/downloads/en/appnotes/doc8003.pdf

Проблема, с которой вы сталкиваетесь при использовании делителя напряжения, заключается в том, что не только напряжение изменяется с различными резисторами, но и ток через общее сопротивление. Таким образом, эти трое меняются с разными измерениями.

Чтобы измерить сопротивление, вам нужно поддерживать постоянный ток через пробник. Если ток постоянный, падение напряжения на резисторе напрямую связано с сопротивлением из-за U=I*R. (В=И*Р)

Если вы хотите измерить 0–100 кОм с помощью постоянного тока, макс. = 5 В, вы должны применить 5 В / 100 кОм = 50 мкА, используя 12-битный АЦП, вы можете измерить минимальное напряжение 5/2 ^ 12 = 1,22 мВ, что соответствует минимальному сопротивлению 1,22. мВ/50 мкА = 24,41 Ом, что одновременно является вашей точностью.

Если вы используете сопротивление для измерения последовательно с конденсатором и можете измерить напряжение на конденсаторе, постоянная времени RC результирующей цепи будет пропорциональна сопротивлению. Обычный подход к измерению заключается в том, чтобы зарядить крышку до определенного уровня, а затем определить, сколько времени потребуется, чтобы разрядиться на определенный процент. Если расположить вещи так, чтобы крышка могла заряжаться либо через известное сопротивление, либо через неизвестное, можно достаточно точно определить неизвестное сопротивление.