Bmw-rumyancevo.ru

БМВ Мастер — Автожурнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Шаговый двигатель работает на 5 В, драйвер взрывается на 12 В

Шаговый двигатель работает на 5 В, драйвер взрывается на 12 В?

кокко

После того, как я спас несколько шаговых двигателей и прочитал много о них, я наконец решил попробовать их . Но прежде чем я сделал это, я спросил: Простая цепь шагового двигателя безопасна?

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

Я выбрал Mitsumi M55SP-1N от принтера hp и ULN2803A в качестве драйвера.

После нахождения 2 катушек и центрального крана я проверил 5v с использованием батареи.

Как и ожидалось, все работало нормально.

Пришло время спаять вещи вместе. Я использовал 2 канала на чип, чтобы быть уверенным, что у меня достаточно поглотителя, а не перегрева чипа. Я снова все проверил с 5v. Отлично.

Теперь, когда двигатель является двигателем 12-24 В, я подключен к источнику питания 12 В 1,25 А.

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

Даже если вся установка потребляет менее 1,25 А, я решил увеличить ее. Поэтому я взял источник питания 12В 5А и включил двигатель.

После 3 беспорядочных заиканий uln2803 взорвался.

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

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

вот готовая схема http://imgur.com/a/tCdwk (2 изображения) и схема

Dejvid_no1

кокко

Dejvid_no1

кокко

Олин Латроп

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

Диоды свободного хода требуются для предотвращения индуктивного отката, вызванного катушками, когда транзисторы отключаются от разрушения транзисторов, но выбранная вами транзисторная матрица уже имеет встроенные диоды свободного хода. Судя по выложенным фотографиям, COM-контакт подключен к напряжению питания: диоды подключены правильно.

Глядя на таблицу, отдельные транзисторы могут потреблять только абсолютный максимум 500 мА каждый, а весь чип может потреблять суммарный ток всего 2,5 А. Размещение двух транзисторов параллельно (как вы сделали) удваивает максимальный ток в теории , но с биполярными транзисторами это не всегда так на практике. Транзистор, который нагревается больше, будет иметь более низкое прямое напряжение и, таким образом, имеет тенденцию поглощать еще большую часть общего тока, вызывая его еще больший нагрев в контуре обратной связи.
Однако это не относится к ULN2803. Транзисторы имеют одну и ту же головку и фактически предназначены для параллельного подключения, устраняя проблему:

Эта проблема

Похоже, что ток коллектора слишком высок при 12 В. В настоящее время единственным ограничивающим ток коллектора является сопротивление обмотки, и такое же сопротивление при 12 В будет в 2,4 раза превышать то, которое оно пропускает при 5 В. У вас есть три варианта для исправления этого:

Используйте биполярный степпер с большим количеством витков более тонкой проволоки

Добавьте два токоограничивающих резистора. Резистор должен быть подключен между каждым центральным отводом и напряжением питания, и должен иметь значение, которое в сочетании с сопротивлением обмотки ограничивает ток через каждый транзистор (предпочтительно намного) менее 1А. Контакт COM должен быть подключен к источнику питания.

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

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

Шаговые двигатели с каждым годом приобретают все большую популярность в мире электроники поскольку именно они обеспечивают превосходную точность позиционирования различных механизмов. В этой статье мы рассмотрим подключение одного из самых распространенных шаговых двигателей 28-BYJ48 к плате Arduino при помощи модуля ULN2003 и управление им с помощью потенциометра.

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

Читать еще:  Ваз2107 какое масло для двигателя

Общие принципы работы шаговых двигателей

Внешний вид шагового двигателя 28-BYJ48 (купить на AliExpress) представлен на следующем рисунке:

Первый вопрос, который напрашивается при взгляде на этот рисунок – почему в отличие от обычного двигателя из этого шагового двигателя выходят 5 проводов различных цветов? Чтобы понять это давайте сначала разберемся с принципами работы шагового двигателя.

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

Как можно видеть из рисунка, двигатель имеет однополярную катушку с 5 выводами. Но фактически это 4 катушки, на которые нужно подавать питание в определенной последовательности. На красные провода необходимо подать +5V, на остальные 4 провода необходимо подать землю чтобы запустить в работу соответствующую катушку. Мы будем использовать плату Arduino чтобы подавать питание на эти катушки в определенной последовательности и тем самым заставлять двигатель вращаться. Более подробно ознакомиться с принципами работы шаговых двигателей можно в статье про подключение шагового двигателя к микроконтроллеру AVR.

Так почему же этот двигатель называется 28-BYJ48? Честно говоря, мы не знаем точного ответа на этот вопрос. Некоторые наиболее важные технические характеристики этого шагового двигателя приведены на следующем рисунке.

На первый взгляд от такого количества характеристик может закружиться голова, но давайте попробуем выделить из них самые важные, те, которые нам понадобятся для дальнейшей работы. Во-первых, мы знаем, что это шаговый двигатель 5V, поэтому необходимо подавать на красный провод 5V. Также мы знаем что это четырехфазный шаговый двигатель поскольку в нем четыре катушки. Передаточное число этого двигателя — 1: 64. Это означает, что вал, который вы видите снаружи, сделает одно полное вращение в том случае, когда двигатель внутри сделает 64 оборота. Это происходит благодаря шестерням, которые включены между двигателем и выходным валом. Эти шестерни помогают в увеличении крутящего момента.

Еще одним важным показателем, который нам следует знать, является угол шага: 5.625°/64. Это значит что когда двигатель сделает последовательность в 8 шагов он будет поворачиваться на 5.625° при каждом шаге и за один полный оборот он сделает 64 шага (5.625*64=360).

Расчет шагов на оборот для шагового двигателя

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

В Arduino для управления двигателем мы будем использовать 4-шаговую последовательность, поэтому угол шага будет составлять 11.25°. Поскольку изначально он равен 5.625°(приведен в даташите), то для 8 шаговой последовательности получим 11.25° (5.625*2=11.25).

Справедлива следующая формула:

Количество шагов за оборот = 360 / угол шага.

В нашем случае 360/11.25 = 32 шага за оборот.

Зачем нужен драйвер мотора для управления шаговым двигателем

Большинство шаговых двигателей будут работать только с помощью модуля драйвера мотора. Это связано с тем, что микроконтроллер (в нашем случае плата Arduino) не может обеспечить достаточный ток на своих контактах ввода/вывода для работы двигателя. Поэтому мы будем использовать внешний драйвер мотора для управления нашим шаговым двигателем — модуль ULN2003 (купить на AliExpress). В сети интернет можно найти рейтинги эффективности различных драйверов мотора, но эти рейтинги будут меняться в зависимости от типа используемого шагового двигателя. Основной принцип, которого следует придерживаться при выборе драйвера мотора – он должен обеспечивать достаточный ток для управления шаговым двигателем.

Работа схемы

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

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

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

Объяснение программы для платы Arduino

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

Номер шагаКонтакты, на которое подается питаниеКатушки, на которое подается питание
Шаг 18 и 9A и B
Шаг 29 и 10B и C
Шаг 310 и 11C и D
Шаг 411 и 8D и A
Читать еще:  Электростатический двигатель литовченко как собрать

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

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

Как мы рассчитали ранее, полное число шагов для полного оборота нашего шагового двигателя, равно 32, пропишем это в следующей строчке кода:

#define STEPS 32

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

Stepper stepper (STEPS, 8, 10, 9, 11);

Примечание: последовательность номеров контактов, указанная в приведенной команде (8,10,9,11) – специально упорядочена таким образом чтобы подавать питание на катушки шагового двигателя в правильном порядке. Если вы измените номера контактов, к которым подключен шаговый двигатель, то вы соответствующим образом должны их упорядочить для подачи в приведенную команду.

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

Для двигателя 28-BYJ48 скорость вращения можно установить в диапазоне от 0 до 200.

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

Количество шагов, которое должен сделать двигатель, определяется переменной “val”. Поскольку мы имеем 32 шага (для оборота) и передаточное число 64 мы должны сделать 2048 (32*64=2048) “шагов” в этой команде для совершения одного полного оборота двигателя.

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

А один шаг против часовой стрелки:

В нашей программе мы будем считывать значение на аналоговом контакте A0 платы Arduino и сравнивать его с предыдущим значением (Pval). Если оно увеличилось, то мы будем делать 5 шагов двигателем по часовой стрелке, а если уменьшилось – то 5 шагов двигателем против часовой стрелки.

