Мк-управление микрошаговым драйвером lb1847 из старого принтера

3D принтер RepRap. Часть 4 – электроника

МК-управление микрошаговым драйвером lb1847 из старого принтераВ этой статье речь пойдет об электронной части 3D принтера RepRap, а именно: о шаговых двигателях и драйверах для них, концевиках (endstops), управляющей плате, блоке питания и о том как всё это соединить между собой.
В движение RepRap приводится с помощью шаговых двигателей.

Их вращение дискретно, то есть вал двигателя делая полный оборот последовательно проходит некоторое количество фиксированных положений (шагов). Т.к. размер шага известен, то такой двигатель очень легко заставить повернуться на нужный угол – нужно просто подать ему команду повернуться на количество шагов соответствующее требуемому углу.

Возможность точного позиционирования избавляет от необходимости в обратной связи и сложных алгоритмах управления, а это делает шаговые двигатели очень удобными для использования в машиностроении. Для RepRap обычно используются двигатели которые совершают 200 шагов на полный оборот (т.е. один шаг равен 360 / 200 = 1.8 градусам).

В RepRap Prusa Mendel используется четыре шаговых двигателя для позиционирования каретки (по одному на оси X и Y, и два на ось Z), и один для подачи прутка в экструдер. В типичном варианте все используемые двигатели имеют форм-фактор NEMA17. Это именно форм-фактор (по сути – размеры двигателя), а не какая-то конкретная модель двигателя.

Шаговые двигатели используются биполярные (они, в основном, имеют 4 вывода). Можно использовать и униполярные, просто не задействовав лишние выводы. Подробнее об этом, и вообще о выборе двигателей для RepRap можно почитать здесь.

При выборе двигателя нужно обратить внимание на его момент удержания (holding torque). Для двигателей приводящих в движение каретку достаточно 1.4 кг*см (если верить RepRap Wiki), а для двигателя экструдера нужно минимум 4 кг*см.

Также нужно обратить внимание на то, какой ток потребляет двигатель, поскольку самый часто используемый драйвер шаговых двигателей – A4988 (да и A4983) имеет ограничение в 2А. Поэтому если двигателю нужен ток выше 2А, то в лучшем случае он просто не будет выдавать нужный момент. Напряжение особого значения не имеет, т.к.

его регулирует драйвер шагового двигателя, что бы поддерживать необходимый ток. Для перемещения каретки я использовал двигатели SY42STH47-1684B. Это биполярный NEMA17 двигатель с моментом удержания в 4.4 кг*см, рассчитанный на ток в 1.68А. Кроме того, это весьма популярная модель, и такие двигатели можно найти в местном магазине.

Для экструдера я взял двигатель еще мощнее, а именно – Kysan 1124090 с моментом удержания в 5.5кг*см и током 1.5А. Для управления шаговыми двигателями обычно используется специальный чип – драйвер шагового двигателя.

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

В микрошаговом режиме ротор двигателя может не только дискретно переключаться между шагами, но и “зависать” в промежуточных положениях между двумя шагами. Такой режим работы существенно увеличивает точность позиционирования, и, кроме того, уменьшает шум и вибрацию, присущие шаговым двигателям.

Обычно для 3D принтеров используют популярные драйвера шаговых двигателей – Allegro A4988 и A4983. Они поддерживают ток до двух ампер, и микрошаговый режим 1/16 (т.е. между двумя шагами имеется 16 дополнительных микрошагов, а для двигателя с 200 шагами это целых 3200 микрошагов на оборот).

Чип A4988 поддерживает некоторые дополнительные возможности, такие как, например, встроенная система отключения при перегреве и “low current microstepping” (см. ниже) так что лучше брать его.

Но сами эти чипы слишком мелкие что бы их припаять руками, и требуют некоторую обвязку из резисторов и конденсаторов. К счастью, есть готовые модули для управления шаговым двигателем, например Pololu или StepStick. Я в своем принтере использовал чипы Pololu. Со StepStick нужно быть осторожным, поскольку, в отличие от Pololu, это не конкретный производитель, а скорее просто открытая инструкция по сборке. Реализация же, как и её качество, может очень сильно варьироваться.

Если у вас модуль на основе A4988 я бы рекомендовал обратить внимание на  эту статью.

Если вкратце – для некоторых двигателей (в статье идет речь о двигателе с сопротивлением 1,65 Ом, и на моих двигателях описанная проблема также присутствовала) могут пропускаться микрошаги.

Проблема и решение описаны в даташите к чипу в разделе “Low Current Microstepping”. Собственно решение – пин ROSC должен быть закорочен на землю.  В модуле Pololu этот пин подключен к земле через резистор R4, его нужно аккуратно закоротить перемычкой.

При работе чип драйвера ощутимо нагревается, поэтому я бы советовал установить на каждый чип по радиатору, или организовать активное охлаждение. Я на каждый чип приклеил по небольшому радиатору на теплопроводный клей “Радиал”. Вообще нужно по одному драйверу на каждый шаговый двигатель.

Но, несмотря на то, что двигателей в RepRap Prusa Mendel  используется пять – драйверов нужно четыре, т.к. два двигателя оси Z включены параллельно, и используют один драйвер.

В английском языке это устройство называется endstop, а вот точного перевода на русский я так и не нашел, поэтому будем называть его концевиком, хотя правильнее было бы что-то вроде “датчик крайнего положения”. В простейшей реализации концевик представляет собой обычную кнопку, которая нажимается при достижении кареткой крайнего положения.

Необходимость в таком устройстве возникла потому что шаговые двигатели лишены обратной связи – двигатель может повернуться ровно на N шагов (или микрошагов) по или против часовой стрелке, но сообщить свое текущее положение он не в силах.

Поэтому перед каждой печатью принтер устанавливает каретку в начальное положение (условную точку с координатами (0, 0, 0)), а уже относительно неё рассчитываются остальные координаты. Для установки каретки в начальное положение принтер просто крутит двигатели в сторону уменьшения координат, пока не получит сигнал срабатывания от каждого концевика.

