Для работы с прерываниями выберите пины, поддерживающие INT0 или INT1 – на большинстве версий это D2 и D3. Это снизит вероятность пропуска импульсов при быстром вращении. Код обработки должен учитывать направление: сравнение текущего состояния A с предыдущим значением B определит движение.
Пример схемы: сигнальные линии через подтягивающие резисторы 10 кОм к +5V. Если помехи вызывают ложные срабатывания, добавьте керамические конденсаторы 0.1 мкФ между каждым входом и землей.
Используйте библиотеку Encoder для упрощения обработки. Инициализация: Encoder myEnc(2, 3);. Метод read() возвращает текущее положение, а write(0) сбрасывает счетчик.
Разбор контактов и соединение с микроконтроллером
Контакт | Функция | Пин Arduino |
---|---|---|
A | Фаза импульсов | D2 |
B | Сдвинутая фаза | D3 |
COM | Общий провод | GND |
Пример кода для обработки сигналов
Используйте прерывания для точного считывания изменений положения. Настройте входы INPUT_PULLUP, если резисторы не установлены на плате:
const int pinA = 2; const int pinB = 3; volatile int counter = 0; void setup() { pinMode(pinA, INPUT_PULLUP); pinMode(pinB, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(pinA), readEncoder, CHANGE); } void readEncoder() { if (digitalRead(pinA) == digitalRead(pinB)) { counter++; } else { counter--; } }
Определение контактов: A, B и общий провод
Как отличить общий контакт
Проверка без приборов
Соединение поворотного датчика с микроконтроллером через резисторы
- CLK → Цифровой пин 2 (прерывание INT0)
- DT → Цифровой пин 4
- + → 5V
- GND → Земля
Пример кода для обработки сигналов:
const int pinCLK = 2;
const int pinDT = 4;
volatile int counter = 0;
void setup() {
pinMode(pinCLK, INPUT_PULLUP);
pinMode(pinDT, INPUT_PULLUP);
attachInterrupt(0, countPulses, CHANGE);
}
void countPulses() {
if (digitalRead(pinCLK) == digitalRead(pinDT)) {
counter++;
} else {
counter--;
}
}
При монтаже избегайте длинных проводов – наводки искажают импульсы. Для помехозащищённых цепей добавьте керамические конденсаторы 0.1 мкФ между каждым сигнальным проводом и землёй.
Как определить назначение контактов перед соединением
Методы идентификации
2. Определение фаз: оставшиеся два контакта – сигнальные. При вращении по часовой стрелке один из них срабатывает раньше, против – позже. Зафиксируйте порядок для корректной обработки в коде.
Проверка без приборов
Подсоедините устройство к плате через резисторы 10 кОм. Загрузите скетч с чтением сигналов и вращайте вал. Наблюдайте за изменением значений в мониторе порта – это поможет определить логику работы.