Смекни!
smekni.com

Разработка программно аппаратного устройства с числовым программным управлением (стр. 7 из 9)

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

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; // 1000default :;} }

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

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

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

for(i=1;i<=ar;i++){ //импульсы шаг Ось Xswitch (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; // 0100default : ;} }

Сравнив с предыдущим фрагментов, видно, что переменная 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 : ; } }

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


Глава III. Анализ и тестирование комплекса

§3.1. Тестирование комплекса ЧПУ в комплексах компьютерного моделирования

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

Одним минусом данного пакета тестирования, который был наиболее неблагоприятен при работе – незначительное несоответствие функционирования комплекса. Это связано с несоответствием тех или иных промежуточных команд взаимодействия, например, некоторые неучтенные разработчиками пакета заводские особенности микроконтроллеров, а также немного различный интерфейс обмена между терминалом UART в «протеусе» и на ЭВМ.

В PROTEUS была смоделирована модель взаимодействия между узлами и устройствами комплекса ЧПУ, которая включала в себя:

- микроконтроллер;

- терминал UART;

- необходимые «кнопки», переключатели и т.д.;

- светодиоды для индикации фаз ШД.

Светодиоды было решено использовать вместо существующих моделей ШД для того чтобы можно было проконтролировать каждый импульс для правильной работы ШД. Комплекс эмулирования показан на рисунке 3.1.1.

Рис. 3.1.1. – внешний вид комплекса в ПРОТЕУСЕ.

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

§3.2. Тестирование модуля сверления

Первым был разработан модуль сверления отверстий, используя формат данных EXCELLON, описанный ранее. При запуске программы, реализующей управление комплексом ЧПУ, данный модуль является активным по умолчанию, ну или в случае его не активности, можно выбрать его, используя страничный выбор модулей (PageControl). В первую очередь необходимо подключить все соединительные провода аппаратной части с ПК и подать питание на станок ЧПУ. Далее открыть коммутируемый порт интерфейса RS-232. По нажатию копки загрузить, диалог загрузки предлагает выбрать файл формата *.drl. Выбираем ранее созданный файл сверления в программе рисования плат, и открываем его. Ниже кнопки появилась информация об имени текущего файла. Теперь необходимо проанализировать открытый файл, для этого нажимаем на, логически понятную кнопку, в виде стрелочек вправо. По нажатию кнопки происходит обработка файла, которая естественно займет тот или иной временной интервал. При небольшом количестве отверстий этот интервал незначителен. При создании той или иной несложной схемы, количество отверстий не превысит 200-400 отверстий. Ведь даже схемы, на которой около двухсот отверстий, подразумевают размещение, примерно 10 микроконтроллеров ATMega 8 и необходимых элементов, или около 15 микросхем серии К155.

Но для тестирования была нарисована схема, на которой, как потом стало известно, 1243 отверстий, что очень подходит для тестирования комплекса. Анализ такого файла был осуществлен менее чем за секунду. Этот временной интервал также зависит и от производительности компьютера. Но при работе на разных ЭВМ, это не сильно различимо. После анализа файла, в поле Memo помещается блок данных для отправки на аппаратную часть комплекса, а на изображении в виде плоскости координат отмечаются зеленые точки, означающие отверстия для сверления – рис. 3.2.1.

Также необходимо указать параметры для правильной работы устройства. Это такие как начальная позиция сверла, рабочая глубина сверла, начальная точка платы и размер платы. Эти данные будут влиять на вид работы станка. Основными параметрами являются начальная позиция сверла и рабочая глубина сверла. Начальная позиция определяет положение сверла в плоскости OZ над обрабатываемой поверхностью. А рабочая глубина – расстояние, на которое опустится или поднимется сверло. При сверлении необходимо экспериментально добиться оптимальных параметров. Ведь чем меньше величина опускания сверла, тем быстрее оно будет просверлено, то есть нужно установить начальную позицию как можно ближе к обрабатываемой поверхности.