Обычно используются три концевика – по одному на каждую ось, для индикации начального (т.е. с минимальными координатами) положения. Можно поставить шесть (по два на ось, для индикации минимального и максимального положений), но особых преимуществ от этого я не вижу.

Существует два наиболее распространенных варианта концевиков – механические (по сути – просто кнопка), и оптические (срабатывает когда специальный флажок попадает в зазор между светодиодом и фоторезистором). Оптические концевики не содержат движущихся частей и более точны, поэтому предпочтительнее использовать их. Есть еще магнитные концевики, с датчиками Холла, но они не сильно распространены.

Более подробно о концевиках можно почитать здесь. Я для своего принтера сделал оптические концевики по вот этой схеме. Но если не хочется возиться с паяльником, как и все остальное их можно купить.

Обычно для питания принтера используют напряжение 12В. Для питания самого микроконтроллера нужно 5В, но он может питаться и от USB. Самый простой и практичный вариант – обычный компьютерный блок питания. Его просто найти, он дешево стоит, и выдает нужные нам напряжения (12В и 5В, на самом деле есть еще 3.3В, но они нам не нужны).

Что касается мощности – я бы советовал брать блок питания способный отдавать около ток 20А. Один только стол с подогревом требует 10-12 ампер, а еще двигатели, хотэнд, да и вентилятор для обдува модели рано или поздно установить придется. Я себе для RepRap купил блок питания мощность 400W. Заявленный максимальный ток для 12В у него 18А, и пока мне его вполне достаточно.

При использовании компьютерного БП есть небольшой нюанс – у него нет кнопки включения, т.к. предполагается что включать его будет компьютер. Эту проблему легко решить – обычно компьютерные БП включаются путем замыкания двух контактов 20-пинового ATX коннектора,  а именно PS_ON и GND.

Распиновка коннекторов ATX

Я для этих целей сделал перемычку из куска провода:

Перемычка для включения компьютерного блока питания

Но будьте внимательны, т.к. цвета проводов на разных БП могут отличаться.

А некоторые блоки питания вообще не включатся без нагрузки (хотя, на самом деле, все БП не рекомендуется включать без нагрузки).

Более подробно о использовании компьютерного блока питания для RepRap можно прочитать здесь.

Вот мы и добрались до самого интересного, “мозга” принтера. Здесь под контроллером я подразумеваю плату (или несколько плат), которая непосредственно управляет работой принтера, а именно – крутит шаговые двигатели, управляет температурой хотэнда и стола, скоростью вращения вентиляторов.

На высоком уровне работа контроллера выглядит следующим образом – в его память загружается (обычно посредством USB-подключения к компьютеру, но можно использовать и SD-карты памяти) программа на языке G-code, описывающая всё что принтеру нужно сделать для печати модели, а контроллер эту программу выполняет, команда за командой.

Условно контроллер можно разделить на две части: “логическую” и “силовую”. В качестве логической части обычно выступает микроконтроллер с простейшей обвязкой (чаще всего используют микроконтроллеры AVR, но есть варианты контроллеров и с ARM процессорами).

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

Вариантов контроллеров для RepRap очень много, вот здесь можно посмотреть на таблицу сравнения некоторых из них.

Кроме наличия/отсутствия некоторых возможностей контроллеры также отличаются простотой сборки, например, тот же Generation 7 Electronics рассчитан на полностью самостоятельное изготовление, а, скажем, Smoothieboard сделать самому вряд ли удастся.

Я для себя выбрал RAMPS – RepRap Arduino Mega Pololu Shield. Фактически RAMPS это только силовая часть, а в качестве логической выступает Arduino MEGA (я использовал Arduino Mega 2560 REV3), сверху которой “бутербродом” устанавливается сам RAMPS.

Arduino, RAMPS и StepStick.

RAMPS можно собрать самостоятельно, что я сначала и хотел сделать, но прикинув стоимость деталей в розницу на ближайшем радио-рынке, стало понятно что дешевле обойдется купить уже готовую плату. На тот момент самой новой была версия RAMPS 1.4, её я и купил. Основной причиной выбора именно связки Arduino+RAMPS в качестве контроллера послужила её большая популярность, на момент написания статьи это был, наверное, самый популярный и проверенный вариант. Теперь о том как всё вышеперечисленное соединить воедино. Для начала советую заглянуть на описание подключения в статье о RAMPS 1.4. Вот замечательная картинка оттуда:

Схема подключения RAMPS 1.4

А теперь по порядку. Пины для подключения шаговых двигателей на RAMPS обозначены так – 1A, 1B, 2A, 2B. Пины 1A, 1B – одна обмотка двигателя, а 2A, 2B – другая.Что бы определить какой вывод двигателя куда подключать, сначала стоит заглянуть сюда, там есть описание выводов для популярных двигателей, возможно найдется и для вашего. Если нет – можно посмотреть в даташит по двигателю, или же измерить сопротивление между выводами – если два вывода принадлежат к одном обмотке, сопротивление между ними будет намного меньше, чем если бы они принадлежали к разным. Правильность подключения можно будет проверить на этапе калибровки – если при подаче сигнала двигатель не будет вращаться, или будет вибрировать – достаточно поменять два любых провода местами и попробовать снова (и так до достижения желаемого результата). О подключение шаговых двигателей также можно прочитать здесь. Двигатели оси Z подключаются параллельно, к одному драйверу. На RAMPS предусмотрено шесть разъемов для подключения концевиков, их порядок следующий- X min, X max, Y min, Y max, Z min, Z max. Подключать концевики нужно соблюдая полярность. Если смотреть на разъемы концевиков со стороны разъемов питания RAMPS, то порядок пинов будет следующий – Signal, GND, +5V. RAMPS поддерживает три датчика температуры, разъемы для них подписаны – T0, T1, T2. В T0 обычно подключают термистор хотэнда. А T2 я подключил термистор стола с подогревом. Полярность отсутствует. Разъемы для подключения нагревательных элементов подписаны D8, D9, D10. Резистор хотэнда я подключил в D10, а резисторы подогревающие стол в D8. Обратите внимание, что провода по которым идет ток для подогрева стола должны быть рассчитаны на ток минимум в 10А, в противном случае может оплавиться изоляция и произойти КЗ. Для подачи питания в RAMPS предусмотрено два разъема – 12V5A и 12V11A. Вход 12V5A используется для питания шаговых двигателей, и нагревателей D9, D10. Вход 12V11A используется для питания нагревателя D8, к которому подключен стол с подогревом. Подключать, разумеется, нужно оба. Входы 12V5A и 12V11A лучше питать от разных выходов компьютерного блока питания. В подключенном виде контроллер выглядит примерно вот так:

Читайте также:  Stm8. описание gpio и библиотека spl
Собранный и подключенный контроллер RepRap.

На этом этапе можно попробовать включить БП  розетку, правда ничего интересного не произойдет, т.к. на контроллере пока отсутствует прошивка.

В следующей (последней) части я расскажу о прошивке контроллера, калибровке и настройке принтера, программном обеспечении для 3D печати, а также постараюсь дать полезные советы по созданию моделей и улучшению качества печати.

Источник: http://null-b.blogspot.com/2013/05/3d-reprap-3.html

Шаговый мотор NEMA 17, серии 17HS4402 + драйвер A4988 + Arduino NANO

Управление шаговым двигателем с помощью платы Arduino.

В данной статье мы продолжаем разбираться с темой шаговых двигателей. В прошлый раз мы подключили к плате Arduino NANO небольшой моторчик 28BYJ-48 (5V). Сегодня мы будем делать то же самое, но с другим мотором – NEMA 17, серии 17HS4402 и другим драйвером – A4988.

Шаговый мотор NEMA 17 — это биполярный двигатель с высоким крутящим моментом. Может поворачиваться на заданное число шагов.

За один шаг совершает оборот на 1,8°, соответственно полный оборот на 360° осуществляет за 200 шагов.

Биполярный двигатель имеет две обмотки, по одной в каждой фазе, которая для изменения направления магнитного поля переполюсовывается драйвером. Соответственно, от мотора отходят четыре провода.

Такой мотор широко применяется в станках ЧПУ, 3D принтерах, сканерах и т. д.
Управляться он будет с помощью платы Arduino NANO.

Эта плата способна выдавать напряжение 5V, тогда как мотор работает от большего напряжения. Мы выбрали блок питания 12V. Так что нам понадобится дополнительный модуль — драйвер, способный управлять более высоким напряжением через маломощные импульсы Arduino. Для этого отлично подходит драйвер А4988.

Драйвер шагового двигателя А4988.

Плата создана на базе микросхемы A4988 компании Allegro – драйвера биполярного шагового двигателя.

Особенностями A4988 являются регулируемый ток, защита от перегрузки и перегрева, драйвер также имеет пять вариантов микрошага (вплоть до 1/16-шага).

Он работает от напряжения 8 – 35 В и может обеспечить ток до 1 А на фазу без радиатора и дополнительного охлаждения (дополнительное охлаждение необходимо при подаче тока в 2 A на каждую обмотку).

Характеристики:

Модель: A4988; напряжения питания: от 8 до 35 В; возможность установки шага: от 1 до 1/16 от максимального шага; напряжение логики: 3-5.5 В; защита от перегрева; максимальный ток на фазу: 1 А без радиатора, 2 А с радиатором; расстояние между рядами ножек: 12 мм; размер платы: 20 х 15 мм; габариты драйвера: 20 х 15 х 10 мм; габариты радиатора: 9 х 5 х 9 мм; вес с радиатором: 3 г;

без радиатора: 2 г.

Для работы с драйвером необходимо питание логического уровня (3 – 5,5 В), подаваемое на выводы VDD и GND, а также питание двигателя (8 – 35 В) на выводы VMOT и GND. Плата очень уязвима для скачков напряжения, особенно если питающие провода длиннее нескольких сантиметров.

Если эти скачки превысят максимально допустимое значение (35 В для A4988) ,то плата может сгореть. Одним из способов защиты платы от подобных скачков является установка большого (не меньше 47 мкФ) электролитического конденсатора между выводом питания (VMOT) и землёй близко к плате.

Соединение или разъединение шагового двигателя при включённом драйвере может привести к поломке двигателя! Выбранный мотор совершает 200 шагов за полный оборот на 360°, что соответствует 1,8° на шаг. Микрошаговый драйвер, такой как A4988 позволяет увеличить разрешение за счёт возможности управления промежуточными шагами.

Например, управление мотором в режиме четверти шага даст двигателю с величиной 200-шагов-за-оборот уже 800 микрошагов при использовании разных уровней тока.

Разрешение (размер шага) задаётся комбинациями переключателей на входах (MS1, MS2, и MS3).

MS1 MS2 MS3 Разрешение микрошага
Низкий Низкий Низкий Полный шаг
Высокий Низкий Низкий 1/2 шага
Низкий Высокий Низкий 1/4 шага
Высокий Высокий Низкий 1/8 шага
Высокий Высокий Высокий 1/16 шага

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

Если вы просто хотите вращать двигатель в одном направлении, можно соединить DIR непосредственно с VCC или GND. Чип имеет три различных входа для управления состоянием питания: RESET, SLEEP и ENABLE.

Вывод RESET плавает, если его не нужно использовать, то следует подключить его к соседнему контакту SLEEP на печатной плате, чтобы подать на него высокий уровень и включить плату.

Схема соединения.

Мы использовали вот такой блок питания (12V).

Для удобства подключения к плате Arduino UNO, мы использовали собственноручно сделанную деталь. Пластиковый корпус напечатан на 3D принтере, к нему приклеены контакты.

