Кузовной ремонт автомобиля

 Покраска в камере, полировка

 Автозапчасти на заказ

Как микроконтроллером управлять шаговым двигателем


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

Всё началось с того, что в одном из устройств надо было поворачивать вал электродвигателя на определённое количество оборотов, большая точность не требовалась плюс-минус четверть оборота, поэтому было принято решение реализовать это с помощью электродвигателя постоянного тока. В качестве управляющего элемента был выбран микроконтроллер — Atmega16, но так как выходное напряжение выводов Atmega16 всего 5 вольт, а максимальный ток не должен превышать 20mA, а для управления двигателем необходим ток около десятка ампер и напряжение в несколько десятков вольт, управлять напрямую двигателем не получится. Нужен какой-то посредник, который получал бы на вход то, что может отдать микроконтроллер, а отдавал бы то, что хочет получить двигатель, такого посредника легко найти среди полевых транзисторов серии IRL, управляемых логическим уровнем .

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

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

Шаговые двигатели бывают трёх основных типов:

  • двигатели с переменным магнитным сопротивлением
  • двигатели с постоянными магнитами
  • гибридные двигатели

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

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

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

Перейдём к практике, для эксперимента возьмём шаговый двигатель MITSUMI M42SP-5 с шагом 7.5°, изображённый на картинке.


Скачиваем на него даташит и находим таблицу.

Из таблицы понятно, что такие двигатели бывают двух типов:
  • 12 вольтовые с сопротивлением обмотки 50 Ом
  • 24 вольтовые с сопротивлением обмотки 120 Ом

Схема двигателя изображена на картинке ниже.


Из двигателя выходит 5 проводов: 4 фазы и один общий. Общий провод можно найти с помощью мультиметра, сопротивление между ним и оставшимися 4 проводами равно сопротивлению фазы, в нашем случае 50 Ом.

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


ULN2003 состоит из 7 транзисторов Дарлингтона , каждый из которых может пропустить через себя до 500mA, а рабочее напряжение не должно превышать 50V, чего нам вполне достаточно. На самом деле каждая ячейка ULN2003 состоит не только из транзистора Дарлингтона, а также включает в себя весь необходимый обвес, её структуру можно посмотреть в даташите.

Транзистор Дарлингтона или пара Дарлингтона, представляет собой два соединённых транзистора, его отличительной особенностью является высокий коэффициент усиления, который равен произведению коэффициентов усиления каждого из транзисторов(βс = β1 ∙ β2).

Вращать двигатель можно, подавая питание по очереди на обмотки, при этом в любой момент времени включена лишь одна обмотка, в этом случае двигатель будет работать в режиме шага, то есть при одном переключении обмоток будет поворачиваться на 7.5°.


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

Также можно включить двигатель в режиме полушага, то есть при одном переключении обмоток ротор будет поворачиваться на 3.75°.

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

uint8_t step[8] = {0x01, 0x03 ,0x02, 0x06,0x04, 0x0c,0x08,0x09};

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

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

DaniWeb Войти Регистрация
  • Читать
  • Делать вклад

Поиск Поиск

навигация

Поиск Поиск

  • Форум Категории
  • ноутбук Железо и софт
  • код программирование
  • live_tv Цифровые медиа
  • local_cafe Общественный центр
  • Последнее содержимое
  • Новые темы
  • Последние темы
  • forum Последние сообщения
  • Топ тегов
  • Темы Feed
  • Социальная
  • Топ участников
  • DaniWeb Premium
  • Архив новостей
  • Правила сообщества
  • Connect API
  • Форум API Документы
  • DaniWeb Ads
  • Условия предоставления услуг
  • Политика конфиденциальности
  • FAQ
  • О нас
  • Свяжитесь с нами

© 2020 DaniWeb® LLC

  1. Домой 1
  2. Форум программистов 2
  3. Форум разработки программного обеспечения 3
  4. Обсуждение / Вопрос, как управлять шаговым двигателем с помощью микроконтроллера... 4
Как управлять шаговым двигателем с помощью микроконтроллера, запрограммированного на C ++ UserPageVisits: 2018 24 активный https://static.daniweb.com/connect/images/anonymous.png 80 80 programmingnoob 0 Легкий Плакат Взаимодействие шагового двигателя

с микроконтроллером 8051 (AT89S52)

