Датчик оптический основан на прерывании светового луча между его источником и примеником, и изменением на этом основании логического уровня на его выходе. Данный датчик широко применяется в определении скорости вращения двигателей, подсчете импульсов в счетчиках или подобных устройствах и в качестве концевого датчика ограничения движения.
Датчик позволяет получать информацию как напрямую вывод AO и его дальнейшей обработке в контроллере, так и с цифрового вывода компаратора на микросхеме LM393, уже очищенный и максимально четкий сигнал с повышенным током более 15 мА вывод DO. Вывод AO снабжен помехозащищающим конденсатором емкостью 0,1 мкФ, позволяющим гасить высокочастотные колебания в цепи, которые вполне могут возникнуть в подключаемых проводах, а так же этот конденсатор защищает и компаратор от ложных срабатываний. На выводах AO и DO уже установлены подтягивающие резисторы номиналом 10 кОм, так что Вы можете не добавлять их в схему. Так же на модуле предусмотрена светодиодная индикация подачи питания и срабатывания компаратора.
Основные характеристики оптического датчика:
Скетч для примерного понимания, как работать с данным датчиком.
Для работы с датчиком, лучше всего использовать стандартные аппаратные прерывания в контролере ARDUINO.
#define LED 10 //Объявили программе, что светодиод у нас подключен к выводу 10 на ARDUINO и дали ему имя LED
#define SENSOR 2 //Объявили, что датчик подключен к выводу 2 на ARDUINO и дали ему имя SENSOR
volatile byte ledState = LOW; // создали переменную которая byte, что значит хранит только 0 или 1 и которая volatile - в прерываниях рекомендуется все
//переменные так вызывать с параметром volatile для корректной работы
void setup() {
pinMode(LED, OUTPUT); // Как выше обозначили ↑ LED то есть вывод 10 у нас это выход
pinMode(SENSOR, INPUT); // А вывод SENSOR то есть 2 это вход
attachInterrupt(digitalPinToInterrupt(SENSOR), blinkLed, RISING); // Сообщили контроллеру, что мы используем прерывания и следим за ножкой 2, если
//сменяется 0 на 1 (RISING) то сразу всё прекратить и выполнить то что мы указали в подпрограмме blinkLed
}
void loop() {
// Тут можно обработать срабатывание нашего датчика и как то реагировать, двинуть мотором например или подать какой то звук....
}
void blinkLed() { // Вот она та самая подпрограмма, которая будет выполнена по прерыванию, по сигналу на ноге 2
ledState = !ledState; //Меняем на обратное состояние нашей переменной - была 0 станет 1 и наоборот.
digitalWrite(LED, ledState); // Ну и принудительно меняем состояние вывода 2 - и смотрим как диод то загорается то гаснет.
}
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru