ИК датчик в счетчике оборотов двигателя

- Цена: $0.37 + $0.72 доставка
- Перейти в магазин
Для станка ЧПУ приобрел мотор шпиндель с регулировкой оборотов.
Радиолюбительский зуд не давал покоя — захотелось иметь на станочке показометр оборотов. Вариант с оптическим энкодером показался слишком сложным. Датчика холла, который применяется во всех автомобилях, не было под рукой. И тут на одном форуме подкинули идейку — попробовать ИК сенсор. Как раз без дела лежал ИК датчик препятствий, который не знал куда применить. Решил его попробовать — результат под катом.
Данный модуль применяется в основном в ардуинщиками в роботостроительстве как ИК датчик препятствия. Представляет маленькую очень бюджетную платку (особенно если покупать партиями штук по 10)

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

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

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

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

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



И вот можно отлаживать готовую плату








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



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




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



Так мой новый станочек обзавелся счетчиком оборотов шпинделя. индикаторы К слову, данный измеритель должен практически без изменения схемы и программы заработать и с «кошерным» датчиком холла и магнитиком на валу.
Пока собирал станок, приехали 5-ти разрядные индикаторы. Хотел переделать измеритель скорости вращения на них с более компактным Atmega8 в TQFP32. Но потом решил, что лучшее — враг хорошего.





Но это уже другая история
Следующий обзор я посвящу контроллеру станка, его доработке и настройке.
Весь мой путь от старого к новому станку есть в моем блоге.

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

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

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

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

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

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



И вот можно отлаживать готовую плату

Сразу делаю корпус из обрезков ПВХ пластика







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



А вот когда на вход контроллера подал с сигнал с сенсора, результат получился плачевным.
Частота прыгала как ненормальная. Виной этому оказался «дребезг» сигнала с оптического датчика. Фольга давала массу помех. Попытка настроить сигнал подстроечником или заменить кусочек фольки на другой не дали ощутимого результата.
Тогда я решил давить «дребезг» программно. Осциллограф показал, что помехами являются импульсы в 0.3 — 1 мкс, тогда как сигнал — это импульсы 5мс (При частоте 12000RPM) и больше.
В результате родилась такая программка с подавлением помех длительностью менее 2мкс
// Библиотека работы с 7-сегментным индикатором
// https://github.com/sparkfun/SevSeg
#include <mSevSeg.h>
SevSeg myDisplay;
byte displayType = COMMON_CATHODE; //Your display is either common cathode or common anode
byte digit1 = 18;
byte digit2 = 19;
byte digit3 = 8;
byte digit4 = 10;
byte segA = 17;
byte segB = 9;
byte segC = 12;
byte segD = 14;
byte segE = 15;
byte segF = 16;
byte segG = 13;
byte segDP = 11;
byte numberOfDigits = 4;
int dot = 0;
uint32_t ms, ms1 = 0, ms0 = 0, ms2 = 9;
uint32_t rps = 0;
uint32_t count = 0;
char buf[10];
void setup(){
// Инициализация индикатора
myDisplay.Begin(displayType, numberOfDigits, digit1, digit2, digit3, digit4, segA, segB, segC, segD, segE, segF, segG, segDP);
myDisplay.SetBrightness(100);
myDisplay.DisplayString("----", 0);
// Инициализация входа для счета импульсов
attachInterrupt(0, pulseCount, RISING);
}
void loop(){
ms = millis();
char s[10];
uint16_t rpm = 0;
// Перевыдача дисплея
myDisplay.DisplayString(buf, dot);
// Каждую секунду перевыдаем значение скорости
if( ms2 == 0 || ms2 > ms || ( ms - ms2 )>1000 ){
ms2 = ms;
// Переводим в коичество оборотов в минуту
rpm = rps*60;
// Отображение 10=тичной точки, сли число больше 4-х разрядов
if( rpm > 9999 ){
dot = 2;
sprintf(buf,"%4d",rpm/10);
}
else{
dot = 0;
sprintf(buf,"%4d",rpm);
}
rps = 0;
}
}
/**
* Счетчик импульсов
*/
void pulseCount(){
uint32_t ms = micros();
// Убираем импулься менее 2 мс (дребезг)
if( ms - ms0 > 2000 )count++;
ms0 = ms;
// 0.5 сек цикл подсчета импульсов
if( ms - ms1 > 500000 ){
ms1 = ms;
rps = count*2;
count = 0;
}
}
Программа показала 100% результат с тестового генератора. При включенном моторе с сенсора показывались стабильные обороты, которые хорошо коррелировали с режимом работы мотора. На том и остановимчя




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



Так мой новый станочек обзавелся счетчиком оборотов шпинделя. индикаторы К слову, данный измеритель должен практически без изменения схемы и программы заработать и с «кошерным» датчиком холла и магнитиком на валу.
Пока собирал станок, приехали 5-ти разрядные индикаторы. Хотел переделать измеритель скорости вращения на них с более компактным Atmega8 в TQFP32. Но потом решил, что лучшее — враг хорошего.
А индикаторы пошли в другой проект - индикатор для любого Sonoff с управлением по UART





Но это уже другая история
Следующий обзор я посвящу контроллеру станка, его доработке и настройке.
Весь мой путь от старого к новому станку есть в моем блоге.
Кот за любой кипишь кроме голодовки )))

Самые обсуждаемые обзоры
+48 |
1967
56
|
+34 |
4933
208
|
+20 |
1905
110
|
Вообще хорошо бы составить общую статистику по шпинделям различной мощности и заглублению проходов по различным материалам и фрезам.
Тогда бы каждый знал какой именно шпиндель ему лучше покупать.
А то у нас набоум покупают самый мощный. ;)
Но больше фанеры 6мм на скорости 200мм/мин за один проход пока не загружал
В принципе у шпинделя есть характеристики — мощность, обороты, крутящийся момент
А дальше все решается материалом, фрезой и скоростью подачи. Тут, мне кажется, у каждого свой опыт, сформированный загубленным заготовками и поломанными фрезами
Есть доп. датчики температуры/влажности (можно и другие туда подключить), счетчики электроэнергии и прочее
Влажность мне удобно отображать «100.0%»
Если сценарий работы выключателя связан с другим модулем
Кондер может и меньше стоять
Я зажигаю точку декадного делителя:
12000 = 12.00 — типа 12К RPM
В любом кулере есть такой датчик внутри.
Герцы — это у радистов :)
ATmega8 для этого проекта не хватит?
Для чего кнопка сброс?
Для 328 могу бинарник выложить
В принципе на частоте 200-1000Гц без проблема и самому фильровать
Вон спектроанадизаторы на звуковой частоте FFT применяют
Да и не нравится мне магнит на валу. Вдруг он вибрацию даст еще
Во вторых ток будет зависеть от нагрузи шпинделя
В моем случае проще было откалибровать положения переменного резистора регулировки оборотов
Да, ток так же даст информацию о моменте на двигателе, что может спасти фрезу при заклинивании. В отличие от оптического датчика.
Вот зависимость оборотов, нагрузки (момента) от тока, информации больше, схема проще и надежней
Небольшое скольжение поля легко компенсировать
Легко как-раз в двигателе постоянного тока.
Для дома вряд ли это целесообразно
а те «кулеры», что с тремя проводами, еще и выход импульсного таходатчика (ключ) имеют, 2 замыкания на оборот.
измерял скорость вентилятора: подключил пищалку-прозвонку к таходатчику и записал звуковые пакеты микрофоном на компе.