Подскажите вот как логику лучше построить Есть два индуционных датчика Состояние у них, когда рядом метал 1 если нет то 0 На диске, который на валу, есть прорезь Впрочем вот так они и работают Задача определить вращение вала По часовой и против часовой У кого какие мысли по этому поводу

Комментарии: 33

  1. Konstantin

    Как это в любом энкодере делают

    • Egor

      Я думаю так Если вращение по часовой: Допустим первый это нижний датчик Второй это тот что выше Оба датчика счас в 1 Диск вращается Первый в 0 второй в 1 потом Первый в 1 второй в 1 потом Первый в 1 второй в 0 Комбинация 01 11 10 Это и есть комбинация для вращенич по часовой стрелке Ну и как то счас надо записать состания датчико в массив что ли и сравнивать?

      • Alexander

        а если отверстия насверлить с переменным шагом?

        • Evgeniy

          Что это даст?

          • Egor

            Через время наверно сранивнать как то как я понял

          • Alexander

            в одну сторону расстояние между импульсами увеличивается, в другую - уменьшается

            • Evgeniy

              Я бы просто еще один датчик добавил. Если после верхнего размыкается левый, то против, если правый, то по. В противном случае по двум датчикам надо к времени привязываться Потому что после верхнего левый разомкнется в любом случае, в какую сторону ни крути. Только если против часовой то он разомкнется быстрее

              • Egor

                Так а сравнивать массив состояний двух датчиков не прокатит такое?

                • Evgeniy

                  Этот массив будет в обоих случаях вращения. Только с разной задержкой по времени

  2. Jury

    Первый датчик поднимает бит, второй сбрасывает. Далее в момент, когда есть сигналы от обоих датчиков проверяете этот бит. Если он есть - вращение в одну сторону, если нет - в другую. Маленьким куском кода отдельно контролиреуете, что врашение в принципе есть.

    • Evgeniy

      Можно опытным путем вычислить время, через которое после одного размыкается другой, если еще и скорость регулируется, то пропорцию составить, больше скорость меньше задержка. Если условие выполняется, что за выделенное время после левого датчика правый датчик размыкается, то понимаем что вращение по часовой. Если таймер кончился а датчик не разомкнулся, значит против часовой крутится. Таймер сбрасываем, ждем размыкания левого, запускаем таймер, и так по кругу Так после первого второй и так будет размыкаться, в какую сторону ни крути

      • Jury

        нет. Фронт первого датчика установит бит. Фронт второго сбросит. Если вращать в другую сторону, то сначала сброс, потом установка. Контроль бита после контроля фронта.

        • Evgeniy

          Ну и он так же будет работать. Попробуйте визуализировать. По видео не понятно, при кручении по часовой, левый успевает замкнуться или нет? До размыкания верхнего

          • Alexander

            переменный шаг надежнее, а при фиксации скачка будете знать, что оборот прошел

          • Egor

            Да, успевает

            • Evgeniy

              Ну тогда только таймер, потому что при кручении в любую сторону один сначала размыкается, потом замыкается. Следом за ним другой размыкается-замыкается. Следовательно если интервал пульсации больше - кручение против часовой, если интервал маленький - то по часовой

      • Timofey

        Разница во времени сколько будет установлен бит. По сути это rs триггер и таймер

        • Evgeniy

          Ну так про таймер вы не говорили, а я как раз и предлагал привязаться к таймеру

  3. Yuriy

    Рассчитывается математически через стробирующий импульс. То есть направление фазы

  4. Denis

    http://easyelectronics.ru/avr-uchebnyj-kurs-inkrementalnyj-enkoder.html В статье приведен код автомата для определения вращения энкодера.

    • Egor

      Спасибо, почитаю

  5. Sam

    50 гц частота вращения будет. То есть датчик должен быть шустрее этой частоты. 50гц датчики я пока в руках не держал. Самые медленные были на 100 гц У вас там хай спид счетчика нет что ли 32 битного? Со счетом вверх или вниз

  6. Dmitry

    смотри просто как импульсы идут на какой первее приходит 1 так и направление будет в сторону него или наоборот

    • Evgeniy

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

  7. Sam

    Вот моя реализация счетчика импульсов оптического энкодера. Срабатывание прерывания - при любом изменении сигнала. У вас там тоже самое

  8. Viktor

    Мне кажется можно напрямую на HSC входы на 1200 контроллер подключить и соответственно настроить. Я так вижу, что в режиме энкодера всё должно взлететь без танцев с бубном. Бонусом ещё и скорость будете мерить )

  9. Rustem

    А в плк нет готового модуля энкодер? Он сам все и сделает. А так фронты надо ловить задние и передние. Кто из них раньше ловится, туда и направление. Ну и скорее всего в прерываниях это делается...

    • Viktor

      Есть HSC, о котором я писал выше

      • Rustem

        Так hsc сам все и высчитает, нет? Вроде он для подобных вещей норм работает.

  10. Andrey

    Цикл сработки надо анализировать. Если первый левый датчик срабатывает, то влево. Если правый, то вправо. Или наоборот. Между сработками длинная пауза, между датиками короткая. Или вообще, если два датчика отключено, начало цикла. Там же сектор вырезан.

    • Viktor

      Если и пытаться делать без аппаратных средств, то только с фикс прерыванием и причем таким способом как на картинке

  11. Aleksandr

    Думаю можно по триггеру нижнего фронта датчика #1 проверять состояние датчика #2. По идее все будет работать.

Не нашли ответ?

Вам также может быть интересно

Вместо микроскопа пока он в пути пользуюсь камерой телефона которая крепится на лампе, в лампе стоит лупа 10 диоптрий В итоге... Читать далее