Модуль предназначен для обнаружения прерывания светового луча, и передачи соответствующей информации контроллеру для дальнейшей обработки или исполнительному механизму. Основное преимущество использование данного модуля - это отсутствие механического размыкания, что дает почти неисчерпаемый ресурс, и минимизирует поломки и техническое обслуживание. Так же отсутствие механического контакта отменяет дребезг, побочный эффект любых механических кнопок, но всё равно при написании своих программ мы рекомендуем использовать минимальную задержку.
Основные параметры модуля KY-010.
Напряжение питания: 5 В.
Датчик света: фототранзистор
Световой диапазон: ИК
Габариты: 19,1x15,2x6.6 мм
Принципиальная электрическая схема.
Резистор R1 ограничивает рабочий ток светодиода датчика. Резистор R2 подтягивающий, он создает положительный потенциал на выводе S когда транзистор закрыт, и не создает замыкания к выводу +5 В при открытом транзисторе. Итак, при включении модуля и подаче питания - на светодиод подается напряжение, он начинает излучать свет, фототранзистор освещается этим светом и открывается, то есть по сути прижимает вывод S к минусу питания - что свидетельствует о наличии логического 0 на выводе S. Далее мы создали препятствие между светодиодом и фототранзистором любым не прозрачным предметом. Фототранзистор закрывается его сопротивление становится огромным - и на выводе S устанавливается потенциал + 5 В - это логическая 1.
Давайте попробуем подключить KY-010 к Ардуино НАНО проверить всё на деле.
Я использовал при программировании программу BascomAVR и программатор USBASP подключенный к порту ISP на плате НАНО.
Привожу простейший код для программы BaskomAVR по подключению KY-010
$regfile = "m328pdef.dat" ' Указываем наш контроллер, в НАНО он именно такой установлен
$crystal = 16000000 ' Резонатор тоже на плате есть
$hwstack = 40
$swstack = 16
$framesize = 32
Config Portb.5 = Output ' Указываем что на плате NANO вывод D13(он же PB5 контроллера) работает как выход (на нем и светодиод есть, мы визуально сможем видеть всё)
Config Int0 = Falling 'Настраиваем прерывание INT0 на отлов падения импульса из единички в ноль, В моем случае свет перекрыт - я открываю его - а потом снова закрываю
On Int0 Action 'В случае прерывания - идем в Action и там что то делаем
Enable Interrupts ' Запускаем прерывания в нашей программе
Enable Int0 ' И конкретно INT0 активируем
Do
' Это основная программа - мы тут ничего не делаем, всё обработаем в прерывании
Loop
Action: ' Это наша подпрограмма которая выполнится в случае прерывания
Waitms 20 'Добавил небольшую задержку, чтобы переходные процессы в транзисторе пришли в норму, но и без задержки тоже нормально работает
Toggle Portb.5 ' Тут просто меняем состояние вывода PB5 микроконтроллера(Он же D13 на плате NANO указан)
Return ' закончили дела - возвращаемся в основную программу, что то там делаем
End
Данный пример был собран и полностью опробован на практике, очень надеюсь и у Вас всё получится. Полный проект для BascomAVR вы можете скачать по этой ссылке - BascomAVR проект для работы с KY-010
Так же прилагаю осциллограммы переходных процессов снятые с выхода датчика с контакта S. Как вы можете видеть - дребезга нет, но при 10мс становится видно что переходной процесс имеется, именно поэтому я всё таки добавил небольшую задержу в моем коде, чтобы переходные процессы не влияли на стабильность.
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru