1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что нужно чтобы запустить шаговый двигатель

Шаговый двигатель

  • Типы шаговых двигателей
    • Реактивный шаговый двигатель
    • Шаговый двигатель с постоянными магнитами
    • Гибридный шаговый двигатель

Предшественником шагового двигателя является серводвигатель.

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

Очевиден и недостаток привода с шаговым двигателем: при сбое импульса дальнейшее слежение происходит с ошибкой в угле, пропорциональной числу пропущенных импульсов [2].

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

Олин Латроп

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

Управление шаговым двигателем — отличная работа для микроконтроллера. Это может выполнять всю логику, описанную выше, плюс может взаимодействовать с остальной частью системы, чтобы узнать, что должен делать шаговый двигатель. Так как микро будет выдавать только цифровые логические сигналы, не отличающиеся от таймера 555, вам потребуется силовая электроника для управления катушками. В зависимости от того, как катушки подключены, это может быть набор драйверов с низкой стороны или, возможно, H-мосты. Драйверы низкого уровня можно довольно легко сделать с дискретными транзисторами, особенно при низком напряжении. Доступны микросхемы драйвера H-моста, которые принимают входы цифрового логического управления и соответственно управляют линиями катушки.

Виджей

Работа схемы

Схема устройства представлена на следующем рисунке.

Чтобы подавать питание на соответствующие катушки шагового двигателя мы будем использовать цифровые контакты 8, 9, 10 и 11 платы Arduino, к которым подключены соответствующие контакты драйвера двигателей ULN2003. Потенциометр, с помощью которого мы будем управлять вращением шагового двигателя, подключен к аналоговому контакту A0 платы Arduino.

Драйвер мотора запитывается от контакта 5V платы Arduino. Но если вы будете подсоединять какую-нибудь нагрузку к шаговому двигателю, то вам потребуется внешний источник питания для драйвера мотора. Мы в нашем примере эксплуатируем шаговый двигатель без нагрузки, поэтому нам хватило питания от платы Arduino. И не забудьте соединить землю платы Arduino с землей драйвера мотора.

Сходства и различия интегральных схем для управления двигателем

Преимущество маломощных двигателей, помимо их скромных потребностей в токе и напряжении, заключается в том, что драйверы затвора MOSFET могут быть интегрированы с контроллерами и оптимизированы для конкретных потребностей. Рассмотрим трио соответствующих предложений от STMicroelectronics. Эти три микросхемы от ST имеют множество базовых характеристик, которые позволяют применять их совместно с различными типами двигателей. Помимо этого, они облегчают моделирование и просты в изучении.

Вот несколько преимуществ, которыми обладают эти изделия:

  • максимальная интеграция с использованием интерфейса микроконтроллера (MCU), логики управления, драйвера и моста МОП-транзистора (требуется только несколько пассивных компонентов и нет необходимости во внешних активных компонентах);
  • малое рабочее напряжение 1,8…10 В, которое хорошо подходит для низковольтных двигателей, в особенности – для работающих от небольших аккумуляторных батарей;
  • высокий выходной ток до 1,3 A (RMS) и 2 A (пиковое значение) для каждого выхода;
  • энергопотребление в режиме ожидания до 80 нA;
  • повышенная надежность благодаря блокировке при падении напряжения (UVLO), тепловой защите и защите от перегрузки по току;
  • небольшой QFN-корпус размером 3×3 мм.

Рассмотрим сходства и различия трех данных микросхем для управления двигателем. STSPIN220, предназначенная для шаговых двигателей, объединяет в себе логику управления, высокую эффективность и малое сопротивление «сток-исток» открытого канала RDS(ON) (рисунок 5). Контроллер реализует управление токовым режимом с помощью широтно-импульсной модуляции (PWM) с программируемым временем выключения. STSPIN220 поддерживает разрешение 256 микрошагов на один полный шаг, что позволяет сделать движение максимально плавным.

Рис. 5. Микросхема STSPIN220 для управления шаговым двигателем

Микросхемы, аналогичные модели STSPIN220:

  • STSPIN230 – монолитный драйвер для трехфазных двигателей BLDC;
  • STSPIN240 – монолитный драйвер для двух независимых двигателей постоянного тока;
  • STSPIN250 – монолитный драйвер для одного двигателя постоянного тока.

Примечание: драйвер STSPIN250 предназначен для одного двигателя в отличие от двухмоторного драйвера STSPIN240. STSPIN250 может обеспечивать более высокий ток 2,6 А (среднеквадратичное значение) и 4 А (пиковое значение).

