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