РадиоКот >Схемы >Цифровые устройства >Автоматика >

Теги статьи:

STEP/DIR контроллер 3-х шаговых двигателей на микроконтроллере (для станка ЧПУ)

Автор: Ярослав Холявко aka mr_freeman
Опубликовано 05.10.2011
Создано при помощи КотоРед.

Добрый день!

Как-то загорелся я построить себе домашний ЧПУ станок для сверления плат, а в будущем, может, и для их гравировки. Купил шаговики (униполярные), от старых матричных принтеров, материалы. Несколько месяцев ушло на сборку, большая часть времени ушла на поиск нужных материалов (фторопласт, направляющие). В результате станок был готов.

 

Вот пришло время собрать электронику. Сразу покопавшись в просторах инета, начитался, что обязательно нужна опторазвязка LPT-порта. Относительно контролера, сразу захотелось на микроконтроллере – если что и прошивку можно переписать, и подправить. В общем, нашел одну схему на PIC, с контролем по току, ШИМом и прочей ерундой. После сборки и прошивки схема сразу заработала, но… рано обрадовался! После первого же запуска станка появилась куча глюков – то ШИМ пропадал, то включался в ненужное время, пропуск шагов, зависание. Настраивал, переделывал я эту схему пару дней, в результате просто забил.

Решил применить самое популярное в инете решение L297+L298. Сразу же сжег одну L298. В общем, после настройки и отладки L298 дико грелась даже при довольно большом радиаторе (двигатели брали до 3-х ампер). Во время 10-минутного теста станка разорвалась вторая L298, при том, что никакого замыкания нигде не было и температура и ток была в пределах нормы. Заменил все L298 на полевики IRFZ34n, и все кардинально улучшилось! Они почти не грелись даже на максимальной нагрузке, так что могли спокойно обходится без радиатора совсем. Но не все так хорошо. С полевиками в режиме удержания не запускался ШИМ. Может где-то был косяк в схеме, так как ШИМ не работал ни на одной из трех плат. В общем наигрался я и с этой схемой, в результате чего просто добавили таймер на ne555, который бы отключал двигатель после секундного простоя.

После запуска появилась куча глюков – станок растягивал все по осям, корявил и дергался. Причина оказалась в опторазвязке. Прикинув, что станок у меня питаться будет от отдельного компьютерного блока питания и что LPT порту ничего не угрожает, выбросил ее совсем, поигрался с настройками в MACH3 - часть глюков исчезла, но не все. В конце концов забил я и на эту схему и на станок в общем.

Прошло пол года, а станок все пылился в углу комнаты. Как-то вечером, после сверления вручную очередной платы, опять появилось вдохновение. Решил сделать станку новые мозги – на контроллере со своей прошивкой.

Почему выбор пал именно на Atmega16? Такой жирный и дорогой с кучей ненужной периферии? (Впрочем, дороговизна относительна - 3шт. L297 – 75 грн., Мега16 – 36 грн.)

  1. У меня валялись несколько не востребованных мег16 в дип корпусе – это основная причина.
  2. У него куча выводов. Не очень то хотелось играться со всякими сдвиговыми регистрами. Кроме того (по опыту предыдущих схем) - чем оно проще тем лучше.
  3. У меги16 целых три внешних прерывания, что очень удобно. Конечно, можно было обойтись без них совсем, но см. пункт 1 и 2.
  4. Хотелось бы в будущем добавить всяких полезных функций – датчики температуры на двигатели, управление вытяжкой и охлаждением.

Вырисовалась вот такая схема (сразу извините за месиво, делалось очень быстро):

 

Все резисторы по 27 Ом., кроме R1,R27 (4.7k), R6,R28,R33,R34 (100Ом. Впрочем их можете не ставить, как и светодиоды – они нужны были только для отладки). Колодка J1 – питание (1 +12, 2-3 земля, 4 +5). +12 можете не подводить (в будущем планировалось управлять реле). Если будете питать схему не от компьютерного БП, то поставьте 7805 в цепь питания.

Так же стоит добавить пару конденсаторов по 100nF возле ног контроллера.

ХА – выход управляющих сигналов для первого двигателя.

ХВ – для второго.

ХС – для третьего.

ХD – запасной разъем. Для платы с реле.

JP1 – разъем ISP для программирования контроллера.

X9 – подключение аварийной кнопки.

С LPT порта должны приходить такие сигналы:

2 – STEP A

3 – STEP B

4 – STEP C

5 – DIR A

6 – DIR B

7 – DIR C

В разъеме управляющих сигналов для двигателей 1 контакт – ШИМ выход, 2 – 5 – управляющие выходы, 6 – земля.

Так же с LPT порта выведена пара запасных контактов – на всякий случай.

 

Силовые цепи размещаются на отдельных платах.

Тут есть два варианта:

1. 

Все силовые цепи коммутируются через полевики Q2-Q5, ШИМ сигнал отдельно коммутирует + питания через полевик Q6. Кому ШИМ не нужен, можете его выкинуть.

Достоинства: упрощение конструкции из-за отсутствия логики, нет необходимости применять отдельные радиаторы для каждого полевика или изолировать их друг от друга – в основном греется только Q6.

 

2.

Здесь применены элементы лог. «И» для вывода ШИМ сигнала через полевики.

Достоинства: на один полевик и транзистор меньше.

Недостатки: Придется на каждый полевик цеплять радиатор, либо изолировать их друг от друга. Еще нужно будет развезти логику.

 

Так же контроллер должен работать и с мостовыми схемами для биполярных двигателей, но такой вариант не проверялся. Кто сильно горит желанием, может втулить вместо полевиков L298... но я б такого не делал.

 

Для себя я выбрал первый вариант. В конце вместо IRF520 поставил IRFZ34N, а вместо IRF9530 – IRF9Z34N.

Еще лучше добавить шунтирующие диоды или поставить сборку L6210. Я никакие диоды не ставил и еще ничего не сгорело.

Контроля по току нет -  это усложнило бы схему и сделало бы ее менее надежной, без него все прекрасно работает вот уже пол года. Кроме того, мне он был не нужен.

 

Логика работы такова: По спадающему фронту сигнала STEP происходит переключение обмоток в направлении, которое определяет сигнал DIR. При отсутствии сигнала STEP больше 750мс, включается режим удержания, при котором на двигатель подается 20-процентный ШИМ. Каждый двигатель управляется независимо от других. Все просто и банально.

После прошивки контроллера, схема должна сразу заработать. Ах да, забыл… во фьюзах выберете работу от внешнего кварца и выключите JTAG.

В настройках MACH3 сигнал STEP – низкоуровневый.

Если двигатель дергается, но не крутится, проверьте правильность подключения обмоток.

 

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

 

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

 

Спасибо за внимание, надеюсь, кому-то пригодится.

 Если есть вопросы, пишите на почту или на форум.

 

Удачи!


Файлы:
Прошивка МК


Все вопросы в Форум.