Как подать на ацп разнополярный сигнал

| Текущее время: Сб мар 16, 2024 01:38:45 |
Часовой пояс: UTC + 3 часа
Запрошенной темы не существует.
Часовой пояс: UTC + 3 часа

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y
Работоспособность сайта проверена в браузерах:
IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
При меньших разрешениях возможно появление горизонтальной прокрутки.
По всем вопросам обращайтесь к Коту: kot@radiokot.ru
©2005-2024
Усилитель, АЦП, I2C, микроконтроллер и методы подавления помех
Имеется двуполярный сигнал от источника с высоким внутренним сопротивлением. Необходимо построить схематехнику так, чтобы ни одного подстроечного сопротивления, ни одной калибровки бы не требовалось. Таким источником, например, может быть pH электрод с внутренним сопротивлением доли гигаом и разнополярным сигналом в диапазоне ±250 мВ.
(см. http://keklab.ru/articles/3-2010-10-. 8-phmeter.html ).
Задача не решается «в лоб». Внутренний усилитель АЦП, как правило, имеет малый импеданс. Значит надо усилитель на вход по технологии CMOS. Это во-первых. Далее раз усилитель, то чем его питать? Двуполярное питание? Не хотелось бы… А как же ±250 мВ на входе? Это означает создание смещения, а это означает зависимость от точности питания, от точности сопротивлений, организующих смещение, даже при использовании источников опорного напряжения. Вот калибровки и потянутся… Это во-вторых.
Решение определилось в создании искусственной средней точки. Проведя поиск, нашлась даже специальная микросхема TLE2425, которая минимизирует колебания искусственной средней точки. А эти колебания возможны, когда токи потребления отдельных узлов «гуляют». Вот здесь об этом:
(см. http://www.gaw.ru/html.cgi/txt/doc/ldo/linps_4_6.htm)
Но в представленном решении оказалось все проще. Пусть себе гуляет. Я имею ввиду не кошку, а искусственную среднюю точку. Она организована может быть совершенно не симметрично относительно питания 3.3V, совершенно не точными сопротивлениями. Главное, чтобы суммарный ток через Rg1 и Rg2 был бы существенно выше потребления усилителя и АЦП, они единственные потребители, которые зависят от средней точки. Почему не важна стабильность? Да, потому, что средняя точка заведена на “-” внутреннего усилителя АЦП и входной сигнал тоже на неё опирается. Вот если бы минус этого АЦП сидел бы на земле, тогда точность средней точки относительно земли имела бы важное значение.
И ещё два замечания относительно всей конструкции. Если диапазон входного сигнала ±250 мВ, то средняя точка должна быть относительно земли выше 250 мВ. Пусть она будет 1 вольт, тогда диапазон относительно земли будет от -750мВ до 1250мВ, что вписывается и в верхнее ограничение до 3.3 вольт. И последний приятный факт. Точность питания в 3.3 вольта совсем не обязательна, как известно, многие современные операционные усилители к этому относятся «спокойно», если схемотехника не привязывается к питанию для каких-то других целей. Наша цель – отсутствие подстроек и калибровок выполнена. С этим разобрались…
Остальное, дабы не писать много букв вторично здесь.
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.

Регистрация: 10.11.2011
Адрес: Taganrog
Сообщений: 8,404
Репутация: 2214
| 21.06.2015 17:55 | #2 |
Наша цель – отсутствие подстроек и калибровок выполнена. С этим разобрались…Ну и. Напрашиваетесь на «удалёнку»-вэлкам,друзи. Без обид,кек.
Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW. Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного.

Регистрация: 02.12.2010
Сообщений: 50
Репутация: 17
| 21.06.2015 20:19 | #3 |
Сообщение от alexzand
Наша цель – отсутствие подстроек и калибровок выполнена. С этим разобрались…Ну и. Напрашиваетесь на «удалёнку»-вэлкам,друзи. Без обид,кек.
Помню в советской школе была группа продленного дня. а что такое удаленка — не знаю.
Регистрация: 13.07.2007
Сообщений: 654
Репутация: 119
| 21.06.2015 21:24 | #4 |
Схема оригинальная. Чужой положительный опыт всегда интересен.
Но такими датчиками редко кто занимается. И схема работает в помещении. Точность вас устраивает.
Отмечу два момента.
1 Не самый лучший АЦП по температурной стабильности.5-40 ppm/°C
В AD7799 внутренняя калибровка 0 и полного диапазона ±10 nV/°C typ. В AD7714 ещё больше возможностей.Калибровка полного диапазона сигнала от датчика,например.
2 Не лукавьте .Отсутствие регулировок и калибровок — это при знании Си несущественно.
Вы же с кодом от АЦП что-то делаете. И умножить на коэф. и убрать смещение проще простого.Например вычитать/прибавлять код полученный с регулировочного резистора подключённого к другим входам АЦП.
Но и эти проблемы не носят серьёзного характера.
Достаточно поставить на плате любой термометр (DS1820) и прогнать по температуре и скомпенсировать програмно.
Вы ради интереса нагрейте пальцем АЦП и отпишитесь.
Один раз с AD7799 такое сделал и был неприятно удивлён.
Но цикл автокалибровки (раз в 20 сек) всё тут же исправил.
Регистрация: 02.12.2010
Сообщений: 50
Репутация: 17
| 22.06.2015 11:24 | #5 |
Сообщение от Sergey57
2 Не лукавьте .Отсутствие регулировок и калибровок — это при знании Си несущественно.
Вы же с кодом от АЦП что-то делаете. И умножить на коэф. и убрать смещение проще простого.Например вычитать/прибавлять код полученный с регулировочного резистора подключённого к другим входам АЦП.
Обменяться опытом очень приятно. Эта попытка и схема, вообще говоря, вырвана из контекста. А контекст такой. Я давно занимаюсь именно pH-метрией и сейчас делаю модификацию своего давнишнего проекта. Поэтому, то что я написал не панацея, но в моем контексте уместно. Например, I2C — ограничивает выбор АЦП, а мне нужно таких в линейке 3-8 штук. И т.д.
Что касается смещения и двуполярности, честно, сам приятно удивился, нельзя знать всего. До этого городил 2 питания, калибровки и т.д. Индивидуальные калибровки при наличии СИ — это ерунда, Sergey57 — правильно говорите. Но когда у вас идет серия приборов. Вы выпускаете единую программу для микроконтроллера и в ней эти калибровки разные. Значит надо как-то организовать «запихивание» индивидуальных калибровок в энергонезависимую память через какой-то протокол. удаленно по Интернету. Таков мой опыт. Это не всегда возможно. Отсюда у меня страсть к «идеальности» измерений в этом смысле.
Организовать собственную калибровку — идея хорошая для многоканального АЦП. Если у кого есть опыт поделитесь. ИОНы — тоже плавают.
Да, прикоснулся паяльником к АЦП. Не знаю какой у него цикл самокалибровки, а она есть. 3 разряда поплыли.
Регистрация: 13.07.2007
Сообщений: 654
Репутация: 119
| 22.06.2015 12:30 | #6 |
Как очень давно пошутил мой Учитель.
Что бы мы не делаем либо измеряем давление, проводимость итд
всегда получается термометр в первую очередь.
Ваше самое простое решение для линейки измерителей сделать
отдельную плату с подстроечными резисторами и отдельным ПИК или что хотите и по любому интерфейсу в ЦП. Судя по схеме входов у вас не много.
Такой фокус проделывал с 16F676 по SPI (программный) В вашем случае
подобрать что-то копеечное. Чем понравилось под каждую величну делается свой масштаб подстройки. Если надо биполярная подстройка
из безнакового делаем число со знаком.
С такой схемкой очень удобно прогонять по температуре.
коды записываешь и потом в программу.Желательно детали одной серии и оптом.
antonydublin
antonydublin
Специалист
Регистрация: 22.09.2010
Адрес: г. Донецк
Сообщений: 868
Репутация: 380
| 23.06.2015 19:44 | #7 |
Сообщение от Sergey57
Как очень давно пошутил мой Учитель: «Что бы мы не делаем, либо измеряем давление, проводимость и т.д., всегда получается термометр в первую очередь».
А мой шеф говорит: «Измерять можно с любой степенью точности. Но где взять достаточно чистый сигнал?»
Интересный материал, kek. Спасибо.
Я далёк от pH-метрии в профессиональном смысле, но всегда жутко интересно заглянуть «за забор» :-). Уверен, что химические датчики имеют наиболее чистый (исходно) выходной сигнал. И, если я правильно понимаю, то pH-электрод по аналогии с термопарой является источником ЭДС, но химическим источником, причём с огромным внутренним сопротивлением и двухполярным сигналом на выходе (наверное, разную полярность дают кислотные и щелочные среды).
Но мне близка проблематика прецизионных измерений. И, если уж приходится бороться с шумами термопар и терморезисторов, наводками и импульсными помехами, то иметь в качестве первичного преобразователя датчик с сопротивлением в несколько сот мегаом – такого врагу не пожелаешь.
Поэтому понятно – фильтрация. Сетевые 50Гц большинство АЦП давно умеют фильтровать самостоятельно. Те же упомянутые AD7xxx имеют встроенные, нередко программируемые режекторные фильтры с неплохим коэффициентом подавления. Но импульсная, непериодическая помеха… Я вот при медленных измерениях qsort() и поиск медианы не применяю. Когда времени у МК полно (замер несколько раз в секунду), постоянная времени исследуемого процесса ориентировочно известна, просто проверяю, что новое измерение не вышло за допустимый диапазон роста в единицу времени, или, что тоже, что модуль приращения функции не «зашкаливает». А потом усреднение, усреднение. Так действую, например, при термостатировании тяжёлой пресс-формы со сложной геометрией, когда на прогрев до нужной температуры уходит несколько часов, а весь процесс прессования проходит стадиями, строго по ступенчатой диаграмме «температура-давление». Так, как ни старался, мне не удалось избавиться от помех по всем измерительным каналам в момент пуска двигателя маслостанции пресса. Обмен опытом.
И конкретный вопрос по Вашей схеме. Вы пишите, что величину сопротивлений Rg1 и Rg2 следует выбирать так, чтобы ток образованного делителя был много больше тока потребления ОУ и АЦП. Это требование было бы очевидным, если бы Вы действительно «пользовались» созданной искусственной общей точкой, например, запитали ОУ (что эквивалентно наличию двухполярного источника питания с низким внутренним сопротивлением). Но ведь в схеме ОУ и АЦП лишь косвенно (по входам) зависят от «средней» точки, т.к. делитель всего-навсего задаёт смещение входного сигнала на фиксированную величину. В этом случае как-то не хотелось бы отдавать 5-10 мА цепи смещения в виде «прожорливого» делителя. Величина сопротивлений, думается, может быть 10-20кОм и больше, учитывая ничтожные входные токи ОУ и большое сопротивление датчика.
Но в схеме конденсатор Cf1 (конденсатор на диф. входе АЦП) своим вторым выводом подключен к делителю. В этом случае, как я понимаю, образуется обратная связь. И чем выше величина сопротивлений Rg1 и Rg2, учитывая большое сопротивление датчика, тем больше глубина этой связи. Это, конечно, было бы критично при оцифровке периодических сигналов с частотой от нескольких герц и выше, т.к. конечная форма напряжения на входе АЦП изменялась бы. При постоянном же сигнале на входе ОУ любая случайная переменная составляющая влияет на величину напряжения смещения, заданного делителем. Т.е. подавление конденсатором помехи на диф. входе АЦП не происходит, т.к. нарушается симметрия. Возможно, эффективнее было бы второй вывод Сf подключить к общему проводу схемы. Ведь есть кондесаторы Сb6, Сb7 на входе -In АЦП. Или я не правильно понимаю назначение Сf.
Аналоговые пины


В прошлом уроке мы разобрали измерение и вывод цифрового сигнала, а в этом разберём аналоговый сигнал. Зачем нужно читать аналоговый сигнал? Микроконтроллер может выступать в роли вольтметра, измерять собственное напряжение питания, например от аккумулятора, может измерять ток через шунт (если вы знаете закон Ома), можно измерять сопротивление, а также работать с потенциометрами (крутильными, линейными, джойстиками), которые являются очень удобными органами управления.
В уроке про возможности микроконтроллера мы обсуждали аналоговые входы, т.е. входы, подключенные к АЦП – аналогово-цифровому преобразователю (ADC). Взглянем на распиновку популярных плат (Arduino Nano и Wemos Mini):

Пины, на которых выведен ADC, могут измерять аналоговый сигнал. На плате Nano это пины, маркированные буквой А (A0–A7), а у esp8266 такой пин всего один – A0.
Чтение сигнала
“Аналоговые” пины могут принимать напряжение от 0V (GND) до опорного напряжения и преобразовывать его в цифровое значение, просто в какие-то условные единицы. АЦП на AVR и esp8266 имеет разрядность в 10 бит, т.е. мы получаем измеренное напряжение в виде числа от 0 до 1023 .
Функция, которая оцифровывает напряжение, называется analogRead(pin) . Она принимает в качестве аргумента номер аналогового пина и возвращает оцифрованное напряжение. Сам пин должен быть сконфигурирован как INPUT (вход). Нумерация:
- Arduino Nano:
- Просто номером А-пина: A0 – 0
- Как на плате: A0 – A0
- Порядковым номером GPIO: А0 – 14 , A1 – 15 .. А7 – 21
- Просто номером А-пина: A0 – 0
- Как на плате: A0 – A0
Пример, опрашивающий пин А0:
int value1 = analogRead(0); // считать напряжение с пина A0 int value2 = analogRead(A0); // считать напряжение с пина A0 int value3 = analogRead(14); // считать напряжение с пина A0
Хранить полученное значение разумно в переменной типа int , потому что значение варьируется от 0 до 1023.
Нельзя подавать на аналоговый пин напряжение выше напряжения питания МК. Через ограничивающий резистор (~10k) – можно, но всё равно не рекомендуется этого допускать.
Потенциометры
Аналоговые пины очень часто используются при работе с потенциометрами (переменный резистор). При помощи полученного значения можно влиять на ход работы программы, менять какие-то настройки и тому подобное. У потенциометра всегда три ноги: две крайние и одна центральная. Всё вместе это представляет собой делитель напряжения, который и позволяет менять напряжение в диапазоне 0-VCC:
К Arduino потенциометр подключается следующим образом: средний вывод на любой A-пин, крайние – на GND и питание. От порядка подключения GND и питания зависит направление изменения значения. Что касается сопротивления, то читай заметку по делителям напряжения ниже в этом уроке. Чаще всего для МК ставят потенциометры с сопротивлением 10 кОм, но диапазон в принципе очень широк: от 1 кОм до 100 кОм. Чем больше, тем более шумным будет приходить сигнал, а если брать меньше – пойдут потери тока в нагрев потенциометра, а это никому не нужно. 
Опорное напряжение (для AVR Arduino)
Опорное напряжение играет главную роль в измерении аналогового сигнала, потому что именно от него зависит максимальное измеряемое напряжение и вообще возможность и точность перевода полученного значения 0-1023 в Вольты. Изучим функцию analogReference(mode) , где mode:
- DEFAULT : опорное напряжение равно напряжению питания МК. Активно по умолчанию
- INTERNAL : встроенный источник опорного на 1.1V (для ATmega168 или ATmega328P) и 2.56V (на ATmega8)
- INTERNAL1V1 : встроенный источник опорного на 1.1V (только для Arduino Mega)
- INTERNAL2V56 : встроенный источник опорного на 2.56V (только для Arduino Mega)
- EXTERNAL : опорным будет считаться напряжение, поданное на пин AREF
После изменения источника опорного напряжения (вызова analogReference() ) первые несколько измерений могут быть нестабильными. Значение 1023 функции analogRead() будет соответствовать выбранному опорному напряжению или напряжению выше его.
В режиме DEFAULT мы можем оцифровать напряжение от 0 до напряжения питания VCC. Если напряжение питания 4.5 Вольта, и мы подаём 4.5 Вольт – получим оцифрованное значение 1023. Если подаём 5 Вольт – опять же получим 1023, т.к. выше опорного. Это правило работает и дальше, главное не превышать 5.5 Вольт. Как измерять более высокое напряжение, читайте ниже.
Что касается точности: при питании от 5V и режиме DEFAULT мы получим точность измерения напряжения (5 / 1024) ~4.9 милливольт. Поставив INTERNAL мы можем измерять напряжение от 0V до 1.1V с точностью (1.1 / 1024) ~0.98 милливольт. Весьма неплохо, особенно если баловаться с делителем напряжения.
Что касается внешнего источника опорного напряжения: нельзя подавать напряжение меньше 0V (отрицательное) или выше 5.5V в качестве внешнего опорного в пин AREF. Также при подключении внешнего опорного напряжения нужно вызвать analogReference(EXTERNAL) до первого вызова функции analogRead() (начиная с запуска программы), иначе можно повредить микроконтроллер!
Чтобы “на лету” переключаться между внутренними и внешним опорными, можно подключить его на AREF через резистор на ~5 кОм. Вход AREF имеет собственное сопротивление в 32 кОм, поэтому реальное опорное будет вычисляться по формуле REF = V * 32 / (R + 32), где R – сопротивление резистора (кОм), через которое подключено опорное напряжение V (Вольт). Например для 2.5V получим 2.5 * 32 / (32 + 5) = ~2.2V реальное опорное.
Измерение напряжения
0-5 Вольт
Простой пример, как измерить напряжение на аналоговом пине и перевести его в Вольты. Плата питается от 5V.
float voltage = (float)(analogRead(0) * 5.0) / 1024;

Таким образом переменная voltage получает значение в Вольтах, от 0 до 5. Чуть позже мы поговорим о более точных измерениях при помощи некоторых хаков. Почему мы делим на 1024, а не на 1023 , ведь максимальное значение измерения с АЦП составляет 1023? Ответ можно найти в даташите:
АЦП при преобразовании отнимает один бит, т.е. 5.0 Вольт он в принципе может измерить только как 4.995, что и получится по формуле выше: 1023 * 5 / 1024 == 4.995.. . Таким образом делить нужно на 1024.Сильно больше 5 Вольт

Для измерения постоянного напряжения больше 5 Вольт нужно использовать делитель напряжения на резисторах (Википедия). Схема подключения, при которой плата питается от 12V в пин Vin и может измерять напряжение источника (например, аккумулятора):
Код для перевода значения с analogRead() в Вольты с учётом делителя напряжения:// GND -- [ R2 ] -- A0 -- [ R1 ] -- VIN #define VREF 5.1 // точное напряжение на пине 5V (в данном случае зависит от стабилизатора на плате Arduino) #define DIV_R1 10000 // точное значение 10 кОм резистора #define DIV_R2 4700 // точное значение 4.7 кОм резистора void setup() < float voltage = (float)analogRead(0) * VREF * ((DIV_R1 + DIV_R2) / DIV_R2) / 1024; >void loop() <>
Как выбрать/рассчитать делитель напряжения?
- Согласно даташиту на ATmega, сумма R1 + R2 не рекомендуется больше 10 кОм для достижения наибольшей точности измерения. В то же время через делитель на 10 кОм будет течь ощутимый ток, что критично для автономных устройств (читай ниже). Если девайс работает от сети или от аккумулятора, но МК не используется в режиме сна – ставим делитель 10 кОм и не задумываемся. Также рекомендуется поставить конденсатор между GND и аналоговым пином для уменьшения помех.
- Если девайс работает от аккумулятора и микроконтроллер “спит”: пусть аккумулятор 12V, тогда через 10 кОм делитель пойдёт ток 1.2 мА. Сам микроконтроллер в режиме сна потребляет ~1 мкА, что в тысячу раз меньше! На самом деле можно взять делитель с гораздо бОльшим суммарным сопротивлением (но не больше 20 МОм, внутреннего сопротивления самого АЦП), но обязательно поставить конденсатор на ~0.1 мкФ между аналоговым пином и GND (вот здесь проводили эксперимент). Таким образом например при при R1+R2 = 10 МОм (не забыть про конденсатор) ток через делитель будет 1.2 мкА, что уже гораздо лучше!
- Коэффициент делителя (не тот, который в Википедии) равен (R1 + R2) / R2 . Коэффициент должен быть таким, чтобы при делении на него измеряемого напряжения не получилось больше напряжения питания МК. У меня в примере (10 + 4.7) / 4.7 ~ 3.13 . Я хочу измерять литиевый аккумулятор с максимальным напряжением 12.8 Вольт. 12.8 / 3.13 ~ 4 Вольта – отлично. Например для измерения 36 Вольт я бы взял делитель с плечами 100к и 10к.
- Можно воспользоваться онлайн-калькулятором.
Сильно меньше 5 Вольт
Для более точных измерений маленького напряжения можно подключить пин AREF к источнику низкого опорного напряжения (об этом было выше), чтобы “сузить” диапазон работы АЦП. Источник может быть как внешний, так и внутренний, например изменив опорное на внутреннее 1.1V ( analogReference(INTERNAL) ) можно измерять напряжение от 0 до 1.1 Вольта с точностью 1.1/1024 ~ 1.01 мВ.
Видео
Полезные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
Как подать на ацп разнополярный сигнал
Неправильно. На обоих концах шунта будет напряжение порядка 10. 14 вольт. А разность этих напряжений в лучшем случае будет всего лишь 75мВ. Это уже меньше процента от 10. 14 вольт. Чтобы ваш АЦП мог таким способом измерять ток, его точность должна быть порядка сотых или тысячных долей процента. Это слишком круто, для такой простой задачи.
Сигнал с шунта надо сначала усилить дифференциальным усилителем, чтобы привести его к входному диапазону АЦП.
На этом проблема могла бы и решиться, если бы сигнал с шунта был однополярным.
А у нас при заряде одна полярность, при разряде — другая. А для АЦП подходит только положительная.
Поэтому придется сместить выходной сигнал усилителя вверх, на половину диапазона АЦП. Тогда нулю будет соответствовать середина диапазона, максимальному зарядному току будет соответствовать максимальное значение кода АЦП, а максимальному разрядному току — значение кода АЦП, близкое или равное нулю.true71 (04.05.2012), warel (28.06.2019)
Меню пользователя Alex9797 Посмотреть профиль Отправить личное сообщение для Alex9797 Найти ещё сообщения от Alex9797 Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
Re: Амперметр на МКAlex9797 , Для примера ,maga16.
АЦП — включается в дифф.режим,усиление ставится 200 (GAIN), на «+» и «-» подаются сигналы с делителей разных концов шунта.
Далее цитата datasheet:
If differential channels are used, the result is
where VPOS is the voltage on the positive input pin, VNEG the voltage on the negative
input pin, GAIN the selected gain factor, and VREF the selected voltage reference. The
result isADC=(Vpos-Vneg) *GAIN *512 / Vref
presented in two’s complement form, from 0x200 (-512d) through 0x1FF
(+511d). Note that if the user wants to perform a quick polarity check of the results, it is
sufficient to read the MSB of the result (ADC9 in ADCH). If this bit is one, the result is
negative, and if this bit is zero, the result is positive. Figure 111 shows the decoding of
the differential input range.PS. Шунт естественно «вверху» , иначе при заряде(или разряде) один входов опустится ниже земли.