Оптический энкодер представляет собой инфракрасный датчик, который способен определять положение вала двигателя. Сенсор широко используется в робототехнике и элекронике для определения и управления скоростью вращения мотора в шасси, принтерах, станках с ЧПУ и т.д.
Датчик состоит из отпопары: инфракрасных светодиода и фотодиода, а напротив оптопары на валу двигателя размещается диск с черными и белыми секторами. Инфракрасный свтетодиод излучает луч света, далее он отражается от диска в фото-приемник, который измеряет интенсивность отраженного луча. Как известно, черный цвет поглощает, таким образом от черной поверхности интенсивность будет меньше, чем от светлой, зная этот факт энкодер делает вывод о том, что цвет изменился, соответственно, вал двигателя повернулся и сектор прокруитлся вместе с ним.
Для удобства и простоты использования мы разместили всю схему с необходимой обвязкой на одной плате, к модулю необходимо подключить только питание и выводы контроллера при помощи четырехконтактного разъема.
Получаемая интенсивность поступает с датчика на аналоговый выход. Кроме оптопары на плате установлен компаратор, который оценивает интенсивность и выдает цифровой сигнал при достижении определенного порога срабатывания.
Напряжение питания: 5 В
Габариты: 28 × 24 мм
Подключение модуля осуществляется с помощью разъема XH-2.54-4P, выводы которого имеют следующие назначения:
VCC - питание
D0 - подключается к цифровому контакту контроллера
A0 - не задействован (NC)
GND - земля (общий)
Чтобы начать работу с датчиком его необходимо подключить к микроконтроллеру по схеме ниже. Для быстрого и надежного подключения используйте QuatroPort A050.
Далее в микроконтроллер необходимо загрузить следующую программу.
#define DIG 11 #define ANALOG A3 int dig = 0; void setup() { pinMode(DIG, INPUT); pinMode(ANALOG, INPUT); Serial.begin(9600); } void loop() { dig = digitalRead(DIG); Serial.print("A:"); Serial.print(analogRead(ANALOG)); Serial.print(", D:"); Serial.println(dig); delay(100); }
Теперь если открыть монитор порта можно заметить, что когда датчик находится напротив черного сектора, на аналоговый порт приходят значения около 738 и чем темнее поверхность - тем ближе к 1023, а на цифровой порт приходит 0. Обратная ситуация в случае, когда датчик находится напротив белого сектора: аналоговые значения стремятся к нулю (значения около 230), а цифровой порт выдает 1. Чем чаще меняются нули и единицы на цифровом выходе - тем быстрее вращается вал мотора.