Зайдя в очередной раз на сайт местного радиомагазина, обнаружил в продаже интересный девайс. Модуль DDS (direct digital synthesis) — синтезатор частоты на микросхеме AD9850. Такой:
22 January, 2017 21:56
Оптические датчики сердечного ритма. Простой кардиомонитор
Одним из востребованных направлений электроники является медицинская электроника. Данный класс электроники реализует диагностические и лечебные аппараты, решающие какие-либо медико-биологические задачи. Также для медицинской электроники свойственна большая точность и стабильность, так как от этой техники часто зависит жизнь человека.
Болезни сердечно-сосудистой системы на сегодняшний день являются наиболее часто встречающимися болезнями у человека после кариеса. Заболевания сердечно-сосудистой системы могут быть опасны не только для больного, но и для окружающих в те моменты, когда он управляет техникой или в других ситуациях, связанных с выполнением каких-либо ответственных действий.
Mach3 поиск 0 по оси Z
То, что творится с инструкциями по обнулению оси Z, это, конечно, полный бардак. Одни не понимают что они пишут, другие не понимают что они читают, ломают фрезы и бросают эту полезную затею.
Может где и есть понятные инструкции, но мне они не попались, поэтому пишу свою.
Итак: Задача установить инструмент в точку ноль по оси Z в программе MACH3.
Алгоритм:
Ось Z опускается на заданную величину (10мм). Если происходит замыкание, то ноль по Z устанавливается с учетом толщины пластину и происходит отскок безопасности на 5 мм. Если замыкания не обнаруживается, то ось Z просто останавливается. Толщину пластины и скорость опускания можно задать в скрине Мач3. Остальные параметры в тексте скрипта.
В программе Мач3 есть возможность обнаружить момент замыкания входа LPT на землю. Обычно это контакт между фрезой и металлической деталью или вспомогательной пластиной. Для этого один контакт мы присоединяем к фрезе, а другой к детали или к пластине.
1.На контроллере находим свободный входной пин разъема LPT. Это пины 10, 11, 12, 13 или 15. Например, 12. И к этому разъему присоединяем один контакт, другой к земле.
1. Выбираем свободный номер пина, заходим в Config->Ports-and-Pins->Input-Signals->Probe и ставим галочки в Enable и ActiveLow. В PinNumber выставляем номер пина.
2. Толщина пластины. Если мы обрабатываем металлическую деталь или печатную плату, то вторым контактом будет сама деталь, пластина не нужна и поправка на ее толщину будет ноль. Если деталь не токопроводящая, то нужна вспомогательная пластина. Т.е. необходимо иметь параметр, где мы можем задать толщину пластины.
Что, например, можно сделать.
Скачиваем с официального сайта программу Screen4.exe — это дизайнер экранов программы Мач, и размещаем ее в директорию Мач. Стартуем, открываем файл 1024.set — стандартный файл скринов Мача, переименовываем и сохраняем под другим именем. Теперь мы можем изменять экраны. Нам надо добавить параметр для установки толщины пластины. Выделяем, например, поле Z inhibit, делаем Copy->Paste и размещаем, например, так:
Кликаем дважды левой кнопкой, и в поле OEM-Code-Function пишем 1151. По этому номеру мы можем теперь считать в программе значение этого поля.
Сохраняем скринсет. Стартуем Мач, в View-LoadScreens выбираем и загружаем модифицированный экран Мача с новым полем.
3. Теперь нам надо стартовать установку нуля. Для этого используется кнопка AutoToolZero. При нажатии на эту кнопку начнет выполняться программа, контролирующая установку нуля. Эта программа написана на языке VBscript. Такие программы широко используются и называются скриптами. Текст программы или заглушку можно увидеть по Operator->EditButtonScript, а затем кликнуть по мигающей кнопке AutoToolZero.
Вот сюда-то и надо скопировать или ввести программу установки нуля. Не забыть потом сохранить ее и профиль Мач3, при выходе из программы.
4. Скрипт. Количество скриптов для установки нуля превышает разумные пределы. Многие из них работают, хотя авторы даже не понимают, что рекомендуют. Давайте рассмотрим один из вариантов, доработанных мною до состояния, которое меня устроило. Заодно и скрипты изучил немного. Это мой первый скрипт, поэтому замечания приветствуются.
Вначале только пример с комментариями. При попытке ввести в программу комментарии на кириллице, приходилось перезагружать компьютер. Рабочий вариант скрипта будет ниже.
Rem VBScript To probe In the z axis
‘ Это комментарий
If GetOemLed (825) <> 0 Then ‘ Проверяем, может быть ноль уже установлен
‘ Расшифровки параметра в GetOemLed находятся в файле LEDCodes.txt
Code «(Z-Plate is grounded or check connection and try again)» ‘ выводим сообщение об этом
Else
‘ Если ноль не установлен, то пробуем его найти
Code «G4 P1» ‘ Пауза в 1 сек
PlateOffset = GetUserDRO(1151) ‘ считываем значение нового поля. Это толщина пластины.
‘ Значения параметров GetUserDro и GetOemDro находятся в файле DroCodes.txt
CurrentFeed = GetOemDRO(818) ‘ счтываем значения поля Feedrate. Это текущая скорость мм/мин
‘ Эту скорость можно изменить перед поиском нуля в скрине Мача
MyFeed = 100 ‘ скорость поиска нуля мм/сек для вашего станка
‘ Зависит от крепости фрезы
‘ Если скорость больше MyFeed, то мы ее уменьшаем до MyFeed.
‘ если меньще MyFeedRate, то устанавливаем меньшую скорость. Ту, которая в Маче
If CurrentFeed>MyFeed Then
Code «F» &MyFeed ‘ Эту скорость вы можете установить под свой станок как стандартную
Else
Сode «F» &CurrentFeed ‘ Эту скорость вы всегда можете установить для конкретного поиска нуля
End if
‘ Начинаем искать ноль
ZNew = GetDro(2) — 10 ‘ Устанавливаем точку на 10мм ниже текущей высоты Z
Code «G31Z» &ZNew ‘ Идем в эту точку с контролем замыкания контактов Probe
While IsMoving() ‘ Ждем пока ось Z дойдет до точки -10мм
Wend
ZNew = GetVar(2002) ‘ Считываем значение по Z в момент замыкания
Code «G1 Z» &ZNew ‘ Если проскочили, то возвращаемся
While IsMoving () ‘ Ждем возвращения
Wend
If GetOemLed (825) <> 0 Then
‘ Проверяем нашли ноль или просто опустились по Z на 10мм
‘ Проверяем толщину пластины
‘ если она ненулевая, то корректируем ось Z с учетом ее толщины, иначе 0
Call SetDro (2, PlateOffset) ‘ новая точка 0 по Z
Code «G4 P0.5» ‘ ждем установку по Z 0.5 сек
ZNew = 5 ‘ отскок безопасности по Z. Можете поменять
Code «G1 Z5 F200» ‘ идем в точку отскока
While IsMoving () ‘ ждем прихода в отскок
Wend
Code «(Z axis is now zeroed)» ‘ выводим сообщение об установке нуля.
Else
‘ Замыкания не достигли. Просто опустились на 10мм
Code «(Z-Plate ie not grounded. Try again.)» ‘ сообщение об этом
End If
Code «F» &CurrentFeed ‘ возвращаем значение скорости
End If
Текст скрипта находится в директории Macros->»профиль» под именем HiddenScript.m1s
Но при старте Mach3 скрипт берется из профиля. Так что если у вас не обновился профиль после изменения скрипта, при старте Мач3 получите старый скрипт.
Рабочий скрипт:
Rem VBScript To probe In the z axis
If GetOemLed (825) <> 0 Then ‘Check to see if the probe is already grounded or faulty
Code «(Z-Plate is grounded or check connection and try again)» ‘this goes in the status bar if aplicable
Else
Code «G4 P1» ‘Pause 1 seconds to give time to position probe plate
PlateOffset = GetUserDRO(1151) ‘Get plate offset DRO
CurrentFeed = GetOemDRO(818) ‘Get the current feedrate to return to later
MyFeed = 100
If CurrentFeed > MyFeed Then
Code «F» &MyFeed ‘slow down feedrate to 100 mmpm
Else
Code «F» &CurrentFeed
End If
Rem Probe In the z direction
ZNew = GetDro(2) — 10 ‘probe move to current z — 10mm
Code «G31Z» &ZNew
While IsMoving() ‘wait for probe move to finish
Wend
ZNew = GetVar(2002) ‘read the touch point
Code «G1 Z» &ZNew ‘move back to hit point incase there was overshoot
While IsMoving ()
Wend
If GetOemLed (825) <> 0 Then ‘ Zero or Not
Call SetDro (2, PlateOffset) ‘set the Z axis DRO to plate thickness
Code «G4 P0.5» ‘Pause for Dro to update.
ZNew = 5 ‘ Up to 5mm
Code «G1 Z5 F200» ‘&ZNew ‘put the Z retract height you want here
While IsMoving ()
Wend
Code «(Z axis is now zeroed)» ‘puts this message in the status bar
Else
Code «(Z-Plate is not grounded. Try again.)»
End If
Code «F» &CurrentFeed ‘Returns to prior feed rate
End If
Rem Finalized by George164 05/03/2012