Найти в Дзене
SamON

Измерение аналогового сигнала микроконтроллером

Всем привет! Тут речь пойдет про измерение аналогового сигнала микроконтроллером. Сразу скажу, что эта тема категорически обширная и технически сложная. В одну статью всего не уместишь, потому договоримся так. Если эта статья "зайдет", то я продолжу, по мере усложнения. Если нет.... на нет и суда нет :)

Тут я коснусь темы измерения сигнала, который "не вписывается" в диапазон АЦП. Алгоритмов не будет. Только аппаратная часть.

Всем известно, что большинство АЦП измеряет напряжение в диапазоне от 0 до Vref. Т.е. если Vref = 3.0В, а на вход подать 3.3В, то АЦП уйдет в зашкал. Ровно как измерительной головкой со шкалой 5В пытаться измерить 6В. Что делать? Да "тупо" переключить шкалу.

Всего может быть три варианта: Uвх_max > Uref, Uвх _max < Uref, Uвх_min< Uref >Uвх_max.

Ситуация номер раз: Uвх_max > Uref

Первое, что приходит в голову - тупо поделить напряжение и это рабочий вариант. Сам часто пользуюсь таким методом. Но делителем обойтись не всегда получится. Делитель должен быть таким, что бы не нагружать источник измеряемого напряжения. Потому, стоит несколько усложнить схему.

-2

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

Рассчитывается делитель для схемы с повторителем так

Достаточно задать R2, остальное всё известно.
Достаточно задать R2, остальное всё известно.

Ситуация номер два: Uвх_max < Uref

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

-4

Формула расчёта еще проще, чем в предыдущем случае

-5

Ситуация номер три: Uвх_min< Uref >Uвх_max.

Самый интересный случай, когда диапазон изменения измеряемого напряжения больше нуля, но меньше опорного напряжения. Хочется его, как-бы, растянуть на всю шкалу АЦП.

-6

Эта схема обладает усилением > 1, и смещением напряжения >0. Т.е. одновременно и смещает уровень напряжения, и усиливает его. Не получится, либо только усилить, либо только сместить уровень используя эту схему.

С формулами чуть замороченнее. В целом, выходное напряжение связано с входным следующим соотношением

-7

Откуда, можно вывести систему уравнений, решив которую мы найдем искомые значения

-8

Надо найти R1, R2.

Исходные данные:

Ucc - напряжение питания схемы, Uin_max/min - диапазон измеряемого напряжения, Uout_max/min - диапазон шкалы ADC, задаем "с потолка" R3. Далее, все R в кОм, напряжения в вольтах.
Ucc - напряжение питания схемы, Uin_max/min - диапазон измеряемого напряжения, Uout_max/min - диапазон шкалы ADC, задаем "с потолка" R3. Далее, все R в кОм, напряжения в вольтах.

Решаем систему :) И тут я наупражнялся с математикой. Ничего сложно, просто надо быть внимательным. В процессе решения получаются страшные многоэтажные дроби, которые надо упростить, приводя это чудо к общему знаменателю...

Короче, решаем как обычную систему линейных уравнений с двумя переменными. Из второго уравнения выражаем R2.

-10

Потом это R2 подставляем в первое уравнение. В процессе решения, получилась выражение, которое я вынес в отдельную переменную (что бы легче было упрощать без того здоровое выражение). Переменную я назвал Ucom

-11

Собственно, после подстановки R2 в уравнение 1 и решая его относительно R1, получаем

-12

Теперь можем найти R1. Вычисляем значение R1 и подставляем формула для R2, что бы найти значение второго сопротивления. Вуаля.

Результат совпал. Получили заданные нами 3,3В и 0В. Задача решена
Результат совпал. Получили заданные нами 3,3В и 0В. Задача решена

Что бы вам не мучится, я это оформил в файлик. Рекомендую установить SMath Studio. Это бесплатный аналог маткад. Но, я так и не понял как заставить его решать систему уравнений. В маткаде это делается двумя строчками. Потому, я по-старинке, решил всё руками, вывел формулы для вас, что бы, если припрёт, вам достаточно было подставить свои значения.

P.S. Пока только скрин из файла, позже закину в облако сам файл и дам ссылку. Сейчас нет возможности это сделать. Пожалуйста, напомните мне, если вдруг я забуду выложить файл.

-14

Ради интереса, если делать будет нечего, постарайтесь вывести сами эти формулы. Может у вас получится еще больше упросить полученное выражение.