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

Глава 1 1 . Аналоговый компаратор и АЦП 319 датчики - отдельная тема и не всегда про АЦП. В градуировочном уравнении у = а0 + а1х применительно к АЦП под х всегда имеется в виду величина получен­ ного кода, а вот у будет иметь размерность физической величины, но подогнанной под удобный масштаб для вывода, например, на индикацию. Имея такие коэффициенты, несложно на основе материала разд. « Операции с веще­ ственными числами» главы 8 построить алгоритмы вычисления физических вели­ чин. Все физические величины следует представлять в целом виде с нужным коли­ чеством разрядов, отбрасывая запятую, которая при Индикации устанавливается на своем месте отдельными методами, - чаще всего ее стараются просто зафиксиро­ вать на определенном разряде и засвечивают «навсегда» простым подключением к питанию. Все действия следует производить с избыточным числом разрядов, что­ бы не терять в точности: в конце оставляете ровно столько, сколько нужно для ото­ бражения на индикаторе, не заморачиваясь процедурами правильного округления . Заметим еще, что калибровку мы проводим с обычными физическими величинами, когда, например, температура имеет запятую («23 , 1 »), но нам нужно, чтобы в ре­ зультате получалось целое число («23 1 »). Для этого проще всего при расчете гра­ дуировочных коэффициентов указать температуру в нужном виде (без запятой) или потом коэффициент а1 умножить на 1 О. Полученный коэффициент может иметь все-таки недостаточное число целых разрядов, чтобы можно было производить действия в области целых чисел, потому следует сразу применить прием, описан­ ный в разд. « Операции с вещественными числами» главы 8, и записать в контрол­ лер коэффициент а1 , уже умноженный на нужное двоичное число. О представлении нулевого коэффициента а0 мы поговорим далее. После отработки программы и схемы надо провести индивидуальную калибровку, подправив коэффициенты «по месту» . Иногда это очень непростое занятие: если температуру несложно откалибровать по положенному рядом термометру, а атмо­ сферное давление _:._ просто по сведениям из Интернета о погоде для вашего рай­ она, то средства калибровки влажности у рядового пользователя отсутствуют. Влажность в помещении будет разная при открытом или закрытом окне, над бата­ рей отопления и под ней, при переносе на пол с поверхности стола, на улице - меняется при выглянувшем солнце или на ветру и т. д. Рецептов тут нет - разве что постараться купить датчик, которому можно верить без калибровки. Бытовые метеостанции тут не помогут - они для всех измеряемых параметров требуют калибровки, а для влажности особенно: совершенно не 1:1сключительный случай, когда две бытовых метеостанции, поставленные рядом, показывают влажность с разницей в 1 0%. Для упрощения расчетов при калибровке можно временно вывести на дисплей зна­ чение кода АЦП вместо физической величины - так будет гораздо проще пере­ считать коэффициенты. Для расчета, как уже говорилось, удобно пользоваться про­ граммой RegStat, но можно и рассчитать новые коэффициенты вручную по двум точкам. Обсудим также тему представления отрицательных значений, которая в первую очередь касается температуры. Программист бы не задумался о том, как представ­ лять отрицательные числа на дисплее : помня о договоренности, согласно которой

RkJQdWJsaXNoZXIy MTExODQxMg==