Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13
  1. #1
    Новичок
    Регистрация
    20.05.2010
    Возраст
    40
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Энкодер из мышки

    Подскажите пожалуйста, уж не знаю куда писать ещё. Имеется два двигателя, обороты которых нужно считывать оптическим энкодером (из механической мышки). Уже поставил усиливающие транзисторы, чтобы подтянуть логические уровни, вроде нормально всё. Но вот на программном уровне как-то слабо получается. micrios - глючит, pulseIn, как-то тоже....

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Энкодер из мышки

    Програмной реализации разницы нет между оптическим и механическим.
    Так что тебе сюда нужно заглянуть

  3. #3
    Новичок
    Регистрация
    20.05.2010
    Возраст
    40
    Сообщений
    4
    Вес репутации
    0

    Вопрос Re: Энкодер из мышки

    Прочитал ту ветку. Это не совсем то, что мне нужно. Такой энкодер я сделал с первого раза, с помощью функции debounce, очень удобно, без кондёров и ничего не глючило. Но моя задача сейчас замерить скорость вращения колеса датчика. Там частота импульсов порядка килогерца (может меньше), и мне хотелось бы получать значения длины имульса. Т.к. отслеживать скорость вращения нужно в реальном времени (а не считать количество импульсов за секунду, например)... Вот вопрос и встаёт, как получить длительность импульса, кроме как функцией pulseIn...

  4. #4
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Энкодер из мышки

    Используй аппаратное прерывание по входам D2 или D3 и функцию micros();
    Последний раз редактировалось Chip; 22.05.2010 в 01:44.

  5. #5
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    685

    По умолчанию Re: Энкодер из мышки

    а еще есть таймеры...
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

  6. #6
    Новичок
    Регистрация
    20.05.2010
    Возраст
    40
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Энкодер из мышки

    Прирывания и микросы уже пробовал. А можно про таймеры чутка подробнее? Я в описании не нашел делаю на дуино.

  7. #7
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    685

    По умолчанию Re: Энкодер из мышки

    а это если не на дуинном языке, а на С программировать, тогда можно по таймеру время засекать.
    сейчас гляну, что есть в дуине....
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

  8. #8
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    685

    По умолчанию Re: Энкодер из мышки

    ну и в чем проблема, если килогерц... то millis хотя для точности все же micros

    глобально
    miliss = 0x00;
    в прерывании
    delta = millis() - miliss;
    miliss = millis();

    дельта это время от прошлого прерывания до текущего в милисекундах, не считая первого, первое будет временем от запуска дуины до начала вращения энкодера.
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

  9. #9
    Новичок
    Регистрация
    20.05.2010
    Возраст
    40
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Энкодер из мышки

    Да, я примерно так себе это и представлял. В понедельник на работе поковыряюсь.
    З.Ы.
    Милисекунда, это жеж 1/1000 секунды, частота 1кГц это 1000 колебаний в секунду. Определенно надо делать на микросах. Единственное, я почитал, и там говорится, что микросы обнуляются каждые 70 секунд. Это нормально?

  10. #10
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    685

    По умолчанию Re: Энкодер из мышки

    у тебя дельта между соседними... единственно глюк может быть на первом замере, и на первом после обнуления, т.к. у тебя встретятся прошлая цыфра в 70сек и новая 0

    выход - не запариваться на кардуине, делать на "С", и таймер сбрасывать
    надо опытным путем определять, что успеет, что не успеет...
    Последний раз редактировалось (vS); 22.05.2010 в 18:24.
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •