Я выбрал ее из-за того, что защитное стекло кристалла достаточно твердое и любые фрезы, в т.ч. граверы 0,2мм не оставляют повреждений, вмятин. До этого пробовал делать датчики из алюминия и фольгированного стеклотекстолита - площадка достаточно быстро приходила в негодность (я часто использую тонкие фрезы и сверла до 1мм диаметром). Таким образом, мне не нужно было искать, резать стекло - вместо этого я использовал готовое изделие. Кроме того, ПЗС матрица в отличии от куска алюминия имеет более привлекательный внешний вид.
Конечно, данный датчик длины инструмента вряд ли годится для профессиональных целей, но для любителя, особенно новичка это достаточно неплохой вариант. Точность\повторяемость не хуже 0,05мм.
Вот так выглядит датчик в собранном виде. По этой ссылке можно скачать 3D модели и сборку в формате Солидворкс, чертежи в формате DXF - https://www.dropbox.com/sh/ca0j4rqe57ci ... 2L3ba?dl=0 В качестве собственно датчика, я использовал микрокнопку Omron. В отличии от китайского ноунейма контакты у кнопки посеребренные. Вот так выглядит прибор с установленной на плате кнопкой, смонитрованной в базе. Я срезал острым ножом выступ на кнопке, оставил только плоский желтый диск - основание. Далее, взял ненужную ПЗС матрицу от компактной камеры Canon ( PowerShot A95). С помощью фена, отпаял матрицу от шлейфа. Установил матрицу сверху кнопки. Затем прикрутил верхнюю крышку с помощью 1,4мм саморезов (от фотоаппаратов). Для функционирования прибора я использовал популярный в сети скрипт:
Код: Выделить всё
Rem VBScript Для корректировки длинны инструмента
'STEPMOTOR [14.11.2011]
'Скрипт работает в метрической системе координат
PlateOffset=10.5136 'толщина платы мм.
Zup=10 'Расстояние на которое отойдет фреза после коррекции
MaxZPlus=150 'максимальный ход станка по оси Z мм.
Sleep 100 'Пауза 0,1 сек.
CurrentFeed = GetOemDRO(818) 'Запомнить текущюю скорость, для того чтобы восстановить после коррекции.
Code "F300" 'Задать скорость подачи до касания инструментом
ZNew = GetDro(2) - MaxZPlus 'опустить инструмент до касания
Code "G31Z" &ZNew
While IsMoving() 'Подождать пока произойдет касание платы.
Wend
ZNew = GetVar(2002) 'читать точку касания
Code "G0 Z" &ZNew + 3 'отьехать вверх на 3мм от точки касания
While IsMoving ()
Wend
Code "F100" 'замедлить подачу до 50мм\мин
ZNew = GetDro(2) - 6
Code "G31Z" &ZNew 'опустить инструмент до касания
While IsMoving() 'Подождать пока произойдет касание платы.
Wend
If PlateOffset <> 0 Then
Call SetDro (2, PlateOffset) 'записать в окно Z толщину платы, тем самым откорректировав позицию по Z
Code "G4 P0.25" 'пауза для успешной записи значения в DRO
ZNew = PlateOffset + Zup 'вычислени точки подьема
Code "G0 Z" &ZNew 'поднять на высоту отхода после коррекции
While IsMoving ()
Wend
Code "(Z axis is now zero !)" 'послать сообщение в статус
End If
Code "F" &CurrentFeed 'Возвращаем установленное значение подачи
Sleep 100
Убрал металлический уголок, вместо него установил свежесобранный датчик длины инструмента. Два провода я опять завел на мультиметр, установленный в режим звуковой прозвонки. Теперь, от все той же обнуленной точки по Z я поехал фрезой вниз, опять же, в конце процедуры перейдя в пошаговый режим и дожидался срабатывания звукового сигнала мультиметра. Записал значение на бумаге. Повторил процедуру 4 раза. Вывел среднее значение. После этого, имея на бумаге два значения - расстояние от нулевой точки по Z до плоскости жертвенного стола и расстояние от той же 0 точки Z до момента срабатывания кнопки, мне не составило труда вывести истинную высоту моего датчика в момент срабатывания. Это значение я и вписал в скрипт.
После настройки датчика, я опробовал его в деле. Выфрезеровал два посадочных места под подшипники. Высота подшипников 7мм, соответственно в УП я указал глубину выборки 7мм, при толщине заготовки 12,55мм. На практике, я получил глубину кармана для подшипника 6,98мм в одном случае, и 6,93мм в другом. Далее, я решил усложнить задачу. Спроектировал новый узел привода для моторизированного слайдера камеры. В заготовке я заложил много углублений по оси Z под головки винтов и сложные углубления для врезных гаек М3 и М4. Все собралось великолепно! Еще одно изделие, где я использовал свой датчик длины инструмента - зубчатое колесо для ремня MXL для серводвигателя. Деталь очень маленькая. Работал фрезой 0,5мм и сверлом 0,25мм. В заключении стоит отметить, что из-за своей простоты изготовления, этот датчик имеет несомненные плюсы - его может изготовить любой начинающий. Вместо матрицы ПЗС можно использовать кусочек стекла, или использовать матрицу ПЗС другого размера. Также, откорректировав модель можно использовать любые микрокнопки. Кстати, подобные датчики можно изготовить на базе кнопки спуска затвора от камер Canon EOS10D, 20D, 30D, 40D, 50D, 60D, 70D. В этом случае, учитывая, что у кнопки есть две мембраны, у нас имеется две позиции срабатывания кнопки - сначала одна, затем вторая (Автофокус, затем спуск затвора). Вторую позицию (спуск затвора) можно использовать для сигнала E-Stop - в случае, если контроллер по какой-то причине "не увидит" сигнал о длине инструмента, он поедет дальше и проткнет датчик, жертвенный стол, сломает фрезу. Второе срабатывание по линии E-Stop защитит от этой неприятности - произойдет аварийный останов станка.
Такая двухпозиционная кнопка для "двухзначных" зеркалок Canon имеет минимальный ресурс срабатывания 100 000 циклов. Контакты посеребренные, как и сами мембраны с рабочей стороны. У Canon камер серии EOS 5D, EOS 1D используются еще более надежные позолоченные кнопки с минимальным ресурсом 300 000 циклов ( на практике этот ресурс порой достигает 1 000 000
циклов). Они также имеют два последовательных положения для автофокуса и спуска затвора. Этот вариант больше подойдет для серьезного датчика длины инструмента станка с ЧПУ.