Дифференциальный режим работы АЦП

Тема в разделе "Глядите, что я сделал", создана пользователем parovoZZ, 14 дек 2018.

  1. parovoZZ

    parovoZZ Гуру

    В чем сила, брат?

    Мало кто знает, но у некоторых МК есть специальный режим АЦП, в котором он может вычитать сигналы, пришедшие к нему на вход. Количество таких сигналов в МК ограничено двумя. Вычитаются сигналы на стандартном для аналоговой схемотехнике элементе - операционном усилителе (ОУ). Рассказывать здесь, что такое операционный усилитель я не буду, ибо это тема очень глубокая и по ней написано не одна сотня книжек. Давайте посмотрим классическую структурную схему такого МК:
    diff_ADC.png
    Нас интересует треугольник (стандартное обозначение усилительного элемента) с надписью Gain Amplifier. Как видим, у него два входа - неинвертирующий (со знаком +) и инвертирующий (со знаком -). Входы ОУ подключаются ко внешним ногам МК с помощью двух аналоговых мультиплексоров. Собственно, прелесть такого решения не в том, что присутствует непосредственно сам ОУ, а в том, что он обладает программируемым коэффициентом усиления. Ну где вы увидите ещё такое? Ну не секрет, что в природе существуют ОУ, у которых также коэффициент усиления изменяем, но у нас-то уже всё есть на борту. Весь список МК, у которых АЦП умеет работать в дифф. режиме, приводить не буду (я и сам не знаю), но скажу про некоторые:
    линейка attinyx5 - коэффициент усиления 1х и 20х
    линейка attinyx4 - коэффициент усиления 1х и 20х
    линейка attinyx41 - коэффициент усиления 1х, 20х и 100х!
    просто суперская (из-за своих никем не превзойденных таймеров) линейка attinyx61 - 1x, 8x, 20x, 32x
    Ну и для чего всё это нужно, спросите вы? Самый простой пример - датчик Холла. Возьмем самый простой и доступный SS49е. У него внутри есть усилитель, на выходе которого в покое (в отсутствии сильного магнитного поля) ровно половинка питания. Если вам необходимо работать в обоих плоскостях (положительной и отрицательной), то нет проблем - подключаем референс АЦП к питанию и считываем. А если нет? Тогда мы теряем существенную область разрядности АЦП. Чтобы работать на полную шкалу АЦП, необходимо ставить внешний ОУ и смещать выход либо к нулю, либо к плюсу питания. Но ничего этого делать не надо, если у нас утот ОУ уже есть. На один из входов МК подаем сигнал с датчика Холла, на другой подаем необходимое смещение (да хоть тем же резистивным делителем). А если датчик не очень чувствительный (как взятый нами), а хочется побольше разрядности в показаниях? Нет проблем! Программируем необходимое усиление и вуаля! Вот пример на attiny44A с усилением 20х:
    hall.png
    Уровень сигнала в состоянии покоя (когда магнитик бесконечно далеко) показа прерывистой линией.
    А вот на каком расстоянии малюпусенький магнитик:
    IMG_0452.JPG
    В обычном режиме датчик Холла начинает реагировать на этот магнитик когда расстояние до него в районе 1 см.
    Есть у этого решения и минусы.
    1. Т.к. ОУ в МК, то он особо чувствителен к шумам при усилении >1
    2. В дифф. режиме катастрофически падает полоса пропускания аналогового тракта в МК - с 32 кГц до 4 кГц.
    3. Несколько падает точность измерения. Но оно и понятно - для нетребовательных технических целей этого хватит вполне, а если нужны более точные измерения, то и выбор ОУ и АЦП будет сделан согласно поставленной задаче.

    ЫЫЫ Шумы на верхней картинке - это результат небрежного отношения к делу. Здесь собраны шумы с переменного резистора номиналом 100к (даташит рекомендует выходное сопротивление источника не более 10к), очень сильно шумит питание USB, а блокировочными конденсаторами я не озаботился, ну и на момент оцифровки АЦП сигнала я не перевожу МК в остановку.

    Засим всЁ.
     
    ИгорьК и Daniil нравится это.
  2. Daniil

    Daniil Гуру

    Я потерял нить. О каком источнике тут говорится?
    Для статистики, можете сказать какая разрядность получилась у АЦП, а разрешение (ось игрик на картинке не подписана)?
     
  3. Об источнике напряжения, которое мы измеряем
     
    Daniil нравится это.
  4. parovoZZ

    parovoZZ Гуру

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

    Стандартная для практически всех осциллографов - 8 бит. Но здесь такое ограничение накладывает COM порт.
     
    Daniil нравится это.