Счетчик оборотов шпинделя на ИК-сенсоре

515Недавно собрал новый станок ЧПУ для сверления и гравировки печатных плат, корпусов и прочих мелочей.

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

Данный модуль применяется в основном в ардуинщиками в роботостроительстве как ИК датчик препятствия. Представляет маленькую очень бюджетную платку (особенно если покупать партиями штук по 10)

400

Схема у этого сенсора очень простая

%d1%81%d1%85%d0%b5%d0%bc%d0%b0-%d1%81%d0%b5%d0%bd%d1%81%d0%be%d1%80%d0%b0

В основе лежит ИК пара диод-транзистор. Что вроде L-53P3C/L-53F3C работающие в диапазоне 940нм
Компаратор LM393 сравнивает уровень фоторанзистора с уровнем, выставляемым подстроечным резистором.
Подцепил к валу шпинделя кусочек фольги, поднес сенсор к валу, покрутил подстроечник — модуль стал моргать светодиодом в так вращения.

405

Поковырявшись в своей барахолке нашел ATmega328 в DIP корпусе (писал по ним статью) и четырехразрядный семисегментный индикатор
Максимальная скорость вращения у мотора 12000RPM и лучше было бы применить 5-разрядный индикатор, но будем работать с чем имеем
Накидал такую схему

%d1%81%d1%85%d0%b5%d0%bc%d0%b0-mega328

Порядок подключения выводов индикатора к микроконтроллеру значения не имеет (так как настраивается в программе) и обусловлен исключительно из удобства проектирования печатной платы

%d0%b1%d0%b5%d0%b7%d1%8b%d0%bc%d1%8f%d0%bd%d0%bd%d1%8b%d0%b9

«Квадратный» дизайн платы потому что на данном этапе я осваивал изготовление печатных плат на станке ЧПУ
Закругленные полигоны сложнее, а главное, дольше выбирать гравировкой.
Основным достоинством изготовления плат на станке является то, что весь процесс происходит не отрывая зада от кресла. С покупкой ламинатора я отказался от этого метода, оставив для станка сверление отверстий и обрезку плат.
Итак гравируем, сверлим, режем

100

102

Паяем плату и можно приступать к отладке программы

200

Для работы индикатора применяется простая и удобная библиотека SevSeg, позволяющая подключать индикатор к каким угодно выводам МК, применять индикаторы как с общим катодом, так и анодом да еще и яркостью управлять.
Для измерения частоты попробовал библиотеку FreqMeasur. МК с ней отлично мерит сигнал с генератора от 10 до 200Гц (а больше мне и не нужно)

401 402

А вот когда на вход контроллера подал с сигнал с сенсора, результат получился плачевным.
Частота прыгала как ненормальная. Виной этому оказался «дребезг» сигнала с оптического датчика. Фольга давала массу помех. Попытка настроить сигнал подстроечником или заменить кусочек фольки на другой не дали ощутимого результата.
Тогда я решил давить «дребезг» программно. Осциллограф показал, что помехами являются импульсы в 0.3 — 1 мкс, тогда как сигнал — это импульсы 5мс (При частоте 12000RPM) и больше.

В результате родилась такая программка с подавлением помех длительностью менее 2мкс

Программа показала 100% результат с тестового генератора. При включенном моторе с сенсора показывались стабильные обороты, которые хорошо коррелировали с режимом работы мотора. На том и остановимся

Корпус

Корпус делаю на станочке из обрезков ПВХ пластика 3мм

306301302311305304

Еще одна проблема нартсовалась при выборе места установки счетчика на станок.
В длинных проводах наводились сильные помехи от мотора и БП и индикатор, отлично работавший «на коленках» никак не хотел работать на станке. В результате смонтировал контроллер в непосредственной близости от сенсора и запитал его через импульсный DC-DC преобразователь от 24В. (Напряжения для шаговиков, подсветки, вентиляторов охлаждения).

602

601

Так мой новый станочек обзавелся счетчиком оборотов шпинделя. индикаторы К слову, данный измеритель должен практически без изменения схемы и программы заработать и с «кошерным» датчиком холла и магнитиком на валу.

Как работает станок с датчиком можно посмотреть здесь

Кот за любой кипишь кроме голодовки )))

%d1%811

Вы можете оставить отзыв или трекбек со своего сайта.

14 комментариев на «Счетчик оборотов шпинделя на ИК-сенсоре»

  1. Фрол:

    Дуб дубом я в программировании, не могли бы Вы переделать программу под индикатор 1602?

  2. Владимир:

    В 1995 дребезг можно было убрать обычным RC фильтром низкой частоты, частота регулируется подстроечником в цепи фильтра.

  3. Владимир:

    Вместо фольги можно белую пленку самоклейку приклеить, до этого нанести на нее 6 черных полос, а далее достаточно подключить частотомер
    И еще! от регулятора оборотов выходит не непрерывный а широтноимпульсный сигнал, можно на выходе поставить преобразователь частота — напряжение и снимать обороты обычным мультиметром

  4. Григорий:

    Зачем нужен резистор подтяжки и его номинал D5 на +, почему его нет в схеме?
    Я использовал дисплей с общим анодом(ca56-21srwa), распиновка точно такая как у вашего. Есть проблема с мерцанием дисплея и не верные показания(не подскажите куда смотреть?).

  5. Сергей:

    А можно выложить хекс и фьюзы для повторения?

  6. Сергей:

    Никто не хочет поделиться секретными материалами. Жаль, хотелось бы собрать этот девайс для самодельного токарного станочка.

  7. Болтов:

    Ээээээээээ… Да тут Ардуино, что ли. Если нет, то какой компилятор, ради такого дела установлю, даже программатор сделаю.

    • Alexey Alexey:

      Я программирую в Arduino IDE. Там уже есть компилятор. Данный контроллер прошит загрузчиком Optiboot и полностью совместим с Arduino UNO
      Как это сделать, написано здесь:
      http://samopal.pro/atmega328-arduino/
      Но можно заливать программу через ICSP программатор без загрузчика
      Можно также использовать вместо микросхемы MK Arduino UBO, Arduino NANO или Arduino Pro Micro на аналогичном контроллере

  8. Антон:

    Автор, доброго времени суток! У меня не заработал Ваш скетч на UNO.
    Почему в каждом цикле uint16_t rpm = 0; или это ошибка в скетче?

  9. Павел:

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

Ваш отзыв

Вы должны войти, чтобы оставлять комментарии.