potVal = map(analogRead(A0),0,1024,0,500);
if (potVal>Pval)
stepper.step(5);
if (potVal

stepper.step(-5);
Pval = potVal;

Работа проекта

Когда вы сделаете все необходимые соединения в схеме данного проекта у вас должна получиться примерно следующая конструкция:

После этого загрузите программу в плату Arduino и откройте окно монитора последовательной связи (serial monitor). После этого вы можете вращать ручку потенциометра и наблюдать как в соответствии с ее поворотами шаговый двигатель будет вращаться по часовой и против часовой стрелки.

Исходный код программы

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

Опыт изучения Arduino. Подключение шагового двигателя. Часть программная и наладочная.

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

Начнём с тока двигателя. На ПУ надо подать только питание логической части, т.е. 5 В. Плюс подается на вывод VDD (может быть обозначен VCC, VLOG), минус на GND. ШД и его питание пока не подаю. Сам процесс регулировки сводится к установке Vref.

Формула Vref для A4988 изменяется от номинала токочувствительных резисторов. Это два чёрных прямоугольника на плате драйвера. Обычно подписаны R050 или R100.

Vref = Current Limit * 8 * (RS)

RS = 0,100
Vref = Current Limit * 8 * 0,100 = Current Limit / 1,25

RS = 0,050
Vref = Current Limit * 8 * 0,050 = Current Limit / 2,5

где
Vref – напряжение на пине, который задаёт ток двигателя.
Current Limit – ток шагового двигателя.
RS — сопротивление резистора — датчика тока.

Измерять Vref проще всего на подвижном выводе подстроечного резистора. Минус мультиметра (в режиме измерения напряжения постоянного тока соединяется с выводом GND, а плюс цепляется за жало отвёрточки, которой кручу подстроечный резистор. Ток своего двигателя я не знал и подобрал опытным путём.

Если пересчитать по формуле, то получу ток:

Vref = Current Limit * 8 * 0,100 = Current Limit / 1,25

отсюда
Current Limit = 1,25 * Vref = 1,25 * 0,28 = 0,35 А или 350 мА

С током разобрался. Теперь микрошаг.

За микрошаг отвечают выводы MS (micro step) MS1, MS2, MS3.
Теперь пару слов о том, что такое микрошаг. Из таблицы видно, что это дробное число. Допустим ШД совершает полный оборот за 200 шагов. Если будет выбран микрошаг 1/4, то полный оборот будет совершаться уже за 800 шагов, а при микрошаге 1/16 — за 3200 шагов. Для чего это нужно? При полном шаге получается больший момент, меньшая точность и больше шумность. Чем мельче шаг, тем выше точность позиционирования, плавнее ход (особенно на малых частотах вращения) и значительно меньше шума при работе. Однако при этом момент на валу двигателя будет меньше. Забегая вперёд, скажу что поигрался с разными значениями, но остановился на 1/16, соединив выводы MS1, MS2, MS3 с выводом VDD.
ПУ настроена — можно подключать двигатель и его питание.
Напомню, что одна из обмоток у меня это синий и зелёный провод, вторая — белый и оранжевый.

Читать еще:  Что такое помповый двигатель

Схематически подключение ШД к ПУ выглядит у меня так:

После подачи напряжений питания на плату ШД стал произвольно двигаться. Виной тому наводки на выводах STEP (шаг) и DIR (direction — направление) — эти выводы отвечают за управление вращением ШД.
Если соединить вывод DIR с выводом VDD, ШД будет двигаться в одну сторону, а если с GND, то в другую.
При переходе напряжения от низкого к высокому уровню на выводе STEP ШД совершает 1 микрошаг. Т.е. для вращения двигателя на этот вывод нужно подавать прямоугольные импульсы с низким уровнем около нуля и высоким около 5 В, так называемые TTL-уровни. Генератором таких импульсов у меня будет плата ардуино.
Я загрузил в неё скетч из примеров под названием Blink. В оригинале он формирует на 13 выводе платы (в моём случае Arduino Nano) импульсы с частотой 1/2 Гц (1 с подается высокий уровень, затем 1 с низкий уровень). При такой частоте ШД совершил бы один оборот (при микрошаге 1/16) за 6400 с! Так долго я ждать не хотел))) и стал повышать частоту двигателя. Устойчивой работы мне удалось добиться на частотах вплоть до 10 кГц. Т.е. длительность импульса и паузы у меня составляют по 50 мкс. Операторы delay в скетче пришлось заменить на delayMicroseconds, потому что delay умеет работать только со временами от 1 мс. В итоге скетч стал выглядеть так:

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

По подключению Arduino.

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

Шаговый двигатель. Датчики. Ардуино

Привет! Рассмотрим еще один тип двигателей, шаговый двигатель.

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

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

Шаговый двигатель 28BYJ-48

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

Принцип работы

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

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

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

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

Преимущества

  • Точность
  • Фиксирует свое положение при остановке.
  • Регулировка скорости вращения с высокой точностью.
  • Способность быстрого старта, остановки, реверса.
  • Высокая надежность.

Недостатки

  • Невысокие скорости вращения.
  • Возможность «проскальзывания» ротора
  • Возможно явление резонанса.
  • Может произойти потеря позиционирования при механических перегрузках.

Программа

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

Принципиальная схема подключения

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

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

Мы можем управлять двигателем напрямую из программы. Для этого будем последовательно подавать напряжение на разные пины драйвера. Таким образом создавать напряжение на обмотках статора. Ротор будет менять положение в соответствии с магнитным полем.

Загрузите данный скетч в ардуино. Таким образом мы запрограммируем постоянное движение шагового двигателя. Каждый шаг цикла отвечает за один оборот ротора двигателя.

Библиотека AccelStepper.h

В библиотеке примеров IDE есть программы и библиотеки для шаговых двигателей. Но намного удобнее использовать стороннюю библиотеку . Ее легко установить через Library Manager. Комбинация клавиш Ctrl+Shift+I

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

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

Сначала подключаем библиотеку и создаем экземпляр библиотеки с заданными настройками.

Объявляем переменные с номерами пинов, к которым подключаем контакты драйвера двигателя.

В функции setup() задаем параметры нашего класса для двигателя.

В функции loop() программируем смену направления движения вала, когда достигнута заданная позиция вала.

И запускаем работу библиотеки.

Работа шагового двигателя и ардуино

Заключение

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

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