Как считывать обратную связь с оптического датчика

Оптический датчик

Оптические датчики при использовании с линейные приводы,функция очень похожа на датчики холла, за исключением того, что они обнаруживают свет вместо магнитных полей [1]. Оптические датчики работают с использованием света от светодиода или другого источника света, который проходит через диск кодирующего устройства. Этот диск кодировщика имеет прорези, чтобы свет периодически проходил через него. На другой стороне диска находится фотодетектор, который обнаруживает свет, когда он проходит через прорези в диске, и создает выходной сигнал [1]. Когда привод движется, диск энкодера вращается, и свет обнаруживается фотодетектором, который создает прямоугольную волну импульсов напряжения. Эти импульсы можно использовать аналогично импульсам датчика Холла, чтобы определить, насколько далеко сдвинулся привод.

Оптический датчик

Позиционная обратная связь от оптического датчика

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

Как и датчики на эффекте Холла, оптические датчики будут иметь 3 контакта для подключения; один - входное напряжение, другой - заземление и, наконец, один - выходной сигнал. Чтобы использовать импульсы выходного сигнала для позиционной обратной связи, вам понадобится микроконтроллер для подсчета произведенных импульсов. Вы захотите использовать внешние контакты прерывания вашего микроконтроллера для точного подсчета этих импульсов. Поскольку внешние прерывания запускаются изменением напряжения, их можно использовать для обнаружения каждого импульса по мере их возникновения. После того, как вы настроили прерывание в коде вашего микроконтроллера, вам нужно будет настроить процедуру обслуживания прерывания, которая считает импульсы по мере их возникновения. Функция countSteps () в приведенном ниже примере кода используется для подсчета количества импульсов от оптического датчика.

Чтобы использовать эти импульсы для определения позиционного значения, вам необходимо знать предыдущее положение линейного привода и направление, в котором движется линейный привод. Управляя тем, как движется ваш линейный привод, вы можете просто настроить переменную для отслеживания направления привода в вашем коде. Эта переменная может использоваться, чтобы определить, нужно ли вам прибавлять или вычитать импульсы из вашего предыдущего положения. После того, как вы обновите свое местоположение, вам нужно будет сбросить счетчик импульсов на ноль. В приведенном ниже примере кода показана функция, которая обновляет положение в зависимости от количества подсчитанных импульсов. Как только у вас есть положение в импульсах, вы можете преобразовать их в дюймы, используя спецификацию импульсов на дюйм вашего линейного привода.

Перемещение вашего линейного привода в исходное положение

Чтобы точно использовать обратную связь по положению от оптического датчика, вам необходимо всегда знать начальное положение линейного привода. Хотя, когда вы впервые включаете свою систему, ваш микроконтроллер не сможет определить, выдвинут ли привод или нет. Для этого вам потребуется установить линейный привод в известное положение. Чтобы домой ваш линейный привод, вам нужно будет привести его в известное положение, например, полностью втянутый. Используя приведенный ниже код Arduino в качестве примера, мы настроили цикл WHILE, который будет направлять наш линейный привод к нашему известному положению. В этом примере мы узнаем, что находимся в известной нам позиции, проверяя, было ли запущено прерывание, проверяя, изменилась ли переменная steps. Нам также необходимо убедиться, что прошло достаточно времени, чтобы ожидать срабатывания прерывания, для этого мы используем функцию millis () и сравниваем ее с предыдущей отметкой времени. Как только мы определили, что линейный привод находится в нашем исходном положении, мы останавливаем привод, сбрасываем переменную шагов и выходим из цикла WHILE.

Работа с ложными триггерами

Хотя оптические датчики не так чувствительны к электрическому шуму, как потенциометры, электрические помехи и дребезг переключателя все же могут влиять на выходной сигнал и вызывать подсчет ложных импульсов. Несколько дополнительных импульсов не сильно повлияют на позиционирование, но со временем это может стать более серьезной проблемой. Вы можете бороться с этими проблемами, используя внутренний таймер для фильтрации ложных срабатываний. Поскольку вы можете определить ожидаемую частоту обнаружения новых импульсов, вы можете отфильтровать случаи, когда прерывание было вызвано шумом. В примере кода ниже trigDelay - это временная задержка между каждым импульсом. Если прерывание было инициировано до этой задержки, то импульс не будет засчитан. Продолжительность этой задержки будет варьироваться в зависимости от вашего приложения, но если она слишком короткая, она не отфильтрует шум должным образом, а если она слишком длинная, то будут пропущены фактические импульсы от оптического датчика.

Другой способ борьбы с ложными срабатываниями - корректировка значения положения каждый раз, когда привод достигает известного положения. Как и в случае возврата в исходное положение линейного привода, если вы привели линейный привод в полностью втянутое или выдвинутое положение или если вы используете внешние концевые выключатели, вы будете знать, сколько импульсов требуется для достижения этого положения. Затем вы можете просто скорректировать позиционное значение, используя это значение, когда вы достигнете этого известного положения. В приведенном ниже примере кода это сделано для полностью выдвинутых и полностью убранных позиций. Этот метод обеспечивает практическое решение для обеспечения точности вашего позиционного значения.

Резюме

Оптические датчики, используемые для позиционной обратной связи, обеспечивают большую точность и разрешение по сравнению с датчиками и потенциометрами на эффекте Холла, имея при этом те же сильные и слабые стороны, что и датчики на эффекте Холла. Хотя они не измеряют абсолютное положение и требуют известного начального положения для получения позиционного значения, большое количество импульсов на дюйм обеспечивает надежность позиционирования и гарантирует одновременное движение нескольких линейных приводов. Используя наши FA-SYNC-X контроллер привода или tчерез дополнительный код, вы даже можете обеспечить синхронное движение приводов независимо от нагрузки.

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

 

[1] Пашотта, Р. Статья об оптических датчиках. Полученное из:https://www.rp-photonics.com/optical_sensors.html

Tags:

Share this article

серия обогащения

Нужна помощь в поиске правильного привода?

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