Самодельный энкодер на датчиках FC-33
- Войдите на сайт для отправки комментариев
Втр, 15/05/2018 - 12:44
Доброго всем дня!
Смастерил вот такую хреновину (фото ниже). Она расположена на валу шторы и должна считать количество оборотов (вернее каждую восьмую часть оборота) и понимать направление вращения вала. Датчики - FC-33.
Например в крайнем верхнем положении (штора поднята) счетчик - 0, когда штора опускается счетчик плюсует обороты, когда поднимается минусует до нуля и останавливается.
Нашел пример кода, немного доработал, но что-то не получается (с программированием пока ещё беда))
int sensor01; int sensor02; int turn; // целый оборот вала int stepOld; int step; long PulseCount; #define SENSOR_A 3 #define SENSOR_B 2 void checkState() { sensor01 = digitalRead(SENSOR_A); // 0 - засвет горит светодиод 1 - закрыт не горит sensor02 = digitalRead(SENSOR_B); if (sensor01 == 1 && sensor02 == 1) { step = 0; if (stepOld == 1) { PulseCount++; } if (stepOld == 2) { PulseCount--; } stepOld = 0; } if (sensor01 == 1 && sensor02 == 0) { step = 1; if (stepOld == 1) { PulseCount++; } if (stepOld == 0) { PulseCount--; } stepOld = 1; } if (sensor01 == 0 && sensor02 == 1) { step = 2; if (stepOld == 2) { PulseCount++; } if (stepOld == 1) { PulseCount--; } stepOld = 2; } } void setup() { attachInterrupt(0, checkState, CHANGE); attachInterrupt(1, checkState, CHANGE); PulseCount = 0; Serial.begin(115200); } void loop() { turn = (PulseCount / 8); /* if (PulseCount > -1) { } if (PulseCount < 10 && PulseCount > -10) { } if (PulseCount < 100 && PulseCount > -100) { } */ Serial.print("stepOld: "); Serial.println(stepOld); Serial.print("turn: "); Serial.println(turn); Serial.print("step: "); Serial.println(step); Serial.print("sensor01: "); Serial.println(sensor01); Serial.print("sensor02: "); Serial.println(sensor02); Serial.print("PulseCount: "); Serial.println(PulseCount); }
Обороты считает, но в любом направлении и бывает проскакиват парочку,а надо как писал выше.
Нужна ваша помощь или может где-то видели готовый пример
Нужна ваша помощь или может где-то видели готовый пример
Нужна ваша помощь или может где-то видели готовый пример
А нужна ли эта помощь в вашем баловстве. Баловаться можно и без помогальщиков.
А нужна ли эта помощь в вашем баловстве. Баловаться можно и без помогальщиков.
Спасибо, переделал диск - всё работает.
Ещё раз спасибо.
На ардуино нано всё работало прекрасно, потставил дома на место, там NodeMCU, появились перезагрузки NodeMCU.
По питанию должно быть всё номально 2,2А блок. Сбросы именно при работе, т.е. штора начала опускаться, секунд 5-10 - стоп, перезагрузка, потом опять работает, откидывал пины на прерывание - тогда все нормально. Подскажите, в чём может быть дело?