Также, использовали такой набор проводов, у части из них с одного конца контакт, с другого штырёк, у других контакты с обоих сторон.

Соединяем всё согласно схеме.

Потом открываем среду разработки программ для Arduino и пишем программу, вращающую мотор сначала в одну сторону на 360°, потом в другую.

const int pinStep = 5;const int pinDir = 4;const int move_delay = 3;const int steps_rotate_360 = 200;void setup() {  pinMode(pinStep, OUTPUT);   pinMode(pinDir, OUTPUT);  digitalWrite(pinStep, HIGH);   digitalWrite(pinDir, LOW);}void loop() {  digitalWrite(pinDir, HIGH);  for(int i = 0; i < steps_rotate_360; i++)   {     digitalWrite(pinStep, HIGH);     delay(move_delay);     digitalWrite(pinStep, LOW);     delay(move_delay);  }  delay(move_delay*10);  digitalWrite(pinDir, LOW);  for(int i = 0; i < steps_rotate_360; i++)   {     digitalWrite(pinStep, HIGH);     delay(move_delay);     digitalWrite(pinStep, LOW);     delay(move_delay);  }  delay(move_delay*10);}

Если мы хотим, чтобы мотор просто постоянно вращался в ту или иную сторону, то можно подключить контакт драйвера DIRECTION к земле (вращение по часовой стрелке) или питанию (против часовой) и залить в Arduino такую простенькую программу:

const int pinStep = 5;const int move_delay = 3;void setup() {  pinMode(pinStep, OUTPUT);  digitalWrite(pinStep, LOW);}void loop() {  digitalWrite(pinStep, HIGH);   delay(move_delay);   digitalWrite(pinStep, LOW);   delay(move_delay);}

Всё это мы рассматривали шаговый режим мотора, то есть 200 шагов за полный оборот. Но, как уже было описано, мотор может работать, в 1/2, 1/4, 1/8, 1/16 шаговых режимах, в зависимости от того, какая комбинация сигналов подаётся на контакты драйвера MS1, MS2, MS3.
Давайте с этим потренируемся, подключим эти три контакта к плате Arduino, согласно схеме, и зальём код программы.

Код программы, которая демонстрирует все пять режимов работы мотора, вращая мотор в одну и другую сторону на 200 шагов в каждом из этих режимов.

const int pinStep = 5;const int pinDir = 4;const int move_delay = 3;const int steps_rotate_360 = 200;int StepModePins[3] = {8, 7, 6};const int StepModePinsCount = 3;bool StepMode[5][3] = {   { 0, 0, 0},   { 1, 0, 0},   { 0, 1, 0},   { 1, 1, 0},  { 1, 1, 1} };const int StepModeSize = 5;void setup() {  pinMode(pinStep, OUTPUT);  pinMode(pinDir, OUTPUT);  for(int i = 0; i < StepModePinsCount; i++)   {     pinMode(StepModePins[i], OUTPUT);  }  digitalWrite(pinStep, HIGH);   digitalWrite(pinDir, LOW);}void loop() {   for(int i = 0; i < StepModeSize; i++)   {     for(int j = 0; j < StepModePinsCount; j++)     {       digitalWrite(StepModePins[j], StepMode[i][j] == 1 ? HIGH : LOW);    }    MakeRoundRotation();   }}void MakeRoundRotation() {  digitalWrite(pinDir, HIGH);  for(int i = 0; i < steps_rotate_360; i++)   {     digitalWrite(pinStep, HIGH);     delay(move_delay);     digitalWrite(pinStep, LOW);     delay(move_delay);  }  delay(move_delay*10);  digitalWrite(pinDir, LOW);  for(int i = 0; i < steps_rotate_360; i++)   {     digitalWrite(pinStep, HIGH);     delay(move_delay);     digitalWrite(pinStep, LOW);     delay(move_delay);  }  delay(move_delay*10);}

Ну, и последнее, что нам осталось добавить в схему, так это внешнее управление. Как и в предыдущей статье добавим кнопку, задающую направление вращения и переменный резистор (потенциометр), который будет менять скорость вращения. Скоростей же у нас будет только 5, по количеству возможных режимов шага для мотора.

Дополняем схему новыми элементами.

Для подключения кнопок воспользуемся такими проводочками.

Код программы.

const int pinStep = 5;const int pinDir = 4;const int ButtonOn1 = 9;const int ButtonOn2 = 10;const int PotenciomData = 1;const int move_delay = 3;const int CheckButtonDelay = 15;int CurrentButtonDelay = 0;int StepModePins[3] = {8, 7, 6};const int StepModePinsCount = 3;int ButtonState = 0;int ButtonDirection = 0;bool StepMode[5][3] = {   { 0, 0, 0},   { 1, 0, 0},   { 0, 1, 0},   { 1, 1, 0},  { 1, 1, 1} };const int StepModeSize = 5;int StepModeIndex = 0;void setup() {  pinMode(pinStep, OUTPUT);  pinMode(pinDir, OUTPUT);  for(int i = 0; i < StepModePinsCount; i++)   {     pinMode(StepModePins[i], OUTPUT);  }  pinMode(ButtonOn1, INPUT);   pinMode(ButtonOn2, INPUT);  pinMode(PotenciomData, INPUT);  digitalWrite(pinStep, LOW);   digitalWrite(pinDir, LOW);}void loop() {   if(CurrentButtonDelay >= CheckButtonDelay)   {     CheckButtonState();     CurrentButtonDelay = 0;  }  if(ButtonState == 1)   {     MakeMotorStep();  }  delay(move_delay);   CurrentButtonDelay += move_delay;}void MakeMotorStep() {   digitalWrite(pinStep, HIGH);   digitalWrite(pinStep, LOW);}void CheckButtonState() {  int CurrentButtonState = 0, CurrentButtonDirection = 0, CurrentStepModeIndex = 0;  bool readbuttonparam = digitalRead(ButtonOn1);  if(readbuttonparam)   {     CurrentButtonState = 1;     CurrentButtonDirection = 1;  }  readbuttonparam = digitalRead(ButtonOn2);  if(readbuttonparam)   {     CurrentButtonState = 1;     CurrentButtonDirection = 0;  }  if(ButtonState != CurrentButtonState)   {     ButtonState = CurrentButtonState;  }  if(ButtonDirection != CurrentButtonDirection)   {     ButtonDirection = CurrentButtonDirection;     digitalWrite(pinDir, ButtonDirection);  }  CurrentStepModeIndex = map(analogRead(PotenciomData), 0, 1023, 0, StepModeSize-1);   if(StepModeIndex != CurrentStepModeIndex)   {     StepModeIndex = CurrentStepModeIndex;     for(int i = 0; i < StepModePinsCount; i++)     {       digitalWrite(StepModePins[i], StepMode[StepModeIndex][i]);     }   }}
Читайте также:  Co-потенциометр обратной связи

