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

Глава 1 1 . Аналоговый компаратор и АЦП 307 дить такую схему на отдельном аналоговом компараторе (типа LМЗ 1 1 , например). Однако на контроллере - в сравнении с простым компаратором - мы сможем со­ орудить любой алгоритм, а для такой капризной величины, как освещенность, оп­ тимальный порядок надежной работы может оказаться довольно-таки заковыри­ стым. Освещенность мало того, что меняется крайне медленно, она еще и регуляр­ но колеблется в достаточно широких пределах, причем отклонения могут быть как долгие (вечернее солнце вдруг вышло из-за туч), так и относительно короткие (человек прошел мимо датчика, или в датчик попал блик от лобового стекла проез­ жающего автомобиля) . Применение Arduino для такой простой функциональности будет явно избыточ­ ным - конечно, тут сгодится любая самая простая «тинькю>, лишь бы в ней бьm встроенный АЦП (ATtiny l З в 8-выводном корпусе, например) . Но чтобы не отвле­ каться на обсуждение особенностей реализации АЦП еще и в этой группе контрол­ леров, смоделируем программу на обычном АTmega8 с тактированием «по умолча­ нию» 1 МГц (не забудьте установить опять «фьюзьш, как показано на рис. 5 . 8, если они у вас переустанавливались на время работы с таймерами). По тому же принципу строятся релейные или даже пропорциональные регуляторы любых величин - термостаты, например. Использовать для этой цели встроенный аналоговый компаратор, как мы уже говорили, неудобно: в нем нелегко ввести гис­ терезис (разность между порогами срабатывания «вверх» и «вниз»), что является обязательным атрибутом любой схемы регулирования . Для регулятора освещения гистерезис должен быть особенно велик из-за вероятности очень плавного, в тече­ ние часов, изменения освещенности в совокупности с возможностью ее временного возврата на прежний уровень . Поэтому мы привлечем АЦП, где порогами срабаты­ вания очень просто манипулировать, и, кроме того, введем задержку на переклю­ чение для фильтрации коротких бросков освещенности. Схема регулятора освещения приведена на рис . 1 1 .3 . Датчик освещенности - фо­ торезистор Ldr l . Его тип GL55 1 6 показан на схеме условно - сойдет любой фото­ резистор с величиной сопротивления примерно 1 0-20 кОм при 1 О люксах освещен­ ности, их продают в интернет-магазинах, торгующих аксессуарами для Arduino, по копейке пучок в базарный день. В любом случае резисторы делителя R2 и RЗ при­ дется подбирать по месту, в зависимости от конкретного экземпляра фоторезистора и, главное, от условий освещенности, при которых вы хотите, чтобы датчик сраба­ тывал . ПОДРОБНОСТИ В параметрах фоторезисторов приводится логарифмический показатель чувствитель­ ности у. Эта величина позволяет прикинуть , насколько изменится сопротивление фо­ торезистора при изменении освещенности в 1 0 раз по формуле: R 1 00/R 1 0 = 1 ov . Для обычных фоторезисторов у равен примерно 0,6--0 , 8 , т. е. изменение будет находиться в пределах � раз . Порог, при котором приходится включать освещение, составляет несколько десятков люкс (50 люкс - это примерно как на освещенной автостоянке ночью) , отсюда сопротивление фоторезистора, равное 1 0 кОм при 1 0 люксах, вблизи порога срабатывания окажется равной нескольким килоомам. Эта величина находится в рамках, допустимых для выходного сопротивления источника сигнала АЦП (1 О кОм) , и не может послужить источником дополнительных ошибок . Учитывая еще исключи­ тельно медленно меняющийся уровень освещенности , можно позволить себе не осо­ бенно обращать внимание на тип и параметры фоторезистора.

RkJQdWJsaXNoZXIy MTExODQxMg==