-
Энкодер из мышки
Подскажите пожалуйста, уж не знаю куда писать ещё. Имеется два двигателя, обороты которых нужно считывать оптическим энкодером (из механической мышки). Уже поставил усиливающие транзисторы, чтобы подтянуть логические уровни, вроде нормально всё. Но вот на программном уровне как-то слабо получается. micrios - глючит, pulseIn, как-то тоже.... :confused:
-
Re: Энкодер из мышки
Програмной реализации разницы нет между оптическим и механическим.
Так что тебе сюда нужно заглянуть
-
Re: Энкодер из мышки
Прочитал ту ветку. Это не совсем то, что мне нужно. :( Такой энкодер я сделал с первого раза, с помощью функции debounce, очень удобно, без кондёров и ничего не глючило. Но моя задача сейчас замерить скорость вращения колеса датчика. Там частота импульсов порядка килогерца (может меньше), и мне хотелось бы получать значения длины имульса. Т.к. отслеживать скорость вращения нужно в реальном времени (а не считать количество импульсов за секунду, например)... Вот вопрос и встаёт, как получить длительность импульса, кроме как функцией pulseIn...
-
Re: Энкодер из мышки
Используй аппаратное прерывание по входам D2 или D3 и функцию micros();
-
Re: Энкодер из мышки
-
Re: Энкодер из мышки
Прирывания и микросы уже пробовал. А можно про таймеры чутка подробнее? Я в описании не нашел :( делаю на дуино.
-
Re: Энкодер из мышки
а это если не на дуинном языке, а на С программировать, тогда можно по таймеру время засекать.
сейчас гляну, что есть в дуине....
-
Re: Энкодер из мышки
ну и в чем проблема, если килогерц... то millis хотя для точности все же micros
глобально
miliss = 0x00;
в прерывании
delta = millis() - miliss;
miliss = millis();
дельта это время от прошлого прерывания до текущего в милисекундах, не считая первого, первое будет временем от запуска дуины до начала вращения энкодера.
-
Re: Энкодер из мышки
Да, я примерно так себе это и представлял. В понедельник на работе поковыряюсь.
З.Ы.
Милисекунда, это жеж 1/1000 секунды, частота 1кГц это 1000 колебаний в секунду. Определенно надо делать на микросах. Единственное, я почитал, и там говорится, что микросы обнуляются каждые 70 секунд. Это нормально?
-
Re: Энкодер из мышки
у тебя дельта между соседними... единственно глюк может быть на первом замере, и на первом после обнуления, т.к. у тебя встретятся прошлая цыфра в 70сек и новая 0
выход - не запариваться на кардуине, делать на "С", и таймер сбрасывать
надо опытным путем определять, что успеет, что не успеет...