Устройства цифровой индикации (УЦИ) набирают все большую и большую популярность среди домашних мастеров, имеющих в своем распоряжении в личной мастерской разнообразное станочное оборудование. УЦИ обеспечивает удобную индикацию положения режущего инструмента, позволяет работать в разных координатах с оперативным переключением от одной точки привязки к другой, позволяет задавать произвольную точку привязки для удобства отсчета. Также многие УЦИ имеют в своем составе калькулятор, позволяющий «не отходя от кассы» производить необходимые вычисления и множество готовых встроенных функций по расчету координат наиболее часто используемых при обработке фигур (таких как, например, круг, многоугольник).
Достоинством отсчета положения инструмента по УЦИ по сравнению с отсчетом координат по лимбам станка является отсутствие люфтов, неизбежно возникающих в механизмах зацепления штурвала лимба и подвижных частей станка, поскольку УЦИ с помощью датчиков считывает положение не с лимба, а непосредственно с подвижного элемента механизма (например, суппорта токарного станка). В случае невозможности установить датчик положения непосредственно на подвижную часть, можно также установить его на ось лимба, но при этом есть возможность вычислить и задать величину люфта программно (если она, конечно, постоянна и не меняется со временем), что тоже повышает удобство пользования станком.
Само устройство УЦИ несложно. Его основная задача - считать информацию с датчиков положения и отобразить на каком-либо дисплее. Датчиков положения существует большое разнообразие. Их примерно можно разделить на 3 группы: оптические, индуктивные и емкостные. Также датчики различаются и по типу выходного сигнала – цифровой или аналоговый.
Оптические датчики весьма широко применяются, например, для определения положения каретки в принтерах. Датчик представляет собой прозрачную ленту с нанесенными на нее непрозрачными рисками с очень мелким шагом. Лента входит в зазор между излучателем света (чаще всего – ИК светодиод) и двумя фотоприемниками (ИК - фотодиоды). По перекрытию света риской на одном или двух фотоприемниках можно судить о величине перемещения и о направлении движения. Для использования в станочном оборудовании выпускаются аналогичного типа датчики ВЕ-178. В отличие от прозрачной ленты в принтерах, в нем используется вращающийся стеклянный диск с нанесенными рисками. Стекло обладает большей прочностью, также оно не подвержено растягиванию, как это происходит с натянутой лентой. Также стеклянный диск заключен в герметичный корпус и не подвержен воздействию окружающей среды, пыли, стружки и различных технических жидкостей, используемых при работе станка. Минус этого решения – необходим механизм для преобразования линейного перемещения элемента механизма во вращательное движение датчика. Любой такой механизм будет вносить погрешность и будет иметь люфты. Точность и разрешение оптического датчика зависит от точности нанесения оптических рисок и то, насколько они близко расположены друг к другу.
Индуктивные датчики имеют различные исполнения. Это могут быть как конструкции на основе сельсинов (вращающихся трансформаторов), так и на основе линейных дифференциальных трансформаторов. Общим для всех этих конструкций является, чаще всего, аналоговый тип выходного сигнала, который, в общем случае, требует оцифровки с высокой точностью и разрешением, что весьма усложняет и удорожает конструкцию. Поэтому такие датчики имеют ограниченное применение, и лишь в тех местах где применение иных типов датчиков невозможно по конструктивным причинам или из-за агрессивных свойств среды.
Емкостные датчики перемещения распространены не менее широко, как и оптические. Например, такой тип датчика применяется в электронных штангенциркулях. Датчик представляет собой подложку, на которой каким либо образом вытравлены проводники, образующие одну из обкладок конденсаторов. На некотором расстоянии над подложкой перемещается каретка. На каретке выполнены аналогичные проводники, образующие вторую обкладку конденсаторов. Обкладки смещены друг относительно друга таким образом, что по-разному перекрывают друг друга в зависимости от положения каретки, таким образом меняется емкость этих конденсаторов. Подавая заранее известный сигнал на эти конденсаторы и измеряя сигнал после них можно с высокой точностью судить о положении каретки. Достоинством этих датчиков служит высокая точность и дискретность позиционирования. Относительным недостатком является наличие специализированной электронной схемы между самим датчиком и схемой отсчета, которая выдает данные строго в определенном формате, который может быть закрытым. Это затрудняет использование таких датчиков, в случае если протокол выдачи данных неизвестен.
Несмотря на постоянное совершенствование и снижение стоимости, системы УЦИ остаются больше уделом профессиональной и полупрофессиональной деятельности. Для использования в личной мастерской такие устройства пока еще слишком дороги. По этой причине энтузиастами разрабатываются и любительские устройства, позволяющие реализовать аналогичные функции. Одно из таких устройств и будет описано ниже.
Как уже было сказано, само устройство сложности не представляет, его задача довольно проста – считать сигнал положения с датчика и вывести его на индикатор. Проблема состоит больше в поиске подходящих датчиков, сигнал с которых можно считать без особой сложности. Промышленные датчики линейного перемещения имеют существенную стоимость. Датчики индуктивного типа требуют использования прецизионных АЦП для преобразования аналогового сигнала в цифровую форму. Любительские конструкции на основе оптических лент от принтеров имеют низкую разрешающую способность, кроме того, лента может растягиваться, требует продумывания вопросов ее защиты от внешних воздействий. В любительских конструкциях УЦИ получило некоторое распространение использование в качестве датчиков положения линеек и кареток от электронных штангенциркулей. Они, как правило, имеют возможность считать с них положение в виде цифрового выходного сигнала.
Мне же по случаю удалось достать два отечественных оптических датчика (энкодера) ВЕ-178 с разрешением в 100 и 1000 импульсов на один оборот. Энкодеры мне достались неисправными, в них вышли из строя микросхемы компараторов. Микросхемы были заменены на более современный импортный аналог LM311N, эти микросхемы встают на те же посадочные места и доработки печатных плат не требуется. После чего работоспособность датчиков не только восстановилась, но и появилась возможность их питания в более широком диапазоне напряжений. Аналоговая часть питается напряжением 5-15В, отдельно напряжением 5В питается ИК светодиод подсветки рисок. На выходе энкодера имеются: пара противофазных сигналов А (прямой и инвертированный), пара противофазных сигналов В, которые смещены относительно А на 90 градусов (прямой и инвертированный) и сигнал начала отсчета С (также прямой и инвертированный). Использование пар противофазных сигналов при передаче их по экранированным витым проводникам позволяет существенно снизить влияние помех на передаваемые сигналы. Если привести уровни этих сигналов к уровням ТТЛ и подать на входы микроконтроллера, то можно производить счет этих импульсов, и, соответственно, определять механическое перемещение, а по соотношению фаз сигналов А и В определять направление вращения.
Механически энкодер был установлен на пластину, прикрепленную к суппорту станка. На ось энкодера была напрессована пластиковая зубчатая шестерня, взятая с двигателя перемещения каретки от старого струйного принтера. Из того же принтера берется и зубчатый приводной ремень, входящий в зацепление с этой шестерней. Ремень разрезается, благодаря чему его длина становится в 2 раза больше. Ремень натягивается вдоль продольной подачи станка в месте, как можно более защищенном от летящей стружки. Шестерня катается по ремню, преобразуя линейное перемещение суппорта во вращательное движение энкодера. Рядом с шестерней стоит натяжной ролик, который обеспечивает постоянное натяжение ремня, а также достаточный сектор зацепления шестерни и ремня. Натяжной ролик взят также из принтера. Для увеличения сектора обката можно дополнительно установить еще один ролик.
Примерная кинематическая схема приведена на рисунке ниже.
Диаметр отверстия в шестерне, взятой из принтера необходимо увеличить, рассверлив его сверлом большего диаметра. К этой процедуре следует отнестись крайне ответственно, не допускать даже малейшей несоосности или биения. Для этого при сверлении необходимо вращать не сверло, а саму деталь, зажав шестерню в патрон. Для рассверливания лучше взять новое сверло, с одинаково заточенными режущими кромками. Рассверливать желательно постепенно, сверлами сначала меньшего, затем большего диаметра. Попытка рассверлить сразу сверлом нужного диаметра может привести к большим нагрузкам на деталь и ее повреждению.
Поскольку дискретность этих типов датчиков может быть достаточно высока (до 1000, 1024 и даже 2500 импульсов на оборот), а максимальная частота вращения доходить до 6 – 10 тыс. об/мин. частота выходных импульсов может достигать 100-250 кГц (для ВЕ-178 указывается максимальная частота выходных импульсов 130 кГц). Необходимо это учитывать при построении системы, проектировать систему таким образом, чтобы она успевала обрабатывать этот сигнал. В первом варианте схемы УЦИ я подавал эти сигналы непосредственно на входы аппаратных прерываний микроконтроллера. При должной оптимизации быстродействия обработчика прерываний это вполне рабочий вариант. И в моем случае это хорошо работало, если бы не один нюанс. Дело в том, что при обработке детали на станке часто возникают вибрации. Несмотря на то, что сам механизм стоит на месте, колебания датчика приводят к частому увеличению и уменьшению показаний. И иногда возникает такая ситуация, что сигнал на увеличение счетчика контроллер успевал обрабатывать, а следующий сразу за ним сигнал на уменьшение он пропускал. В результате счетчик положения начинал неконтролируемо увеличивать показания, хотя механизм стоял на месте без движения. Это приводит к необходимости использования аппаратной реализации счетчика импульсов.
Сигнал с энкодера, как это было указано выше, представляет собой два смещенных друг от друга на 90 градусов прямоугольных сигнала. Эти сигналы и их обработка ничем не отличается от обработки сигналов с энкодеров, широко используемых в различной аппаратуре в качестве ручек управления. За исключением того, что все фронты и длительности сигналов с этого энкодера намного более точные и их параметры гарантируются производителем.
Для обработки таких сигналов существуют специализированные микросхемы – например, LS7083N (LS7183N). Эта микросхема обрабатывает квадратурные сигналы с энкодера и формирует на выходе сигналы инкремента или декремента, которые можно подавать непосредственно на счетчик. В зависимости от сигнала на входе «MODE» микросхема может выдавать 1, 2 или 4 импульса на один период квадратурного сигнала. Резистором, подключенном ко входу «RBIAS» задается длительность формируемого импульса для счетчика. Другая микросхема, LS7366 помимо обработчика квадратурного сигнала с энкодера содержит также аппаратный 32-разрядный счетчик, схемы управления и тактирования. Эту микросхему можно подключать к микроконтроллеру по последовательному интерфейсу. Микросхема полностью нам подходит и решает все задачи по сопряжению с квадратурным энкодером. Но, к сожалению, она достаточно редка, доступна только под заказ и отсутствует в розничной продаже, вероятно, из-за ее специфичности. Также ее цена (около 10 долл.) не очень соответствует уровню любительской разработки.
Поэтому было решено реализовать ее логику (точнее, логику микросхемы LS7083N) на обычных логических элементах стандартной логики. На просторах Интернета была найдена и проверена следующая реализация интерфейса квадратурного энкодера, предложенная пользователем IMXO. В отличие от многих других схем эта схема реализует режим работы 4 импульса на период квадратурного сигнала, что для датчика положения предпочтительнее, поскольку повышает его разрешающую способность. Схема требует внешнего тактирования. Частота этого тактирования должна быть не менее чем в 8 раз выше максимальной частоты квадратурного сигнала. При максимальной частоте для датчика ВЕ-178 в 130 кГц, частота тактирования должна составлять не менее 1,04 МГц.
С выхода этой схемы мы имеем импульсные сигналы инкремента и декремента, которые можно непосредственно подать на двоичный счетчик.
Для удобства пользования устройством индикатор должен обладать довольно крупными и контрастными цифрами, читаемыми, по возможности, с расстояния 1-1,5 м. Это необходимо потому, что обычно УЦИ устанавливается в таком месте, где оно будет недоступно для летящих из под резца или фрезы металлических опилок и смазочно-охлаждающей жидкости. Большинство из широкоупотребимых светодиодных индикаторов имеют высоту символов около 15 мм, что явно недостаточно. Более же крупные индикаторы уже существенно дороже. Поэтому было принято решение использовать имеющийся у меня в наличии жидкокристаллический графический индикатор, снятый с какого-то неисправного прибора.
Этот индикатор достаточно старый, разрешением всего 150х32 пикселя, построен на основе микросхем T7932, T7933 фирмы Toshiba. Микросхема T7932 обеспечивает формирование синхросигналов и перебора строк. Три микросхемы T7933 отвечают каждая за свою область размером 50х32 пикселя. Путем внимательного изучения описания на эти микросхемы и платы индикатора была выяснена распиновка и назначение контактов индикатора для подключения его к микроконтроллеру. Индикатор имеет параллельную 8-битную шину управления. Сигналами CS1, CS2, CS3 выбираются микросхемы, отвечающие за соответствующие им области индикатора. Сигналом R/W выбирается запись или чтение данных. Сигналом D/I выбирается тип данных, что будет записываться – графические данные или инструкции управления. Питание стандартное, 5В. Подсветка питается отдельно через гасящий резистор. Порядок инициализации индикатора и загрузки данных подробно описан в описании на микросхему.
Рассмотрим схему устройства. В качестве управляющий микросхемы применен микроконтроллер ATMEGA8. У этого контроллера не очень много доступных линий ввода/вывода, но для описываемой задачи хватает. Младшая тетрада шины данных индикатора подключена к порту С (выводы РС3 – РС0). Эти же линии мультиплексированы с шиной двоичного счетчика с помощью регистра-защелки К1533ИР22. Старшая тетрада шины данных подключена к старшей тетраде порта D. На порт В заведены управляющие сигналы индикатора, к выводам РВ7, РВ6 подключен кварцевый резонатор. К выходу РС5 подключен звуковой излучатель (со встроенным генератором) и транзистор VT1 управления подсветкой. При появлении на этом выходе 0 подсветка гаснет, а звуковой излучатель начинает издавать звук. Прерывистое мигание подсветки и звуковой сигнал необходим для привлечения внимания оператора. К РС4 подключена кнопка без фиксации. На PD1, PD0 заходят сигналы с энкодера ручки управления. Энкодер и кнопка объединены конструктивно. При вращении ручки идут сигналы с энкодера, при нажатии на торец ручки замыкается кнопка. Также ручка имеет подсветку в виде надписи «SEL». Такой энкодер с ручкой управления, возможностью нажатия и подсветкой применен от старой неисправной магнитолы. Светодиод подсветки надписи в ручке подключен параллельно подсветке и мигает вместе с ней.
Для обработки квадратурных сигналов используется схема на DD1 – DD5. На входе стоит резистивные делители R2 – R9 для приведения выходного уровня сигнала с энкодера (не менее 10В при питании от источника 15В) к уровню ТТЛ и защитные стабилитроны VD1 - VD4 КС147А, защищающий вход цифровой микросхемы от перенапряжения свыше 4,7 В. На микросхеме DD1 К155ЛА3, R1, C1 собран генератор тактовых импульсов, необходимый для работы декодера. Частота генерации около 1,5 МГц. На DD2 К155ТМ2 собрана схема подавления помех и дребезга. DD2 используется в качестве RS-триггера, который переключается только когда на одном входе лог.1, а на другом лог.0. Все остальные комбинации не приводят к изменению его состояния. То есть, если вместо лог. 0 из-за действия помехи появится лог. 1, то триггер не переключится, поскольку комбинация с двумя лог.1 на входах R и S запрещена. Затем квадратурные сигналы идут на микросхему DD3 К155ТМ2, использующуюся уже как D-триггер. На тактовые входы этой микросхемы подаются тактовые импульсы с генератора на DD1, а на входы данных – квадратурные сигналы. Далее сигналы идут на логическую схему на DD4 (К155ЛП5, 4 х 2ИСКЛЮЧАЮЩЕЕ ИЛИ) и DD5 (4 х 2И-НЕ). На выхода этой схемы импульсы счета отрицательной полярности поступают на счетные входы двоичного счетчика DD6 К155ИЕ7. Состояние этого счетчика можно считать с помощью регистра-защелки К1533ИР22, подав лог.0 на входы управления (вывод PD3). Сигнал младшего разряда счетчика дублируется на вывод PD2, который настроен как вход внешнего прерывания INT0. При любом изменении состояния этого сигнала контроллер может считать состояние счетчика и посчитать перемещение. При этом контроллер может безболезненно пропустить не более 8 счетных импульсов.
Все устройство питается от внешнего стабилизированного блока питания 12В, подключаемого через разъем Х2. Напряжение питания 5 В формируется линейным стабилизатором типа 7805. Все цифровые микросхемы зашунтированы по питанию конденсаторами С2 – С8, С15.
Устройство собрано на макетной плате и помещено в подходящую пластмассовую коробку.
Для программирования устройства используется простой переходный кабель к LPT-порту персонального компьютера. LPT-порт в большинстве современных компьютеров отсутствует, поэтому для программирования я использую специально приобретенный ноутбук на базе древнего процессора «Пентиум II». Кабель для программирования подключается к разъему Х4.
Прошивка, исходники и все необходимые утилиты доступны на гитхабе.
Порядок работы устройства следующий. При включении питания включается подсветка и кратковременно показывается заставка, на которой демонстрируется название прибора и версия его программного обеспечения. Затем кратковременно на дисплее индицируется считанный из энергонезависимой памяти установленный единичный шаг перемещения. Если устройство включается впервые и размер единичного шага еще не задан, устройство переходит в режим его первоначального ввода. Об этом режиме подробнее будет сказано далее. После этого устройство переходит в режим отображения положения. Поскольку в данной системе не используется начальное позиционирование, устройство показывает только относительное перемещение. Поэтому при включении устройства текущие координаты равны 0. Перемещение отображается в миллиметрах, на целую часть выделено 3 разряда, на дробную – 2 разряда. Соответственно, дискретность отображения составляет 0,01 мм, или на токарном жаргоне – «сотка». Большая точность в любительских условиях обычно недостижима, да и не требуется. В оставшемся шестом знакоместе отображается знак числа и стрелка направления перемещения. При перемещении в направлении шпинделя показания увеличиваются, от шпинделя – уменьшаются. При нажатии на кнопку «SEL» текущее положение можно обнулить, сделав его началом отсчета. При нажатии на кнопку «RES» устройство можно аппаратно перезагрузить.
Устройство имеет функцию предупреждения оператора. При подходе на расстояние менее 5 мм к заранее запомненной точке, устройство начинает мигать подсветкой и издавать звуковой сигнал. Таких точек можно запомнить 9 штук. Для этого необходимо поставить суппорт станка в эту точку, вращая ручку «ENC» влево или вправо выбрать незанятую ячейку М1…М9. Обозначение ячейки появится в шестом знакоместе над символом знака «-». Выбрав ячейку необходимо нажать кнопку «SEL» и текущее положение запишется в эту ячейку. Необходимо обратить внимание на положение стрелки направления перед записью точки. Предупреждение будет выдаваться при приближении к точке только с этого направления. При проходе записанной точки в обратном направлении, предупреждение выдаваться не будет. Чтобы потом вернуться назад к отображению положения необходимо вращать ручку «ENC», пройдя все ячейки. Режим отображения текущего положения это как бы ячейка М0. Чтобы разом стереть все точки необходимо аппаратно сбросить устройство, нажав кнопку «RES».
Перед началом использования необходимо задать шаг, физическое расстояние, соответствующее одному импульсу перемещения. Шаг вычисляется после окончательного монтажа всей системы на станке. Если шаг уже был задан, то для входа в этот режим необходимо нажать и удерживать кнопку «SEL» при включении питания устройства. Шаг представляет собой 6-разрядное число, выраженное в нанометрах. Число вводится начиная с младшего разряда. После введения числа оно запоминается в энергонезависимой памяти и устройство переходит в обычный режим работы. Первоначально необходимо хотя бы приблизительно оценить этот шаг. Его можно рассчитать, зная диаметр шестерни на валу энкодера. Длину обката шестерни поделить на количество импульсов на оборот, умноженное на 4 (поскольку за один период квадратурного сигнала обработчик квадратурного энкодера выдает 4 импульса): πּD/4N. В моем случае шаг был равен: 3,14∙6/4/1000=0,00471 мм = 4710 нм. Это число и необходимо ввести при первоначальной настройке.
Затем необходимо уточнить это число, измерив реальное перемещение с помощью более точных приборов. Я для этих целей использовал КМД – концевые меры длины, высокоточные шлифованные металлические пластинки из специального сплава.
Сначала я переместил суппорт в крайнее левое положение так, чтобы он плотно уперся резцедержателем в патрон. Обнулил показания положения. Подвигав суппорт несколько раз от патрона и снова упирая его в патрон необходимо убедится что эта точка положения воспроизводится с достаточной повторяемостью. После чего суппорт отодвигается от патрона и в образовавшуюся щель вставляется одна из плиток КМД. Плитка так же плотно поджимается. При этом, показания устройства должны быть примерно равны длине плитки. Если показания отличаются, то шаг пересчитываются через пропорцию. Например, был установлен шаг 4710 нм. Суппорт был сдвинут на длину плитки 100 мм, но устройство насчитало перемещение только 95 мм. В этом случае новый шаг должен быть 4710∙100/95=4958 нм. Зайдя в режим установки шага необходимо ввести новое число – 4958. После этого убеждаются что при перемещении суппорта на 100 мм, число, отображаемое на индикаторе с требуемой степенью точности совпадает с 100 мм. Делая многократные перемещения суппорта убеждаются в повторяемости индикации позиционирования и минимальном разбросе показаний при установке суппорта в одну и ту же точку.
Работать по показаниям такого устройства намного удобнее чем по лимбам станка, особенно если станок изношен и есть люфты в приводе штурвала продольной подачи как в моем случае.
Устройство было изготовлено в 2021 г . В планах была существенная доработка устройства, по сути - его полная переделка. Планировалось добавить измерение второй оси - поперечной подачи (для этого я планировал применить второй энкодер, на 100 имп/оборот), добавить измерение частоты вращения шпинделя (датчиком ДПКВ от жигулей), использовать большой дисплей на газоразрядных индикаторах (а-ля олдскулл) с полноценной клавиатурой и использовать под это дело более мощный процессор. Однако из-за известных событий планам не суждено было сбыться. Поэтому выкладываю на суд читателей этот промежуточный, простенький вариант, возможно кому то этот опыт покажется интересным.
Автор: Тимофей Захаров