Автор работы: Пользователь скрыл имя, 07 Апреля 2011 в 00:32, дипломная работа
Целью данной дипломной работы является создание программно-аппаратного комплекса с ЧПУ управлением, удовлетворяющего всем вышеприведенным требованиям. Комплекс ЧПУ позволяет выполнять множество задач, которые могут быть поставлены в зависимости от фантазии обладателя.
Программных причин, не позволяющих выполнять выжигание методом «рисования» на текущий момент всего две, которые могут быть решены путем изменения программного кода, как на микроконтроллере, так и в программном продукте управления станком.
На
уровне микроконтроллера решение данной
проблемы заключается в
В
программном продукте управления станком
ЧПУ необходимо реализовать модуль
конвертирования векторных
Программные причины небыли решены на текущий момент в основном из-за нехватки времени для реализации необходимых методом и создания модулей.
Для реализации точечного метода имеется почти готовый модуль сверления, который был немного изменен для выполнения операции выжигания по точкам. Будем полагать, что координаты отверстий – это координаты точек, только вместо сверла, необходимо установить инструмент «выжигатель», и сверло включать нет необходимости, а питание на «выжигатель» подается постоянно от отдельного источника питания. Опишем алгоритм выжигания по точкам.
I – На микроконтроллере:
II – В программном комплексе на ПК.
Алгоритм выжигания по точкам, реализованный программно на микроконтроллере особо рассматривать не будем, так как он практически аналогичен алгоритму сверления отверстий за исключением некоторых моментов:
-
в качестве параметров на
- сверло в текущей операции не задействовано, следственно и двигатель сверла включать/выключать нет необходимости.
-
для выжигания одной точки
необходимо выполнить три
а) перемещение шпинделя станка в указанную точку координат;
б) опускание выжигателя на поверхность материала для выжигания;
в) поднимание выжигателя в начальную точку и ожидание данных о следующей точке.
Алгоритм и программную реализацию модуля выжигания по точкам на ПК рассмотрим более подробно.
В первую очередь, загружается изображение в поле TImage. Для этого использован стандартный диалог загрузки изображений. Для работы необходим предварительно обработанный графический файл в формате *.bmp. Под предварительной обработкой следует понимать приведение изображения в оттенки серого либо черно-белого цвета, а также коррекция яркости, контраста, для создания более эффективного изображения. Эффективность изображения заключается в создании минимального числа точек для отображения нужного изображения. Это требование обусловлено тем, что для выполнения выжигания необходимо определенное время, а также интенсивное выжигание в одной области приведет к сливанию выжженных точек в одно пятно, которое ухудшит визуальное восприятие готового продукта.
После загрузки изображения,
Сканируя изображение попиксельно, отбираются только точки, удовлетворяющие всем выбранным параметрам, записываем в блок данных координаты соответствующих пикселей для последующей отправки, одновременно отмечая на изображении зеленым цветом выбранные точки. Данная функциональность позволяет визуально анализировать полученные данные для выжигания. В случае неудовлетворения или других причин, можно изменить параметры и вновь произвести сканирование изображение с новыми параметрами отбора. Также есть возможность указать масштаб переносимого изображения, визуально это не отражается, но можно увидеть разницу в данных для отправки на МК. Для задания масштаба использован ползунок «Масштаб» с возможностью выбора от 10% до 400%. Внешний вид модуля показан на рис. 2.7.1.
После
формирования блока данных, в отведенное
поле выводятся данные, которые практически
готовы для отправки на МК. Далее
по нажатию кнопки отправляется блок
данных с командой на выжигание и
с параметрами, необходимыми для выполнения
операции. Командой на выжигание является
текстовая строка "G22\n", за ней отправляются
данные о начальной точке, точки достижения
поверхности обрабатывания, временной
задержки и отправка строки "DRL1\n", указывающая, что сейчас
будет передача данных о координатах точек.
И затем включается таймер ведения диалога
между МП и ПК, каждая последующая строка
будет отправляться лишь после
получения подтверждения о выполнении
предыдущей команды в виде строки координат
о положении шпинделя в координатной плоскости.
Рис. 2.7.1. – внешний вид модуля выжигания.
Остановка выполнения текущей операции может быть осуществлена при отправке строки "DRL0\n", пауза может быть осуществлена путем приостановления таймера ведения диалога. Для выполнения этих операций использована панель управления мультимедиа. Также добавлена опция продолжения с указанной точки. Предполагается ведение журнала для возможности автоматического продолжения выполнения операции при различных сбоях в работе, как станка, так и компьютера.
На
первом этапе тестирования модуля выжигания,
были обнаружены те же недостатки что
и при сверлении. Речь идет о точности
позиционирования станка, вернее о
разрешающей способности. Как говорилось
ранее – минимальное
Ранее описывалась модернизация станка, заключающаяся в увеличении передаточного числа от ШД к лентам перемещения кареток в координатах X и Y. Теперь, проанализировав еще раз модуль управления ШД на микроконтроллере, было решено увеличить точность программно. В первую очередь был проанализирован предполагаемый результат данного мероприятия. Теоретически, была поставлена задача: сократить минимальное расстояние перемещения каретки станка с 0.8 мм до 0.2 мм, что удовлетворило бы большинство потребностей при выполнении различных операций. То есть точность станка предполагается увеличить в 4 раза.
Разберем имеющийся алгоритм управления шаговым двигателем для перемещения на определенный имеющийся на данный момент минимальный угол.
for(i=1;i<=ar;i++)
//импульсы { 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 импульса, переменная обнуляется, и цикл подачи импульсов будет продолжаться в соответствии с таблицей импульсов для управления ШД. Также была изменена подпрограмма перемещения каретки в противоположную сторону. Были изменены только подпрограммы управления ШД в режиме полного шага. В случае успешного тестирования будут изменены и подпрограммы управления ШД в режиме половинного шага.
Повторно
был «прошит» микроконтроллер обновленной
версией программного кода. При подаче
питания успешно произошла