Шаговый двигатель представляет собой бесщеточный двигатель постоянного тока, который можно вращать на небольшие углы, эти углы называются ступенями. Обычно шаговый двигатель использует 200 шагов, чтобы завершить вращение на 360 градусов, что означает его вращение на 1,8 градуса за шаг. Шаговый двигатель используется во многих устройствах, требующих точного вращательного движения, таких как роботы, антенны, жесткие диски и т. Д. Мы можем повернуть шаговый двигатель на любой конкретный угол, дав ему надлежащие инструкции.

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

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

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

Режим волнового привода : В этом режиме одна катушка включается за раз, все четыре катушки включаются одна за другой. Он производит меньше крутящего момента по сравнению с режимом полного шагового привода, но потребляет меньше энергии. Ниже приведена таблица для создания этого режима с использованием микроконтроллера, что означает, что мы должны подавать Logic 1 на катушки последовательно.

Шаги

A

B

C

D

1

1

0

0

0

2

0

1

0

0

3

0

0

1

0

4

0

0

0

1

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

Шаги

A

B

C

D

1

1

1

0

0

2

0

1

1

0

3

0

0

1

1

4

1

0

0

1

Режим половинного привода: В этом режиме одна и две катушки включаются поочередно, это означает, что сначала включается одна катушка, затем две катушки, затем снова одна катушка, затем снова две и так далее.Это комбинация полного и волнового режима привода, которая используется для увеличения углового вращения двигателя.

Шаги

A

B

C

D

1

1

0

0

0

2

1

1

0

0

3

0

1

0

0

4

0

1

1

0

5

0

0

1

0

6

0

0

1

1

7

0

0

0

1

8

1

0

0

1

Взаимодействующий шаговый двигатель с микроконтроллером 8051

Взаимодействие с 8051 очень просто, нам просто нужно присвоить 0 и 1 четырем проводам шагового двигателя в соответствии с таблицами выше, в зависимости от того, в каком режиме мы хотим запустить шаговый двигатель.А остальные два провода должны быть подключены к правильному источнику питания 12 В (в зависимости от шагового двигателя). Здесь мы использовали униполярный шаговый двигатель. Мы подключили четыре конца катушек к первым четырем контактам порта 2 8051 через ULN2003A.

8051 не обеспечивает достаточный ток для возбуждения катушек, поэтому нам нужно использовать микросхему драйвера тока , которая соответствует ULN2003A . ULN2003A - это массив из семи пар NPN транзисторов Дарлингтона. Пара Дарлингтона строится путем соединения двух биполярных транзисторов для достижения высокого усиления тока.В ULN2003A 7 контактов являются входными контактами, а 7 контактов являются выходными контактами, два контакта предназначены для Vcc (источник питания) и заземления. Здесь мы используем четыре входа и четыре вывода. Мы также можем использовать микросхему L293D вместо ULN2003A для усиления тока.

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

Устранение неисправностей

Если ваш двигатель не вращается ИЛИ не вибрирует, но не вращается, необходимо проверить следующий контрольный список:

  1. Сначала проверьте соединения цепи и код.
  2. Если схема и код в порядке, то убедитесь, что шаговый двигатель получает правильное напряжение питания (обычно 12 В), в противном случае он просто вибрирует, но не вращается.
  3. Если электропитание в порядке, проверьте четыре конечные точки катушки, которые подключены к ULN2003A. Сначала найдите две общие конечные точки и подключите их к 12 В, затем подключите оставшиеся четыре провода к ULN2003A и пробуйте каждую возможную комбинацию, пока двигатель не запустится. Если вы не подключите их в правильном порядке, тогда двигатель будет вибрировать, а не вращаться.

Вот код для режима Волнового шага и Полноволнового режима шага, вы можете легко рассчитать значение для ПОРТА P2 для полуволнового режима.

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

с микроконтроллером AVR Atmega16

- это бесщеточные двигатели постоянного тока, которые могут вращаться с 0 0 до 360 0 с шагом. Шаговый двигатель использует электронные сигналы для пошагового вращения двигателя, и каждый сигнал вращает вал с фиксированным шагом (один шаг). Вращение ангела контролируется путем подачи определенной последовательности сигналов. В отличие от серводвигателя, шаговые двигатели могут управляться с помощью выводов GPIO микроконтроллера, а не выводов ШИМ, и могут вращаться в (+360 0 ) и (-360 0 ).Порядок сигналов определяет направление вращения шагового двигателя по часовой стрелке и против часовой стрелки. Чтобы контролировать скорость двигателя, нам просто нужно изменить скорость подачи сигналов управления. Шаговые двигатели вращаются ступенчато. Есть несколько режимов шагов для управления шаговым двигателем, таких как полный шаг, полушаг и микрошаг. Чтобы узнать больше об основах, теории и принципах работы шагового двигателя, перейдите по ссылке.

