![]() |
![]() |
|||||||||||||||
STEP/DIR контроллер 3-х шаговых двигателей на микроконтроллере (для станка ЧПУ)
Автор: Ярослав Холявко aka mr_freeman Добрый день! Как-то загорелся я построить себе домашний ЧПУ станок для сверления плат, а в будущем, может, и для их гравировки. Купил шаговики (униполярные), от старых матричных принтеров, материалы. Несколько месяцев ушло на сборку, большая часть времени ушла на поиск нужных материалов (фторопласт, направляющие). В результате станок был готов.
Вот пришло время собрать электронику. Сразу покопавшись в просторах инета, начитался, что обязательно нужна опторазвязка LPT-порта. Относительно контролера, сразу захотелось на микроконтроллере – если что и прошивку можно переписать, и подправить. В общем, нашел одну схему на PIC, с контролем по току, ШИМом и прочей ерундой. После сборки и прошивки схема сразу заработала, но… рано обрадовался! После первого же запуска станка появилась куча глюков – то ШИМ пропадал, то включался в ненужное время, пропуск шагов, зависание. Настраивал, переделывал я эту схему пару дней, в результате просто забил. Решил применить самое популярное в инете решение L297+L298. Сразу же сжег одну L298. В общем, после настройки и отладки L298 дико грелась даже при довольно большом радиаторе (двигатели брали до 3-х ампер). Во время 10-минутного теста станка разорвалась вторая L298, при том, что никакого замыкания нигде не было и температура и ток была в пределах нормы. Заменил все L298 на полевики IRFZ34n, и все кардинально улучшилось! Они почти не грелись даже на максимальной нагрузке, так что могли спокойно обходится без радиатора совсем. Но не все так хорошо. С полевиками в режиме удержания не запускался ШИМ. Может где-то был косяк в схеме, так как ШИМ не работал ни на одной из трех плат. В общем наигрался я и с этой схемой, в результате чего просто добавили таймер на ne555, который бы отключал двигатель после секундного простоя. После запуска появилась куча глюков – станок растягивал все по осям, корявил и дергался. Причина оказалась в опторазвязке. Прикинув, что станок у меня питаться будет от отдельного компьютерного блока питания и что LPT порту ничего не угрожает, выбросил ее совсем, поигрался с настройками в MACH3 - часть глюков исчезла, но не все. В конце концов забил я и на эту схему и на станок в общем. Прошло пол года, а станок все пылился в углу комнаты. Как-то вечером, после сверления вручную очередной платы, опять появилось вдохновение. Решил сделать станку новые мозги – на контроллере со своей прошивкой. Почему выбор пал именно на Atmega16? Такой жирный и дорогой с кучей ненужной периферии? (Впрочем, дороговизна относительна - 3шт. L297 – 75 грн., Мега16 – 36 грн.)
Вырисовалась вот такая схема (сразу извините за месиво, делалось очень быстро):
Все резисторы по 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 – низкоуровневый. Если двигатель дергается, но не крутится, проверьте правильность подключения обмоток.
Работает сей девайс уже несколько месяцев, глюков не наблюдалось. По сравнению с предыдущими вариантами мозгов станка – это небо и земля.
Извините, если что не по госту или не красиво или не рационально - все делал для себя и на том, что было под рукой, а тут, думаю, выложу в инет, мож кому нужно будет
Спасибо за внимание, надеюсь, кому-то пригодится. Если есть вопросы, пишите на почту или на форум.
Удачи!
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |