II – В программном комплексе на ПК.
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

1. Загрузка изображения в поле обработки по нажатию кнопки;

2. Сканирование изображения попиксельно и создание блока данных с координатами каждой точки, в зависимости от установленных параметров на форме, для отправки на микроконтроллер.

3. Отправка блока данных с ПК на МК в режиме диалога по нажатию кнопки с визуализацией процесса и ведением статистики выполнения операции выжигания.

4. Отмена выжигания по нажатию кнопки, а также возможность продолжения выжигания с указанной точки.

 

Алгоритм выжигания по точкам, реализованный программно на микроконтроллере особо рассматривать не будем, так как он практически аналогичен алгоритму сверления отверстий за исключением некоторых моментов:

- в качестве параметров на микроконтроллер передаются данные о начальной позиции «выжигателя», о высоте перемещения «выжигателя», о времени задержки «выжигателя» на поверхности материала.

- сверло в текущей операции не задействовано, следственно и двигатель сверла включать/выключать нет необходимости.

- для выжигания одной точки необходимо выполнить три команды в отличие двух при сверлении:

а) перемещение шпинделя станка в указанную точку координат;

б) опускание выжигателя на поверхность материала для выжигания;

в) поднимание выжигателя в начальную точку и ожидание данных о следующей точке.

Алгоритм и программную реализацию модуля выжигания по точкам на ПК рассмотрим более подробно.

В первую очередь, загружается изображение в поле TImage. Для этого использован стандартный диалог загрузки изображений. Для работы необходим предварительно обработанный графический файл в формате *.bmp. Под предварительной обработкой следует понимать приведение изображения в оттенки серого либо черно-белого цвета, а также коррекция яркости, контраста, для создания более эффективного изображения. Эффективность изображения заключается в создании минимального числа точек для отображения нужного изображения. Это требование обусловлено тем, что для выполнения выжигания необходимо определенное время, а также интенсивное выжигание в одной области приведет к сливанию выжженных точек в одно пятно, которое ухудшит визуальное восприятие готового продукта.

 После загрузки изображения, оно появится в поле приложения для визуального наблюдения. Далее необходимо анализировать информацию на изображении для формирования блока данных на отправку на МК. Для этого было решено программно исследовать каждый пиксель изображения на цветовую информацию. Практически это было реализовано при помощи функции ImageV->Canvas->Pixels[x][y], которая возвращает число и трех составляющих цветовой палитры. Чем меньше это число, тем темнее пиксель на изображении. Используя эту функцию, было решено отбирать только те точки, интенсивность которых можно задавать непосредственно на форме приложения управления станком ЧПУ. Для этой цели был использован ползунок с ограничивающими параметрами в виде числовых констант под названием Интенсивность. Можно указать выбор пикселей, начиная от черных и заканчивая всеми пикселями, отличными от белых.

Сканируя изображение попиксельно, отбираются только точки, удовлетворяющие всем выбранным параметрам, записываем в блок данных координаты соответствующих пикселей для последующей отправки, одновременно отмечая на изображении зеленым цветом выбранные точки. Данная функциональность позволяет визуально анализировать полученные данные для выжигания. В случае неудовлетворения или других причин, можно изменить параметры и вновь произвести сканирование изображение с новыми параметрами отбора. Также есть возможность указать масштаб переносимого изображения, визуально это не отражается, но можно увидеть разницу в данных для отправки на МК. Для задания масштаба использован ползунок «Масштаб» с возможностью выбора от 10% до 400%.  Внешний вид модуля показан на рис. 2.7.1.

После формирования блока данных, в отведенное поле выводятся данные, которые практически готовы для отправки на МК. Далее по нажатию кнопки отправляется блок данных с командой на выжигание и с параметрами, необходимыми для выполнения операции. Командой на выжигание является текстовая строка "G22\n", за ней отправляются данные о начальной точке, точки достижения поверхности обрабатывания, временной задержки и отправка строки "DRL1\n", указывающая, что сейчас будет передача данных о координатах точек. И затем включается таймер ведения диалога между МП и ПК, каждая последующая строка будет отправляться лишь после получения подтверждения о выполнении предыдущей команды в виде строки координат о положении шпинделя в координатной плоскости.

 

Рис. 2.7.1. – внешний вид модуля выжигания.

Остановка выполнения текущей операции может быть осуществлена при отправке строки "DRL0\n", пауза может быть осуществлена путем приостановления таймера ведения диалога. Для выполнения этих операций использована панель управления мультимедиа. Также добавлена опция продолжения с указанной точки. Предполагается ведение журнала для возможности автоматического продолжения выполнения операции при различных сбоях в работе, как станка, так и компьютера.

На первом этапе тестирования модуля выжигания, были обнаружены те же недостатки что и при сверлении. Речь идет о точности позиционирования станка, вернее о разрешающей способности. Как говорилось ранее – минимальное расстояние, на которое можно переместить шпиндель станка, равно 0.8 мм. То есть расстояние между пикселями на переносимом материале составляет около 0.8 мм в зависимости от диаметра выжигающего инструмента. Вопрос о совершенствовании станка и программных модулей для увеличения точности стал еще более актуальным.

 

Модернизация комплекса ЧПУ

Ранее описывалась модернизация станка, заключающаяся в увеличении передаточного числа от ШД к лентам перемещения кареток в координатах X и Y. Теперь, проанализировав еще раз модуль управления ШД на микроконтроллере, было решено увеличить точность программно. В первую очередь был проанализирован предполагаемый результат данного мероприятия. Теоретически, была поставлена задача: сократить минимальное расстояние перемещения каретки станка с 0.8 мм до 0.2 мм, что удовлетворило бы большинство потребностей при выполнении различных операций. То есть точность станка предполагается увеличить в 4 раза.