Читать еще:  Шкивы влияющие на обороты двигателя

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

Программирование в STEP7 модуля Stepper motor contr

Программирование в STEP7 модуля Stepper motor contr

Сообщение kiselev_mixail » 29 июн 2015, 23:48

Подскажите пожалуйста как запрограммировать модуль управления шаговым двигателем?

Контроллер Siemens ET-200S cpu 151-8.

Среди прочих модулей присутствует модуль 1 STEP 5V. Заказной номер 6ES7 138-4DC01-0AB0 .
Есть к нему описание, даже на русском языке (ломано переведено, но все же). Размер 2.9 МБ не могу залить сюда.
Вот ссылка английскую версию того же руководства:
https://support.industry.siemens.com/cs . 9&lc=ru-RU

На странице 2-5 данного руководства даны следующие рекомендации:
«Встройте блокFC101 в свою пользовательскую программу(например, в
OB1). Этот блок нуждается в блокеDB1 длиной16 байтов.»

Тут я встал в тупик, блок данных можно привязать к FB, а FC максимум может использовать заранее забитые переменные.

В инструкции есть описание примера программы. Может кто-нибудь сконфигурировать FC101 и блок DB1. Или объяснить как это сделать.

Да, еще в инструкции есть упоминание про GSD файл, но скачать что либо тоже не выходит.

У меня установлено ПО STEP7 V5.5+SP1.

Re: Программирование в STEP7 модуля Stepper motor contr

Сообщение Михайло » 30 июн 2015, 05:10

kiselev_mixail писал(а): Да, еще в инструкции есть упоминание про GSD файл, но скачать что либо тоже не выходит.

У меня установлено ПО STEP7 V5.5+SP1.

Re: Программирование в STEP7 модуля Stepper motor contr

Сообщение kiselev_mixail » 30 июн 2015, 08:27

Ну просто создать это конечно можно. Но что с этим делать.

Есть пример в инструкции:

// Инициализация интерфейса управления

L L#4800; // Расстояние 4800 импульсов
T DB1.DBD0;
L 1; // Множитель 1 для выходной частоты

L 0; // Сброс конечного выключателя и т.д
T DB1.DBB5;
T DB1.DBW 6;

S DB1.DBX5.2; // Установка разблокирования импульсов DRV_EN
R DB1.DBX4.0; // Установка пошагового режима
R DB1.DBX4.1; // Резервный бит = 0
R DB1.DBX4.2; // Резервный бит = 0
R DB1.DBX4.3; // Резервный бит = 0
R DB1.DBX4.5; // Сброс включения обратного хода DIR_M
R DB1.DBX4.6; // Сброс STOP
R DB1.DBX4.7; // Сброс понижающего коэффициента R

L DB1.DBD0 // Запись 8 байтов в 1STEP 5V/204kHz
T PQD256
L DB1.DBD4
T PQD256

L PID256 //Чтение 8 байтов из 1STEP 5V/204kHz
T DB1.DBD4
L PID260
T DB1.DB12

A M 30.0; // Обнаружение фронта сигнала на инициализацию пуска и
AN DB1.DBX12. 0 // установка запуска DIR_P, если STS_JOB сброшен.
S DB1.DBX4.4

A DB1.DBX12.0 // Ожидание STS_JOB и
R DB1.DBX4.4 // сброс запуска DIR_P; начинается ход
R M 30.0 // Сброс запуска включения

Как видно из примера, функция FC101 ссылается на переменные из блока данных DB1. А их там тупо нет. Он пустой потому что мы его просто создали.

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

Во общем вопрос ,как создать DB1 со всеми необходимыми переменными? А как видно из примера там есть и булевские и ворды и еще чето. DBX — это какая переменная?

Re: Программирование в STEP7 модуля Stepper motor contr

Сообщение kiselev_mixail » 30 июн 2015, 22:51

не правильно я поставил вопрос.

Есть задача, нужно решить. Денежное вознаграждение с меня.

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

Необходимо по сигналу внутренней переменной M10.0 (к примеру) запустить шаговый двигатель с частотой 200 Гц на 4000 шагов.
После пройденного расстояния двигатель останавливается, и отправляется в реверс на расстояние 2000 шагов с той же частотой.
Далее после вновь пройденного расстояния двигатель снова останавливается и запускается в первом направлении до появления внешней переменной (М10.1).
Далее останавливается. В этот момент в присутствует переменная М10.2. Контроллер ждет пока эта переменная пропадет и появится вновь (до пропадания поядка 0,5 сек).
При повторном появлении переменной М10.2. Шаговый двигатель совершает 200 шагов с частотой 200 Гц. К моменту окончания выполнения последнего задания шагового двигателя, переменная М10.2 вновь пропадает. При её повторном появлении, шаговый двигатель вновь делает 200 шагов с той же частотой и так до тех пор пока не появится переменная М10.3. При её появлении, шаговый двигатель доделывает заданные 200 шагов и останавливается. И ждет М10.0 для запуска в прямом направлении.
Дополнительное требование, что при уводе контроллера в стоп или при отключении электроэнергии, и при повторном запуске контроллера шаговый двигатель должен доделать оставшееся количество шагов.

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

Я мал мала разобрался в этом модуле, но доконца не получается, а время поджимает. Так что я готов на материальные растраты, за оперативное решение вопроса.

Читать еще:  Что такое ходовой двигатель

Re: Программирование в STEP7 модуля Stepper motor contr

Сообщение Михайло » 01 июл 2015, 05:43

DB1.DBD0 — двойное слово (32 бита) double
DB1.DBW0 — слово (16 бит) word
DB1.DBB0 — байт (8 бит) byte
DB1.DBX0.0 — бит (нулевой бит байта DB1.DBB0)

Приведенный листинг — это не сама функция FC101, а ее настройка в OB1. Саму функцию FC101 нужно найти в библиотеке STEP7.

Re: Программирование в STEP7 модуля Stepper motor contr

Сообщение CHANt » 01 июл 2015, 06:38

Программирование в STEP7 модуля Stepper motor contr

Сообщение Alexandr Sizov » 03 авг 2018, 15:59

Добрый день.
Наткнулся на Вашу проблемную программку официально подаренную Siemen-сом. Как успехи,- справились с FC101 и в целом?
Если да, то поделитесь Вашим бесценным опытом. Наша проблема: куча шаговых двигателей без обратной связи до 10А, ориентируемся на архитектуру от Siemens-а, соответственно нужна программка простого перемещения с опорной точкой.
Пытаемся симулировать в Simatic Step7 V5.6, сами не профессионалы.
*********************************************************************************************
**********************************************************************************************
Ну просто создать это конечно можно. Но что с этим делать.

Есть пример в инструкции:

// Инициализация интерфейса управления

L L#4800; // Расстояние 4800 импульсов
T DB1.DBD0;
L 1; // Множитель 1 для выходной частоты

L 0; // Сброс конечного выключателя и т.д
T DB1.DBB5;
T DB1.DBW 6;

S DB1.DBX5.2; // Установка разблокирования импульсов DRV_EN
R DB1.DBX4.0; // Установка пошагового режима
R DB1.DBX4.1; // Резервный бит = 0
R DB1.DBX4.2; // Резервный бит = 0
R DB1.DBX4.3; // Резервный бит = 0
R DB1.DBX4.5; // Сброс включения обратного хода DIR_M
R DB1.DBX4.6; // Сброс STOP
R DB1.DBX4.7; // Сброс понижающего коэффициента R

L DB1.DBD0 // Запись 8 байтов в 1STEP 5V/204kHz
T PQD256
L DB1.DBD4
T PQD256

L PID256 //Чтение 8 байтов из 1STEP 5V/204kHz
T DB1.DBD4
L PID260
T DB1.DB12

A M 30.0; // Обнаружение фронта сигнала на инициализацию пуска и
AN DB1.DBX12. 0 // установка запуска DIR_P, если STS_JOB сброшен.
S DB1.DBX4.4

A DB1.DBX12.0 // Ожидание STS_JOB и
R DB1.DBX4.4 // сброс запуска DIR_P; начинается ход
R M 30.0 // Сброс запуска включения

Оправдывая добавленную стоимость

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

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

По мнению Baldor, замыкание контура ведет к увеличению точности деталей и повышению качества, так как позволяет сравнивать измеренную позицию с требуемой позицией автомата или системы перемещения. „Если обнаруживается расхождение, принимаются определенные меры, чтобы компенсировать пропущенные шаги двигателя“, – говорит Мазуркевич. Цена и польза, получаемая от устройства обратной связи и использования замкнутого контура, были бы оправданы применением. Далее он отмечает: „Дополнительная стоимость находится в зависимости от требуемых характеристик механизма, его производительности, точности позиционирования и требуемого качества деталей“.

Стоимость материалов в управляемом процессе также влияет на определение цены. Вейлвендер из компании Parker поясняет: „Шаговые двигатели часто используются с очень дорогими материалами – от электронных узлов до образцов ДНК. Возможность неудачи оправдывает дополнительную стоимость обратной связи“. В Parker считают, что для совершенствования управления шаговыми двигателями при снижении затрат выгоды от внедрения технологий „без датчиков“ можно сравнить с технологиями применения обратной связи на основе датчиков. Вейлвендер также отмечает, что „развивается новое поколение цифрового управления шаговыми двигателями, где будет меньше использоваться обратная связь на основе внешних датчиков, что послужит дополнительной экономии в машиностроении“.

Одноступенчатый редуктор с приводом от Шагового Двигателя

В этом посте я хочу рассказать про изготовление при помощи ранее изготовленного мной станка с ЧПУ одноступенчатой прямозубой передачи.

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

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

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

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

Читать еще:  Автосигнализации с обратной связью и дистанционным запуском двигателя

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

Учтя все ограничения, я перевел двигатель в 3Д модель и дальше стал сопрягать с ним остальные детали…

Теперь что касается построения зубчатой пары: в машиностроительной конфигурации Компас 3Д (v13) есть такая утилита как «Расчеты цилиндрической зубчатой передачи внешнего зацепления», в ней производим геометрический расчет, вводя требуемые параметры: число зубьев, модуль и т.д. Углубляться в это не буду, достаточно будет прочитать главу про построение зубчатых передач из курса механики: детали машин.

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

Для большего интереса я решил сделать шестерни с разным количеством зубьев и передаточным отношением 2:1.

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

После окончания 3Д проектирования, все детали перевел в 2Д вид и сохранил их в векторном формате *.dxf.

Для того чтобы вырезать все детали на станке, я преобразовал векторный формат в G-code через постпроцессор в программе ArtCam. Полученный файл загрузил в станок и после обнуления координат, вырезал все детали.

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

Отдельно на токарном станке выточили ось, на которую устанавливается ведомая шестерня.

Дальше все достаточно просто, собрал узел в едино, и осталось только его закрутить.

Но пришлось подождать месяц, так как драйвера для ШД у меня не оказалось, и я заказал драйвер DM542 на Али.

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

Сразу хочу оговориться, что код для прошивки ардуино нашел на просторах Интернета.

Генератор частоты может: — генерировать меандр на 16 битном таймере. Диапазон частот 1Гц — 8МГц. Регулировка частоты производится энкодером. До частоты 2,8 кГц разрешение 1 герц, на частотах выше таймер аппаратно уже не может поддерживать это разрешение, поэтому более высокие частоты синтезируются, задавая параметром не требуемую частоту, а просто инкременируя регистр сравнения. Получается чем выше частота — тем больше шаг между щелчками энкодера. Вращая энкодер, с не нажатой кнопкой частота меняется на 1Гц; с нажатой кнопкой один шаг — 100Гц. Выше 2,8кГц. вращение энкодера с нажатой кнопкой так — же ускоряет счёт. Программного подавления дребезга контактов энкодера нет, поэтому нужно повесить конденсаторы 0,01..0,1 мкф. относительно земли. На кнопке конденсатор не обязателен. Рассчитанная математически частота выводится в сериал.

/* Генератор 1 Hz..8 MHz. Энкодер подключен к пинам A0 и A1, кнопка

энкодера подключена к A2. Требуется использовать конденсаторы 0,01..0,1uf

относительно земли на каждый из 2х выводов энкодера.

Скетч для ардуино на мк atmega328 (UNO,Nano, MiniPro)

pinMode (9,OUTPUT); // выход генератора

pinMode(A0,INPUT); // с рассчетом, что энкодере внешняя подтяжка-

pinMode(A1,INPUT); // -к шине питания. Если нету, то подтянуть программно.

pinMode(A2,INPUT_PULLUP); //кнопка энкодера

PCICR=1 =2848) gen_mode=1; //переключение режима управления по OCR

// Если увеличение частоты

else knopka? enc++ : enc+=100; // в нч режиме

// Если уменьшение частоты

divider=1; ocr = (F_CPU / enc /2 /divider) -1;

//запись в регистр прескалера

После того как все собрал, подсоединил и залил в Arduino скетч, можно приступать к включению:

Теперь про работу сего механизма: вращение и работа передачи вполне не плохое хоть и при звоне шестерен. В итоге получилось разогнать до 12,5 оборотов в секунду ведущую шестерню, а на ведомой соответственно в два раза меньше. Сгенерированная частота при этом составила порядка 5кГц при 400 имп/об. выставленное на драйвере. При этой частоте двигатель еще не уходил в ступор, а это значит, что можно было дать частоту и больше.

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