Источник: http://techclub.su/article_arduino07

Шаговые двигатели: особенности и практические схемы управления. Часть 2

Журнал РАДИОЛОЦМАН, февраль 2015

Владимир Рентюк, Запорожье, Украина

Часть 1.

Часть 2. Схемотехника систем управления

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

Как уже отмечалось, шаговые двигатели – это удовольствие не из дешевых.

Но они имеются в старых принтерах, считывателях гибких и лазерных дисков, например, SPM-20 (шаговый двигатель для позиционирования головки в дисководах 5″25 Mitsumi) или EM-483 (от принтера Epson Stylus C86), которые можно найти у себя в старом хламе или купить за копейки на радиобазаре. Примеры таких двигателей представлены на Рисунке 8.

а) б)
Рисунок 8. Шаговые двигатели, используемые в устаревшей компьютерной технике. а) Шаговый двигатель SPM-20 для позиционирования головки вдисководах 5″25 Mitsumi. (Фото с сайта).б) Шаговый двигатель EM-483 от принтера Epson Stylus C86. (Фото с сайта).

Наиболее простыми для начального освоения являются униполярные двигатели. Причина кроется в простоте и дешевизне их драйвера управления обмотками. На Рисунке 9 приведена практическая схема драйвера, использованного автором статьи для униполярного шагового двигателя серии P542-M48 [6].

Рисунок 9. Драйвер униполярного шагового двигателя. (Дополнительнаяинформация по подключению на Рисунках 10 и 12).

Естественно, что выбор типа транзистора для ключей управления обмотками должен происходить с учетом максимального тока коммутации, а его подключение учитывать необходимость заряда/разряда емкости затвора. В ряде случаев прямое соединение MOSFET с ИМС коммутатора может быть недопустимым. Как правило, в затворах устанавливаются последовательно включенные резисторы небольших номиналов.

Но в ряде случае необходимо предусмотреть еще и соответствующий драйвер для управления ключами, который обеспечит заряд/разряд их входной емкости. В некоторых решениях предлагается в качестве ключей использовать биполярные транзисторы. Это подходит только для очень маломощных двигателей с небольшим током обмоток.

Для рассматриваемого двигателя с рабочим током обмоток I = 230 мА ток управления по базе ключа должен составить, по крайней мере, 15 мА (хотя для нормальной работы ключа необходимо, чтобы ток базы равнялся 1/10 рабочего, то есть 23 мА). Но такой ток от микросхем серии 74HCхх забрать невозможно, поэтому потребуются дополнительные драйверы.

Как хороший компромисс, можно использовать IGBT, сочетающие в себе достоинства полевых и биполярных транзисторов.

https://www.youtube.com/watch?v=Jb3A61Nm-jI

С точки зрения автора статьи, самым оптимальным для управления коммутацией обмоток двигателей небольшой мощности является использование подходящих по току и сопротивлению открытого канала RDC(ON) MOSFET, но с учетом рекомендаций, описанных выше. Мощность, рассеиваемая на ключах для выбранного в качестве примера двигателя серии P542-M48, при полной остановке ротора не превысит

PVT = RDC(ON) × I2 = 0.25 × (0.230)2 = 13.2 мВт.

Транзисторы IRLML2803 с RDC(ON) = 0.25 Ом имеют допустимую мощность рассеяния 540 мВ и постоянный ток стока 0.93 А при температуре 70 °С. Так что, они полностью соответствуют требованиям и обеспечат надежную работу драйвера.

В большинстве случаев, учитывая низкие частоты коммутации, проведенной выше оценки вполне достаточно.

Поскольку детальное рассмотрение особенностей работы ключей не входит в рамки данной статьи, то для их выбора и полного расчета можно воспользоваться методикой, приведенной, например, в [7].

Еще одним важным моментов является правильный выбор так называемых снаберных диодов, шунтирующих обмотку двигателя (VD1…VD4 на Рисунке 9).

Назначение этих диодов – гасить ЭДС самоиндукции, возникающую при выключении управляющих ключей. Если диоды выбраны неверно, то неизбежен выход из строя транзисторных ключей и устройства в целом.

Обратите внимание, что в мощные MOSFET такие диоды, как правило, уже встроены.

Режим управления двигателем задается коммутатором. Как уже было отмечено выше, наиболее удобным и эффективным является управление с перекрытием фаз (Рисунок 4б). Такой режим легко реализуется при помощи триггеров.

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

Рисунок 10. Схема универсального коммутатора шагового двигателя (с реверсом).

Схема на Рисунке 10 пригодна для любых типов двигателей (униполярных и биполярных).

Частота вращения двигателя задается внешним тактовым генератором (скважность любая), сигнал с которого подается на вход «ШАГИ», а направление вращения устанавливается через вход «НАПРАВЛЕНИЕ».

Оба сигнала имеют логические уровни и, если для их формирования используются выходы с открытым коллектором, то потребуются соответствующие резисторы подтяжки (на Рисунке 10 они не показаны). Временная диаграмма работы коммутатора приведена на Рисунке 11.