Разберем имеющийся алгоритм управления шаговым двигателем для перемещения на определенный имеющийся на данный момент минимальный угол.

for(i=1;i<=ar;i++)          //импульсы шаг Ось X вперед {     PORTD.4 = 0; PORTD.7 = 1; //0001 delay_ms(sleep); PORTD.5 = 0; PORTD.4 = 1; //0010 delay_ms(sleep); PORTD.6 = 0; PORTD.5 = 1; //0100 delay_ms(sleep); PORTD.7 = 0; PORTD.6 = 1; //1000 delay_ms(sleep); } 

 

Данная подпрограмма вызывается при необходимости вращения шагового двигателя для перемещения каретки оси Х вперед на один шаг. Из цикла видно, что для этого необходимо отправить 4 импульса, как и описывалось в теории управления шаговым двигателем. Если подавать за один вызов управления ШД только один импульс, то в 4 раза сократится угол, на который провернется ШД, следовательно, и расстояние, проходимое шпинделем станка в координатной плоскости.

Остается только изменить данный модуль управления ШД. Для этого необходимо при подаче импульса запомнить позицию, чтобы при последующем вызове, подать «правильны» импульс во избежание нарушения схемы управления вращением ШД. Что и было сделано:

for(i=1;i<=ar;i++) {     //импульсы шаг Ось X вперед switch (bx)  { case 0 : PORTD.4 = 0; delay_ms(sleep); PORTD.4 = 1; bx++; break; // 0001 case 1 : PORTD.5 = 0; delay_ms(sleep); PORTD.5 = 1; bx++; break; // 0010 case 2 : PORTD.6 = 0; delay_ms(sleep); PORTD.6 = 1; bx++; break; // 0100 case 3 : PORTD.7 = 0; delay_ms(sleep); PORTD.7 = 1; bx=0; break; // 1000 default :;  } }             

 

В подпрограмме была введена новая переменная bx  которая и выполняет функцию сохранения позиции. 4 импульса – 4 возможных значений в дополнительной переменной. При Подаче одного импульса – увеличивается значение bx на 1 и при следующем вызове подпрограммы будет подан «нужный» импульс. При достижении 4 импульса, переменная обнуляется, и цикл подачи импульсов будет продолжаться в соответствии с таблицей импульсов для управления ШД. Также была изменена подпрограмма перемещения каретки в противоположную сторону. Были изменены только подпрограммы управления ШД в режиме полного шага. В случае успешного тестирования будут изменены и подпрограммы управления ШД в режиме половинного шага.

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

После нескольких тестирований, проанализировав ситуацию, было обнаружено, что причина в неправильном управлении ШД. Это обусловлено несоответствием подачи «нужных» импульсов при смене направления с прямого на противоположное. Это обусловлено неправильной организацией цикла управления ШД в обратном направлении. Теоретически был разработан алгоритм управления ШД в обратном направлении с любого момента управления в прямом направлении каретки. Соответственно были изменены необходимые участки подпрограммы. Вот пример перемещения каретки по оси Х в обратном направлении:

for(i=1;i<=ar;i++) {      //импульсы шаг Ось X switch (bx)  { case 0 : PORTD.7 = 0; delay_ms(sleep); PORTD.7 = 1; bx=3; break; // 1000 case 1 : PORTD.4 = 0; delay_ms(sleep); PORTD.4 = 1; bx--; break; // 0001 case 2 : PORTD.5 = 0; delay_ms(sleep); PORTD.5 = 1; bx--; break; // 0010 case 3 : PORTD.6 = 0; delay_ms(sleep); PORTD.6 = 1; bx--; break; // 0100 default : ;  }  }

 

Сравнив с предыдущим фрагментов, видно, что переменная bx не увеличивается, а уменьшается, и порядок фаз подобран в соответствии с теоретическими расчетами.

Вновь был «прошит» микроконтроллер, инициализация, тестирование, и успешный результат. Цель была достигнута, теперь точность позиционирования в 4 раза выше, а от первоначального результата в 8 раз, и за один шаг, шпиндель проходит расстояние 0.2 мм.

После еще нескольких тестирований станка, было вновь доказано что для некоторых операции, необходимо управление в режиме половинного шага, так как нужна большая мощность перемещения станка, в основном в оси Х, так как это наиболее нагруженная часть станка.

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

for(i=1;i<=ar;i++) {     //импульсы полушаг Ось X Вперед switch (bx)  { case 0 : PORTD.7 = 0; PORTD.4 = 0; delay_ms(sleep); //1001 PORTD.7 = 1; delay_ms(sleep);                //0001                         PORTD.4 = 1; bx++; break; case 1 : PORTD.4 = 0; PORTD.5 = 0; delay_ms(sleep); //0011 PORTD.4 = 1; delay_ms(sleep);                //0010                         PORTD.5 = 1; bx++; break; case 2 : PORTD.5 = 0; PORTD.6 = 0; delay_ms(sleep); //0110 PORTD.5 = 1; delay_ms(sleep);                //0100                         PORTD.6 = 1; bx++; break; case 3 : PORTD.6 = 0; PORTD.7 = 0; delay_ms(sleep); //1100 PORTD.6 = 1; delay_ms(sleep);                //1000                         PORTD.7 = 1; bx=0; break; default : ;  }               }

 

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

 

Дата: 2019-12-22, просмотров: 199.