Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

306 Часть 111. Практическое программирование микроконтроллеров АVR ПОДРОБНОС ТИ Дифференциальному измерению соответствует такая формула: Ка = 51 2(Upos - Un89)/Uгe1, где Upos и Uneg - напряжения на положительном и отрицательном входах соответст­ венно. Если напряжение на отрицательном входе больше, чем на положительном , то результат в дифференциальном режиме становится отрицательным и выражается в дополнительном коде от $ 200 (-5 1 2) до $ ЗFF (-1 ) 1 . Реальная точность преобразова­ ния в дифференциальном режиме не превышает 8 разрядов . Зачем нужен дифференциальный режим? Типовое его применение - преобразование сигнала с измерительного моста . Мост можно представить, как два резистивных дели­ теля напряжения, при этом два входа дифференциальной схемы измерения подклю­ чаются к средним точками делителей, и результат измерения представляет собой разность напряжений в этих точках. Если некоторые сопротивления резисторов в де­ лителях зависят от какой-нибудь физической величины, то сигнал меняется в положи­ тельную или отрицательную сторону. Мостовая схема известна еще с XIX века и по­ зволяет осуществлять наиболее точные измерения , но не сама по себе, а при соблю­ дении определенных условий . Теория мостовых измерений - достаточно сложный предмет, и некоторые ее азы читатель может узнать из моей книги [1 0] . Мне , как бывшему метрологу, непросто представить себе, зачем нужно применять не­ посредственное подключение мостовых схем к АЦП контроллера в условиях, когда максимально достижимая абсолютная точность преобразования все равно ограничена 8-битовым числом (и то только теоретически - на практике всегда меньше) . В случае, когда действительно нужно что-то измерить достаточно тщательно, проще заранее обеспечить гарантированную точность и диапазон входного сигнала АЦП , сформиро­ вав его с помощью внешних прецизионных операционных усилителей, - и стабиль­ ность обеспечена, и все ошибки точно просчитываются . Собственно говоря , так и по­ ступают конструкторы различных датчи ков физических величин , иногда выдавая на­ гора готовый аналоговый сигнал , а иногда и сразу цифровой . Последний вариант в общем случае хуже, т. к . , за редкими исключениями, в датчик прецизионный АЦП за­ совывать никто не будет, но крайне удобен на практике, - для сравнения см . далее разд. «Перевод результатов в физические величины» . В общем, чтобы у вас окончательно не уехала крыша, давайте в общем обзоре воз­ можностей АЦП на этом остановимся . Хотя мы еще далеко не все нюансы доста­ точно подробно рассмотрели, уже можно понять, почему в начале раздела говори­ лось о реальном преимуществе Arduino в вопросе доступа к АЦП. На самом деле, для элементарной практической реализации в стиле функции analogRead ( ) из опи­ санных вариантов нам понадобится совсем немного: режим непрерывного или од­ нократного запуска, смена каналов и дополнительно возможность менять источник опорного напряжения . Еще мы обсудим вариант с запуском прерывания готовности АЦП - он может пригодиться для удобного набора статистики без лишней нагруз­ ки на прерывания таймера. Прочие варианты мы оставим за кадром. И сначала, чтобы привыкнуть, попробуем использовать АЦП в самом простом варианте циф­ рового компаратора. П росте й шее использование АЦП Давайте на основе АЦП соорудим автомат для регулирования освещения - будем выключать лампочку, когда освещенность вырастает до определенной величины, и включать ее снова, когда освещенность падает. В общем-то ничего не стоит соору- 1 В книгах [6,7] в этом вопросе допущена неточность.

RkJQdWJsaXNoZXIy MTExODQxMg==