Мы ранее связывали шаговый двигатель со многими микроконтроллерами:

В этом руководстве мы будем связывать шаговый двигатель 28BYJ-48 с микроконтроллером Atmega16 AVR с помощью Atmel Studio 7.0. Шаговый двигатель рассчитан на работу в 5В. Мы будем взаимодействовать с шаговым двигателем с обоими драйверами двигателя, т. Е. ULN2003 и L293 . Оба будут работать от 5В. Для упрощения взаимодействия мы используем модуль предварительной сборки обоих драйверов двигателей. Вы также можете использовать автономные микросхемы ULN2003 и L293D. Количество проводов и перемычек может быть больше, поэтому будьте осторожны при подключении всех соединений.

Необходимые компоненты

  1. шаговый двигатель (28BYJ-48)
  2. Модуль
  3. ULN2003 / Драйвер двигателя L293D
  4. Atmega16 Микроконтроллер IC
  5. 16 МГц Кристаллический Генератор
  6. Два 100 нФ конденсатора
  7. Два конденсатора 22pF
  8. Кнопка
  9. проволочных перемычек
  10. макет
  11. USBASP v2.0
  12. Светодиод (любой цвет)

Pin Описание шагового двигателя

Принципиальная схема для управления шаговым двигателем с использованием модуля ULN2003

Подключите все компоненты, как показано на рисунке ниже, при использовании ULN2003 . Точно так же мы будем взаимодействовать с ним, используя L293D на следующем шаге. Мы используем PORTA Atmega16 для соединения шагового двигателя с обоими драйверами. Нет необходимости подключать 5В контакт шагового двигателя.Для перемещения шагового двигателя требуются только выводы катушки. Порядок выводов очень важен для привода шагового двигателя, так как питание катушек должно происходить для достижения ступеней. В этом проекте используются четыре входа ULN2003 и четыре выхода ULN2003. Входы будут подключены к контактам PORTA, а выходы будут подключены к контактам сигнала шагового двигателя. Кроме того, подключите одну кнопку в контакт сброса для сброса Atmega16 при необходимости. Соедините Atmega16 с надлежащей цепью кварцевого генератора.Вся система будет питаться от 5В.

Ниже приведено действительное изображение модуля ULN2003 Driver Driver :

Ниже мы предоставили штыревые соединения Atmega16 с ULN2003 и L293D для вращения шагового двигателя. Сопряжение шагового двигателя с модулем L293D объясняется в следующем разделе, помните, что для управления шаговым двигателем требуется только один модуль ULN2003 или L293D.

Штыревые соединения для INPUT:

Atmega16

ULN2003

L293D

A0

IN1 (PIN1)

IN1 (PIN2)

A1

IN2 (PIN2)

IN2 (PIN7)

A2

IN3 (PIN3)

IN3 (PIN10)

A3

IN4 (PIN4)

IN4 (PIN15)

Штыревые соединения для ВЫХОДА являются следующими:

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

ULN2003

L293D

Оранжевый

OUT1 (PIN16)

OUT1 (PIN3)

Желтый

OUT2 (PIN15)

OUT2 (PIN6)

розовый

OUT3 (PIN14)

OUT3 (PIN11)

Blue

OUT4 (PIN13)

OUT4 (PIN14)

Принципиальная схема для управления шаговым двигателем с помощью модуля L293D:

Управление шаговым двигателем с AVR ATmega16

Как уже говорилось, в отличие от сервомотора, шаговые двигатели требуют внешних драйверов e.грамм. Водитель мотора ULN2003 или L293D. Так что просто подключите Circuit, как указано выше, и загрузите программу main.c, указанную в конце .

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

Полный код AVR для управления шаговым двигателем приведен ниже. Код прост и может быть легко понят. Ниже приведены два кода: один для вращающегося шагового двигателя с ULN2003 и второй с модулем L293D .

Подключите USBASP v2.0 и следуйте инструкциям, приведенным в этой ссылке, для микроконтроллера программы Atmega16 AVR с использованием USBASP и Atmel Studio 7.0 . Просто создайте эскиз и загрузите его с помощью внешнего набора инструментов.

Полный код с демонстрационным видео приведен ниже.

,

Смотрите также


avtovalik.ru © 2013-2020