Рисунок 11. Временная диаграмма универсального коммутатора с реверсом. Верхние две осциллограммы – Q1 D2-2, Q2 D2-2; нижние две – Q1 D2-1, Q2 D2-1.Маркеры показывают область изменения очередности включения фаз.

Хочу обратить внимание читателей: в Интернете вы могли встретить похожую схему, выполненную не на D-триггерах, а на JK-триггерах. Будьте внимательны! В ряде этих схем допущена ошибка в подключении ИМС.

Если нет необходимости в реверсе, то схема коммутатора может быть значительно упрощена (см.

Рисунок 12), при этом частота вращения останется неизменной, а диаграмма управления будет аналогичной той, которая приведена на Рисунке 11 (осциллограммы до переключения очередности фаз).

Рисунок 12. Упрощенная схема коммутатора шаговогодвигателя (без реверса).

Поскольку особых требований к сигналу «ШАГИ» не предъявляется, для его формирования может использоваться любой подходящий по уровням выходного сигнала генератор. Для своих отладочных модулей автор использовал генератор на базе ИМС таймера 555 (Рисунок 13).

Рисунок 13. Регулируемый генератор импульсов длякоммутатора шагового двигателя.

Для питания собственно двигателя можно использовать схему, приведенную на Рисунке 14, а схему коммутатора и генератора питать или от отдельного источника питания +5 В или через дополнительный маломощный стабилизатор. Земли силовой и сигнальной частей в любом случае необходимо разделить.

Рисунок 14. Схема питания шагового двигателя с режимамиудержания и выключения.

Схема на Рисунке 14 обеспечивает подачу двух стабильных по уровню напряжений для питания обмоток двигателя: 12 В в рабочем режиме и 6 В в режиме удержания. (Формулы, необходимые для расчета выходного напряжения, приведены в [8]).

Рабочий режим включается подачей высокого логического уровня на контакт «ТОРМОЗ» разъема Х1. Допустимость снижения напряжения питания определяется тем, что, как уже отмечалось в первой части статьи, момент удержания шаговых двигателей превышает момент вращения.

Так, для рассматриваемого двигателя P542-M48 момент удержания с редуктором 25:6 равен 19.8 Н·см, а момент вращения всего 6 Н·см. Этот подход позволяет при остановке двигателя уменьшить потребление мощности с 5.52 Вт до 1.

38 Вт! Полное отключение двигателя осуществляется подачей высокого логического уровня на контакт «ВКЛ/ВЫКЛ» разъема Х1.

Если схема управления имеет выход на транзисторах с открытым коллектором, то в ключах VT1, VT2 необходимости нет, и выходы можно подключить непосредственно вместо упомянутых ключей.

Примечание: В этом варианте использование резисторов подтяжки недопустимо!

В качестве дросселя автор использовал катушку SDR1006-331K (Bourns). Общее питание формирователя напряжения для обмоток двигателя можно уменьшить до 16 – 18 В, что не скажется на его работе.

Еще раз обращаю внимание: при самостоятельном расчете не забудьте учитывать, что формирователь обеспечивает режим с перекрытием фаз, то есть необходимо закладываться на номинальный ток схемы питания, равный удвоенному максимальному току обмоток при выбранном напряжении питания.

Задача управления биполярными двигателями более сложна. Основная проблема в драйвере. Для этих двигателей требуется драйвер мостового типа, и делать его, тем более в современных условиях, на дискретных элементах – неблагодарная задача.

Да, этого и не требуется, так как имеется очень большой выбор специализированных ИМС. Все эти ИМС условно можно свести к двум типам. Первый – весьма популярная у любителей робототехники ИМС L293D STMicroelectronics [9] или ее варианты от Texas Instruments.

Они относительно недороги и подходят для управления маломощными двигателями с током обмоток до 600 мА. ИМС имеют защиту от перегрева; устанавливать ее необходимо с обеспечением теплоотвода, которым служит фольга печатной платы [9].

Второй тип – это уже знакомая читателям по публикации в [1] ИМС LMD18245 [2].

Автор использовал драйвер L293DD в схеме для управления биполярным двигателем малой мощности типа 20M020D2B 12 В/0.1 А во время изучения проблемы использования шаговых двигателей. Этот драйвер удобен тем, что содержит четыре полумостовых ключа, поэтому для управления биполярным шаговым двигателем требуется всего одна ИМС.

Полная схема, приведенная в [10] и многократно повторенная на интернет-сайтах, пригодна для использования в качестве тестовой платы.

На Рисунке 15 показано включение ИМС драйвера (с привязкой к коммутатору из Рисунка 10), поскольку именно эта часть сейчас представляет для нас интерес, а Figure 6 (Bipolar Stepping-Motor Control) из спецификации [9] не совсем понятна начинающему пользователю.

Она вводит в заблуждение, например, тем, что показаны внешние диоды, которые на самом деле встроены в ИМС и прекрасно справляются с обмотками маломощных двигателей. Естественно, что драйвер L293D может работать с любым коммутатором. Выключается драйвер логическим нулем по входу R.

Примечание: ИМС L293, в зависимости от изготовителя и суффиксов, указывающих на тип корпуса, имеют различия в нумерации и количестве выводов!

Рисунок 15. Схема подключения драйвера L293DD.

Для более мощных двигателей автор статьи использовал драйверы LMD18245. Полная схема тестового модуля приведена на Рисунке 16.

Рисунок 16. Схема управления биполярным шаговым двигателемс использованием драйвера LMD18245.

В отличие от L293DD, LMD18245 является не четырех-, а двухканальным драйвером, поэтому для реализации схемы управления требуются две ИМС. Драйвер LMD18245 выполнен по DMOS технологии, содержит схемы защиты от перегрева, короткого замыкания и выполнен в удобном 15-выводном корпусе ТО-220, что позволяет легко отводить от его корпуса излишнее тепло.

