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