Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
310 Часть 111. Практическое программирование микроконтроллеров АVR что порог был пересечен (вверх или вниз, в зависимости от текущего состояния), то выжидаем паузу 3 секунды и проверяем состояние опять. Если пересечение под твердилось, то переключаем светодиод на выходе и возвращаемся к отслеживанию. Паузу в 3 секунды по окончании отладки стоит в рабочем варианте программы уве личить до максимума, который позволяет трехбайтовая задержка, загрузив в макрос число $ FFFFFF, - при 1 МГц это более 80 секунд. Поскольку освещенность меняет ся медленно, то такая длительность будет в самый раз, чтобы отфильтровать слу чайные блики, засвечивающие датчик. Второй эшелон защиты от случайного срабатывания : большая величина гистерези са, которая здесь установлена равной 1 00 единиц кода- около 1 0% от диапазона АЦП. И сами величины порогов (500 и 400 единиц) и разность между ними, конеч но, придется подстраивать «по месту» . Я советую при настройке схемы сначала подобрать переменный резистор R2 так, чтобы при нужном уровне освещенности светодиод на выходе РВО переключался примерно в среднем положении его движ ка, и установить подстроечный («под отвертку») резистор подобранного номинала. На это время разницу между порогами переключения, которая у нас составляет примерно 1 0% от диапазона АЦП, можно уменьшить, оставив сами значения поро гов близкими к числу 500. В готовом изделии вместо светодиода, конечно, подключается какой-то исполни тельный механизм для управления осветительным прибором - в простейшем слу чае это реле, подключенное через транзисторный ключ. У меня подобное устройст во управляло включением вентиляторов солнечной сушилки, которые должны работать только при ярком солнце. Рекомендую подумать над алгоритмом, позво ляющим превратить выключатель в пропорциональный регулятор (для этого при дется обратиться к сведениям из разд. «Та йм еры врежиме ШИМ» главы 9), и затем пристроить это к автоматическому регулированию яркости светодиодных дисплеев по какой-нибудь из схем, приведенных в этой книге . Как видите, с самим АЦП тут все достаточно просто . И в дальнейшем вы увидите, что само по себе обращение с АЦП- не такой уж трудный предмет: куда сложнее будет правильно организовать обработку результатов. С хема измерени й с помощью АЦП Теперь поговорим на более актуальные темы - как с помощью АЦП организовать съем показаний аналоговых датчиков. Сначала остановимся на выборе контролле ра. Предположим, у нас имеется обычный датчик температуры типа ТМР36 в кор пусе ТО-92 с аналоговым сигналом на выходе . Сигнал нужно оцифровать и как-то выдать результат во внешний мир. Если требуется выводить полученное значение на индикацию, стоит использовать ATmega8535 , учитывая большое число его вы водов. Но, во-первых, не всегда требуется именно много выводов (в главе 13 мы рассмотрим управление индикацией по последовательному порту 1 2 С), во-вторых, не всегда вывод осуществляется именно на индикатор - вполне может быть, что вы посылаете измеренное значение в компьютер через последовательный порт, записываете на флешку или через передатчик отправляете в мировой эфир.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==