В качестве задающего генератора использовалась схема, приведенная ранее на Рисунке 13, но с увеличенным до 4.7 кОм сопротивлением резистора R2. Для подачи одиночных импульсов используется кнопка BH1, позволяющая сдвинуть ротор двигателя на один шаг. Направление вращения ротора определяется положением переключателя S1.

Включение и выключение двигателя осуществляется выключателем S2. В положение «ВЫКЛ» ротор двигателя освобождается, и его вращение импульсами управления становится невозможным. Режим удержания уменьшает максимальный ток, потребляемый обмотками двигателя, с двух до одного ампера.

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

Необходимо заметить, что поскольку при полношаговом управлении «two-phase-on» включены обе обмотки, ток двигателя удваивается, а схема драйвера должна рассчитываться исходя из требований обеспечения заданного тока двух обмоток (резисторы R3, R8).

Читайте также:  Fm тюнер для компьютера

Схема содержит описанный ранее двунаправленный двухфазовый формирователь на D-триггерах (Рисунок 10). Максимальный ток драйвера задается резистором, включенным в цепь контакта 13 ИМС LMD18245 (резисторы R3, R8), и двоичным кодом на контактах цепи управления тока (выводы 8, 7, 6, 4).

Формула для расчета максимального тока приведена в спецификации на драйвер [2]. Ограничение тока осуществляется импульсным методом. При достижении максимально заданной величины тока выполняется его «нарезка» («chopping»).

Параметры этой «нарезки» задаются параллельной RC цепочкой, подключенной к выводу 3 драйвера. Достоинством ИМС LMD18245 является то, что токозадающий резистор, не включенный непосредственно в цепь двигателя, имеет достаточно большой номинал и маленькую рассеиваемую мощность.

Для рассматриваемой схемы максимальный ток в амперах, согласно приведенной в [2] формуле, составляет:

где:

VDAC REF – опорное напряжение ЦАП (в рассматриваемой схеме 5 В); D – задействованные разряды ЦАП (в этом режиме используются все 16 разрядов);

RS – сопротивление токоограничивающего резистора (R3 = R8 = 10 кОм).

Соответственно, в режиме удержания (поскольку используются 8 разрядов ЦАП), максимальный ток составит 1 А.

В заключение необходимо отметить, что драйвер LMD18245 позволяет реализовать и микрошаговое управление. Как упоминалось выше, такой режим уменьшает, и даже подавляет паразитный резонанс ротора. Поддержка такого режима для указанного драйвера осуществляется микропроцессором, управляющим входами ЦАП.

Как можно видеть из предложенной статьи, шаговые двигатели хоть и сложнее в управлении, чем коллекторные, но не настолько, чтобы отказываться от них. Как говорили еще древние римляне: «Дорогу осилит идущий».

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

Дополнительную информацию и более детальное рассмотрение проблем, связанных с применением шаговых двигателей, кроме как по упомянутым выше ссылкам [3, 4, 7], можно почерпнуть из ставшей уже классикой монографии Кенио Такаши [11] и на специализированных интернет-сайтах, например, [12].

Есть еще один момент, на который автор статьи хотел бы обратить внимание читателей. Шаговые двигатели, как впрочем, и все двигатели постоянного тока, обратимы.

Что имеется ввиду? Если приложить внешнее вращающее усилие к ротору, то с обмоток статора можно снять ЭДС, то есть двигатель становится генератором, причем весьма и весьма эффективным.

Автор статьи экспериментировал с этим вариантом использования шаговых двигателей во время работы консультантом по силовой электронике в компании, занимающейся ветроэнергетикой. Необходимо было на простых макетах отработать ряд практических решений.

По наблюдению автора статьи, эффективность шагового двигателя в таком применении была выше, чем у аналогичного по параметрам и габаритам коллекторного двигателя постоянного тока. Но это уже другая история.

Литература:

  1. Рентюк В. «Управление двигателями постоянного тока»
  2. LMD18245 3A, 55V DMOS Full-Bridge Motor Driver, Texas Instruments Inc., April 2013
  3. Емельянов А. В., Шилин А. Н. Шаговые двигатели: учебное пособие. Волг. ГТУ, Волгоград, 2005
  4. en.nanotec.com
  5. DHS 56 series TECO Electro Devices Co. Ltd.
  6. Geared stepper motor P542-M48 series, Mclennan Servo Supplies Ltd.
  7. Дьяконов В. П., Максимчук А. А., Ремнев А. М., Смердов В. Ю. Энциклопедия устройств на полевых транзисторах. М., СОЛОН-Р, 2002
  8. LM2675 SIMPLE SWITCHER Power Converter High Efficiency 1A Step-Down Voltage Regulator, Texas Instruments Inc., Rev. June 2005
  9. L293, L293D PUSH-PULL FOUR CHANNEL DRIVER WITH DIODES STMicroelectronics, July 2003
  10. Rentyuk Vladimir «Control stepper motors in both directions» EDN March 18, 2010
  11. Кенио Такаши. Шаговые двигатели и их микропроцессорные системы управления: Пер. с англ., М.: Энергоатомиздат, 1987 – 199 с.
  12. stepmotor.ru

Источник: https://www.rlocman.ru/review/article.html?di=161860

Самодельный 3d принтер из частей принтеров и сканеров

Предлагаю вашему вниманию статью от читателя блога — Андрея Ковшина. Он с нуля собрал принтер из частей от принтеров и сканеров!!! Респект и уважуха таким людям!!Мне кажется, первый 3D принтер был собран именно таким образом .. Далее рассказ Андрея:

Началось все с того что увидел в интернете это чудо, посмотрел вроде ничего сложного, все реализуемо, собрать можно. Работаю в сервис центре по ремонту принтеров, а с них много чего полезного для моего 3д принтера снять можно. Но обо всем по порядку. (много фото и видео!)

История создания принтера

Первое — это конечно выбор конструкции пал на наиболее простой принтер  Мендель. Шпильки и детали из пластика, которые я заменил деревом.

3d printer

