- Делаем контроллер шагового двигателя. Часть 1.
- 3d-принтер и ЧПУ станок в одном устройстве своими руками
- Страницы
- воскресенье, 1 июня 2014 г.
- 3. Изготовление драйвера шагового двигателя (для экспериментов).
- 2 Схемы
- Простой драйвер шагового двигателя
- Схема драйвера шагового двигателя
- Особенности схемы и детали
- Биполярный контроллер шаговых двигателей
Делаем контроллер шагового двигателя. Часть 1.
Читая материалы по STEP/DIR контроллерам шаговых двигателей в интернете, не нашел ни одного более-менее документированного проекта с исходниками на Си для управления шаговым двигателем в режиме «микрошаг» (wave step).
Где такой контроллер может найти применение?
1) Управление станком ЧПУ
2) Робототехника
3) Всякая хрень где нужно точное перемещение вала ШД
Большинство проектов, найденных мной в интернете имеют ряд недостатков:
1) Слишком навороченная схема (применение дорогих специализированных микросхем, которые иногда труднодоставаемы)
2) Отсутствие режима «микрошаг» (1/4, 1/16, 1/32 шага);
3) Афтар просит бабла за прошитый МК (PIC);
4) Запутанный и неоптимальный код на Басике.
Проанализировав все это было решено начать проект простого STEP/DIR контроллера на распространенных комплектующих. В последствии ПО будет перенесено на STM8 и какую-нибудь tiny2313. В качестве МК подойдет любой контроллер, имеющий хотя-бы два 8-и битных ШИМ выхода. Как два ШИМа распределить на четыре управляющих ключа, я расскажу позже. А пока, чтобы не заморачиваться, возмем atmega48 с четырьмя ШИМами и приступим к написанию ПО.
Шаговые двигатели бывают разных типов. Более подробно о них можно прочитать в Педивикии. На сегодняшний день распростанены два типа униполярный и биполярный ШД. Униполярные постепенно отмирают. Но мы начнем именно с униполярного, т.к. для него не надо городить мост, а можно использовать MOSFETы с материнок.
Рис.1
На Рис.1 представлены три распростаненных режима управления ШД
— Полный шаг
— Полушаг
— Микрошаг
В аттаче два проекта для ATmega48 и для PIC18F252. Оба работают в режиме 1/16 шага. Плюсом к проектам идет симуляция Протеуса — можно двиглом плавно микрошагово покрутить даже.
В проекте на ATmega48 массив полупериода синусойды генерируется при старте МК и отправляется в USART с целью отладки, позже мы запихнем один массив на 128 значений во флеш и будем доставать из него значения для ШИМ в зависимости от требуемой кратности шага. То есть, либо 0,1,2,3-й…, либо 0, 2, 4, 6-й элементы и так далее.
Источник
3d-принтер и ЧПУ станок в одном устройстве своими руками
Блог для тех, у кого чешутся руки и есть желание заниматься цифровой техникой и не только цифровой и не только техникой.
Страницы
воскресенье, 1 июня 2014 г.
3. Изготовление драйвера шагового двигателя (для экспериментов).
Получается если повторять эту последовательность сигналов ABCD можно вращать ротор электромотора в одну сторону.
А как вращать ротор в другую сторону? Да очень просто, нужно изменить последовательность сигналов с ABCD на DCBA.
А как поворачивать ротор на конкретный заданный угол, например 30 градусов? У каждой модели шагового электромотора есть такой параметр как число шагов. У шаговиков которые я вытащил из матричных принтеров этот параметр 200 и 52, т.е. чтобы совершить полный оборот 360 градусов одним двигателям нужно пройти 200 шагов а другим 52. Получается чтобы повернуть ротор на угол 30 градусов, нужно пройти:
-в первом случае 30:(360:200)=16,666. (шагов) можно округлить до 17 шагов;
-во втором случае 30:(360:52)=4,33. (шага), можно округлить до 4 шагов.
Как видите есть достаточно большая погрешность, можно сделать вывод что чем больше шагов у мотора тем меньше погрешность. Погрешность можно уменьшать если использовать полушаговый или микрошаговый режим работы или механическим способом — использовать понижающий редуктор в этом случае страдает скорость движения.
Как управлять скоростью вращения ротора? Достаточно изменить длительность импульсов подаваемых на входы ABCD, чем длиннее импульсы по оси времени, тем меньше скорость вращения ротора.
Полагаю этой информации будет достаточно чтобы иметь теоретическое представление о работе шаговых электромоторов, все остальные знания можно будет получить экспериментируя.
И так перейдем к схемотехнике. Как работать с шаговым двигателем мы разобрались, осталось подключить его к Arduino и написать управляющую программу. К сожалению напрямую подключить обмотки мотора к выходам нашего микроконтроллера невозможно по одной простой причине — нехватка мощности. Любой электромотор пропускает через свои обмотки достаточно большой ток, а к микроконтроллеру можно подключить нагрузку не более 40 mA (параметры ArduinoMega 2560). Что же делать если есть необходимость управлять нагрузкой например 10A да еще и напряжением 220В? Эту проблему можно решить если между микроконтроллером и шаговым двигателем интегрировать силовую электрическую схему, тогда можно будет управлять хоть трехфазным электромотором который открывает многотонный люк в ракетную шахту :-). В нашем случае люк в ракетную шахту открывать не нужно, нам нужно всего лишь заставить работать шаговый мотор и в этом нам поможет драйвер шагового двигателя. Можно конечно купить готовые решения, на рынке их очень много, но я буду делать свой собственный драйвер. Для этого мне понадобятся силовые ключевые полевые транзисторы Mosfet, как я уже говорил эти транзисторы идеально подходят для сопряжения Arduino с любыми нагрузками.
На рисунке ниже представлена электрическая принципиальная схема контроллера шагового двигателя.
В качестве силовых ключей я применил транзисторы IRF634B максимальное напряжение исток-сток 250В, ток стока 8,1А, этого более чем достаточно для моего случая. Со схемой более менее разобрались будем рисовать печатную плату. Рисовал в встроенном в Windows редакторе Paint, скажу это не самая лучшая затея, в следующий раз буду использовать какой-нибудь специализированный и простой редактор печатных плат. Ниже представлен рисунок готовой печатной платы.
Далее это изображение в зеркальном отражении распечатываем на бумаге при помощи лазерного принтера. Яркость печати лучше всего сделать максимальной, а бумагу нужно использовать не обычную офисную а глянцевую, подойдут обычные глянцевые журналы. Берем лист и печатаем поверх имеющегося изображения. Далее получившуюся картинку прикладываем к заранее подготовленному куску фольгированного стеклотекстолита и хорошенько проглаживаем утюгом в течении 20 минут. Утюг нужно нагреть до максимальной температуры.
Как подготовить текстолит? Во первых его нужно отрезать по размеру изображения печатной платы (при помощи ножниц по металлу или ножовкой по металлу), во вторых зашкурить края мелкой наждачной бумагой, чтобы не осталось заусенцев. Также необходимо пройтись наждачкой по поверхности фольги, снять окислы, фольга приобретет ровный красноватый оттенок. Далее поверхность обработанную наждачной бумагой нужно протереть ваткой смоченной в растворитель (используйте 646 растворитель он меньше воняет).
После прогрева утюгом, тонер с бумаги запекается на поверхность фольгированного стеклотекстолита в виде изображения контактных дорожек. После этой операции плату с бумагой необходимо остудить до комнатной температуры и положить в ванночку с водой примерно на 30 минут. За это время бумага раскиснет и ее нужно аккуратно скатать подушечками пальцев с поверхности текстолита. На поверхности останутся ровные черные следы в виде контактных дорожек. Если у вас не получилось перенести изображение с бумаги и у вас есть огрехи, тогда следует смыть тонер с поверхности текстолита растворителем и повторить все заново. У меня все получилось с первого раза.
После получения качественного изображения дорожек, необходимо вытравить лишнюю медь, для этого нам понадобится травильный раствор который мы приготовим сами. Раньше для травления печатных плат я использовал медный купорос и обычную поваренную соль в соотношении на 0,5 литра горячей воды по 2 столовые ложки с горкой медного купороса и поваренной соли. Все это тщательно размешивалось в воде и раствор готов. Но в этот раз попробовал иной рецепт, очень дешевый и доступный.
Рекомендуемый способ приготовления травильного раствора:
В 100 мл аптечной 3% перекиси водорода растворяется 30 г лимонной кислоты и 2 чайные ложки поваренной соли. Этого раствора должно хватить для травления площади 100 см2. Соль при подготовке раствора можно не жалеть. Так как она играет роль катализатора и в процессе травления практически не расходуется.
После приготовления раствора, печатную плату необходимо опустить в емкость с раствором и наблюдать за процессом травления, тут главное не передержать. Раствор съест непокрытую тонером поверхность меди, как только это произойдет плату необходимо достать и промыть холодной водой, далее ее нужно просушить и снять с поверхности дорожек тонер при помощи ватки и растворителя. Если в вашей плате предусмотрены отверстия для крепления радиодеталей или крепежа, самое время просверлить их. Я опустил эту операцию по причине того что это всего лишь макетный драйвер шагового двигателя, предназначенный для освоения новых для меня технологий.
Приступаем к лужению дорожек. Это необходимо сделать чтобы облегчить себе работу при пайке. Раньше я лудил при помощи припоя и канифоли, но скажу это «грязный» способ. От канифоли много дыма и шлака на плате который нужно будет смывать растворителем. Я применил другой способ, лужение глицерином. Глицерин продается в аптеках и стоит копейки. Поверхность платы необходимо протереть ваткой смоченной в глицерине и наносить припой паяльником точными мазками. Поверхность дорожек покрывается тонким слоем припоя и остается чистой, лишний глицерин можно удалить ваткой или промыть плату в воде с мылом. К сожалению у меня нет фотографии полученного результата, после лужения, но получившееся качество впечатляет.
Далее необходимо припаять все радиодетали на плату, для пайки SMD компонентов я использовал пинцет. В качестве флюса использовал глицерин. Получилось очень даже аккуратно.
Результат налицо. Конечно после изготовления плата выглядела лучше, на фото она уже после многочисленных экспериментов (для этого она и создавалась).
Листинг программы:
/*
* Тестовая программа для шаговика
*/
#include
#define STEPS 200
Stepper stepper(STEPS, 31, 33, 35, 37);
void setup()
<
stepper.setSpeed(50);
>
void loop()
<
stepper.step(200);
delay(1000);
>
Данная управляющая программа заставляет делать один полный оборот вала шагового двигателя, после перерыва длительностью в одну секунду, повторяется до бесконечности. Можно поэкспериментировать со скоростью вращения, направлением вращения а также углами поворотов.
Драйвер шагового двигателя (версия 2)
Источник
2 Схемы
Принципиальные электросхемы, подключение устройств и распиновка разъёмов
Простой драйвер шагового двигателя
Предлагается 2 варианта схем простейших драйверов шаговых моторов, реально рабочих, так как информация взята из зарубежных радиоконструкторов (ссылка на оригиналы в конце статьи).
Схема драйвера шагового двигателя
Схема драйвера шагового двигателя не содержит дорогих деталей и программируемых контроллеров. Работа может регулироваться в широком диапазоне с помощью потенциометра PR1. Есть изменение направления вращения двигателя. Катушки шагового двигателя переключаются с помощью четырех МОП-транзисторов T1-T4. Применение в блоке транзисторов большой мощности типа BUZ10 позволит подключить двигатели даже с очень большим током.
Особенности схемы и детали
- управление четырехфазным шаговым двигателем
- плавная регулировка скорости вращения в пределах всего диапазона
- изменение направления вращения мотора
- возможная остановка двигателя
- блок питания 12 В постоянного тока
Детали — IC1: 4070, IC2: 4093, IC3: 4027, T1-T4: BUZ10, BUZ11
Блок драйвер шагового двигателя собран на печатной плате, показанной на рисунке. Монтируем, как правило, начиная с припайки резисторов и панелек для интегральных микросхем, а под конец электролитические конденсаторы и транзисторы большой мощности.
Блок, собранный из проверенных компонентов, не требует настройки и запускается сразу после подачи питания. Со значениями элементов, указанными на схеме, позволяет работать двигателю 5,25” и выполняет изменение скорости вращения в интервале от 40 об./мин. до 5 об./мин.
Биполярный контроллер шаговых двигателей
Схема представляет собой дешевую, и прежде всего легко собираемую альтернативу доступным микропроцессорным биполярным контроллерам шаговых двигателей. Рекомендуется там, где точность управления играет меньшую роль, чем цена и надежность.
Принципиальную схему можно разделить на следующие блоки:
- последовательный чип, генерирующий битовые строки,
- локальный генератор тактового сигнала,
- схема управления питанием катушек,
- выходные буферы Н-моста,
- схемы защиты входных сигналов управления.
Контроллер должен питаться постоянным напряжением, хорошо отфильтрованным, желательно стабилизированным.
Теперь пару слов про H-мосты, которые будут работать с этим драйвером. Они должны принимать на своих входах все возможные логические состояния (00, 01, 10, 11), без риска какого-либо повреждения. Просто в некоторых конфигурациях мостов построенных из дискретных элементов, запрещается одновременное включение двух входов — их естественно нельзя использовать с этим контроллером. Мосты выполненные в виде интегральных микросхем (например L293, L298), устойчивы к этому.
И в завершение третий вариант контроллера, на микросхемах STK672-440, имеющий все необходимые защиты и функции смотрите по ссылке.
Источник