Шаговые двигатели сначала использовал от сканера, маленькие (их у нас завались, одно время много меняли сканеров по гарантии), но при первом же запуске понял что у них силы маловато. Поставил другие, ремни также от сканеров стоят,  но в будущем планируется заменить на Т5 более жесткие, эти иногда проскакивают, все таки рассчитаны на небольшие силы.

3d printer

3d printer

Электронику сразу решил заказывать, т.к спаять ардуино и драйверы двигателей на А4988 выйдет дороже, заказал все из Китая, по времени как раз к готовой механике должны подойти.

3d printer

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

3d printer. Драйвера на L293+L298

3d printer. Охлаждение драйверов

Еще хочу рассказать про печатающую головку, изначально было решено потратить минимум денег, поэтому и головку решил сделать сам.

Сопло выполнено из остатков шпилек просверленных вдоль диаметром 3мм  и у основания0,5 ммвкручен в алюминиевый радиатор дальше фторопласт и к экструдеру ( зажим видно сделан из обычных канцелярских резинок, взятая пружина в основе конструкции оказалась слишком слабой) В тот же радиатор пару резисторов на разогрев соединенных параллельно на 6,5 Ом и температурный датчик.

3d printer. Экструдер

На сегодняшний день принтер более менее печатает, но кривовато, ремни растягиваются и дают смещение. Надо придумать натяжитель ремня. И все дерненные детали напечатать из пластика. Рабочая область из за всех быстрых переделок в процессе проектировки составила всего лишь 70х70 мм и в высоту около100 мм. Вобщем есть над чем работать )))

3d printer. Возможности печати

Откуда все взято:

Еще решил показать фотографии исходных материалов, так сказать откуда, что снял )))

Радиаторы

Радиаторы

Алюминиевые радиаторы с плат от сгоревших безперебойников, идеально подходят для изготовления печатающей головки.

Валы с принтера Epson P50

Валы с принтера Epson P50

Валы и каретки с принтеров Epson, на фото Р50

МФУ Epson

МФУ Epson

С таких сканеров от МФУ Epson , которые в одно время повально меняли по гарантии снимал шаговые двигатели и ремни.

Шаговик

Вот эти шаговики, но их мощности не хватило. От них использовал шестеренку большую на которой шкив для ремня.

Ремень

Ремни слабенькие, шаг около 1мм. Но пока держатся.

Шаговик

Шаговый двигатель с той самой шестеренкой (обрезал с нее лишнее), тоже снятый со старого принтера.

Более детально конструкция 3D принтера:

(без комментариев. в конце статьи — видео)

3d printer

3d printer

3d printer

3d printer

3d printer

3d printer

3d printer

3d printer. Экструдер

3d printer

3d printer

3d printer в сборе

3d printer. Калибровка

3d printer.Калибровка

Напечатанная деталь

Демонстрация работы принтера:

P.s. Наверняка этот пост подтолкнет многих к самостоятельной сборке 3d-принтеровГлавное — желание! А терпение и труд все перетрут ..

Задавайте вопросы Андрею в комментариях к статье — он поделится своим опытом в строительстве 3d принтера  😉

Источник: http://diylife.ru/3d-printer/3d-printer-iz-detalej-printerov-i-skanerov-avtor-andrej-kovshin.html

Что можно извлечь из старого принтера

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

Сегодня речь пойдет о старых принтерах. Лучше всего на разбор идут матричные принтеры и МФУ устройства, в них много полезного для самодельщика или желающего сделать ЧПУ станок или 3D принтер своими руками.

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

Давайте посмотрим, что можно извлечь из старого 3D принтера такого, что заинтересует желающего собрать самодельный ЧПУ станок или 3D принтер своими руками.

Для начала стоит максимально разобрать старый принтер на комплектующие.

Болтики, винтики, гаечки, шестеренки, электроника – все это может пригодится в хозяйстве самодельщика. Вроде бы копеечные детали, но иной раз, когда нет под рукой нужного болтика или гаечки – это весьма удручает.

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

Стальные шлифованные направляющие подходят как для ЧПУ станков, так и для самодельных 3D принтеров.

Вместе с направляющими идет и узел скольжения головки принтера, на струйных принтерах он полностью пластиковый и подходит только для не нагруженных осей 3D принтеров или ЧПУ граверов. В старых матричных принтерах в узел скольжения запрессована бронзовая втулка, такой узел можно использовать и на самодельных ЧПУ станках обрабатывающих пластик и цветные металлы.

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

Стоит отметить, что все эти детали можно найти не только в принтерах, но и в других устройствах. Например можно купить мфу лазерный или старый копир через газету бесплатных объявлений за самовывоз. Особенно, если это устройство в неработающем виде. Чаще всего в них сгорает электроника управления, а все остальное вполне готово к извлечению и дальнейшей эксплуатации.

Шаговые двигатели в принтерах используются на движении бумаги и передвижении головки принтера. На фотографии те, что стояли в старом струйнике, на матричных принтерах двигатели гораздо мощнее, из лазерных МФУ можно извлечь шаговики вполне пригодные для изготовления хоббийного ЧПУ фрезера.

Вместе с шаговыми двигателями идут и драйвера и контроллер управления шаговиками.

Еще одним замечательным устройством являются концевые выключатели. В принтерах, копирах и прочей технике они отвечают за контроль наличия бумаги.

Концевые выключатели бывают двух типов – механические и оптические.

В деле изготовления 3D принтеров и ЧПУ станков концевики обычно ставят на края каждой оси – что бы какой либо сбой не заставил мотор гнать каретку оси до ограничителя и не повредил конструкцию.

Как видите – разобрав несколько старых принтеров можно получить почти полный набор компонентов для изготовления 3D принтера или ЧПУ станка своими руками.

Самодельный ЧПУ станок и 3D принтер

Так же интересно:

– ЧПУ станок своими руками из старых принтеров.

Источник: http://homecnc.ru/raznoe/85-old-printer

Ссылка на основную публикацию
Adblock
detector