Простой тестер униполярных шаговых двигателей на attiny2313 и uln2004

Шаговый двигатель в доработке новогоднего диско-фонаря (ATtiny2313A, ULN2003)

Привет читателям и писателям Датагор.ру! Попала мне в руки такая вот красивая новогодняя игрушка. Внутри три светодиода, над ними вращается прозрачный шар из пластика. Конструкция формирует линзы, которые проецируют красоту во все стороны. Шар медленно крутится, разноцветные узоры бегают по стенам и потолку.

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

Содержание / Contents

  • 1 Схема первая
  • 2 Первый запуск с шаром, первые проблемы
  • 3 Решение
    • 3.1 Расчёт синуса
    • 3.2 Новый код
  • 4 Схема вторая
  • 5 Итоги тестирования, правки, выводы
  • 6 Файлы
  • 7 Фьюзы
  • 8 Дополнение о моторах

↑ Схема первая

Код пишем в Mikropascal. Программа просто переключает выходы поочередно в нужном для шаговика порядке, таким образом моторчик работает в режиме полушага.

↑ Первый запуск с шаром, первые проблемы

Собираем макет, напыживаем шар на вал и испытываем.

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

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

↑ Решение

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

Смысл такой: если крутить моторчик двумя синусоидами, он вращается гораздо равномернее, и практически бесшумно!
В чистом виде такое решение едва ли будет применимо, но вот сделать синусоиду ШИМом можно, и для этого даже не понадобится более мощный микроконтроллер. У Attiny2313A есть четыре канала ШИМ, что как раз нам подходит.

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

↑ Расчёт синуса

Я не стал заморачиваться с вычислением значений синуса в микроконтроллере и просто подготовил их заранее в Excel.
Поскольку используется восьмибитный ШИМ, для каждого шага значение синуса (оно не может быть больше единицы) нужно умножить на 255, чтобы получить итоговые значения от 0 до 255

Получился такой ряд цифр:

↑ Новый код

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

Получился такой код:

↑ Схема вторая

Собираем, запускаем… О чудо, работает, даже как бы и неплохо, но тоненько свистит в такт шагам.
Уменьшаем предделитель таймера с 8 до 1, но сам таймер переставляем режим фазо-корректного ШИМ, он в два раза медленнее «быстрого» ШИМ. Итоговая частота получилась около 16 кГц, что уже не слышно.
Включаем… Писк пропал! Тишина просто пугающая! Крутится плавно!
Осталось всё собрать, чтобы выглядело не хуже, чем было.


↑ Итоги тестирования, правки, выводы

Тестовая эксплуатация показала, что нужна некоторая доработка. Маленькая китайская платка 5В питания от пульсирующей нагрузки сходила с ума, пришлось сгладить потребление с помощью четырех конденсаторов по 1500 μF 6.3V из материнок.

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

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

Проанализируем:
1) Каждое устойчивое положение мотора не фиксируется жестко, оно обладает определенной упругостью.
2) Шар это достаточно массивный кусок пластика, обладающий моментом инерции
3) Упругость и масса образуют колебательную систему!
4) Мы сами её раскачиваем пинками (хотя и сглаженными) через повторяющиеся промежутки времени!

В итоге оказалось достаточно в приведенном выше коде изменить период следования тактов.
Вместо delay_us (1000); делаем delay_us (1150);

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

Хочу заметить, что если вы решите сделать что-то подобное, эти конкретные цифры периода, вероятно, не подойдут под ваш моторчик и под ваш вращающийся объект. Их придётся подбирать самому.

Теперь всё прекрасно работает, всем спасибо за внимание!

↑ Файлы

▼ stepper.7z 63,43 Kb ⇣ 7 В архиве проект в Proteus 8, проект-исходник в mikroPascal, готовый stepper.hex, файл синус.xlsx.

↑ Фьюзы

Нужные фьюзы программа выдаст ниже в виде галок и в виде 16-ричных значений. В нашем случае поменяется только одна галка — CKDIV.

↑ Дополнение о моторах

Редуктора не слышно, он демпферной смазкой залит по уши. А вот сам моторчик противно скрежещет.

Если не торопиться, на его место можно воткнуть такой:

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

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Куплено и опробовано читателями или в лаборатории редакции.

Электроника для всех

Блог о электронике

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

Предыстория
Понадобилось мне прошлой осенью восстановить измерительный стенд. Одна из главных частей стенда — система протяжки лески с закрепленной на ней трубочке сквозь СВЧ-резонатор (это такая медная банка весом 20-30 кг). Причем протяжка должна осуществляться периодически с фиксацией положения (на 1мм подвинул, остановился, подождал секунду, ещё на 1мм подвинул, и так далее). Естественно сразу возникла мысль о шаговом двигателе (ШД). Но как им управлять? Разобрался. Начал искать схемные решения — биполярными двигателями сложно управлять, поэтому выбор пал на униполярный. Был приобретён кЫтайский моторчик под названием
MOTS1 (ST28), который в России продаётся Velleman`ом

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

Пришёл черёд разработки контроллера управления. Разработкой движили несколько целей:

  • Покупать «чужой» контроллер за 5 т.р. совесть не позволяла
  • Стоимость разработанного контроллера не должна превышать 500-700 р.
  • Простота конструкции для а) повторяемости устройства, б) проще отладка, в) неблагоприятная электромагнитная обстановка, г) чтобы те, кто найдут контроллер через 20 лет смогли разобраться как его «завести», т.к. я подобным образом разбирался с СВЧ-резонатором, пролежавшим в шкафу с конца 90х…
  • Управление с компьютера. Всяких FT232RL в Москве я не нашёл на тот момент, поэтому без всяких раздумий решил использовать интерфейс RS-232.
  • Питание от компьютерного разъёма (который питает харды, приводы и т.д.). Комп всё равно рядом, 2 напряжения: +5 для питания микросхем, +12 для ШД.

Хронология событий
Набросал схему.

Набросал плату в Sprint Layout.

Прошивка для ATmega8L.
Опыта было мало, время поджимало — решил не возиться с ассемблером и написал на каком-то из Basic`ов. Весила она около 25% флеша ATmega8L.

Перешёл на «железо»: нашёл лист шестилетней фотобумаги от уже убитого струйника Epson. Распечатал, заЛУТил (не с первого раза — бумага фигово липнет, старая наверно), спаял.

Для связи с COM-портом изпользуется разъём IDC-10 (изготовлен кабель IDC-10 — DB-9F), для соединения с пятью проводами ШД — штыри PLS-8 (3 штыря из 8 отломаны).

При макетировании из-за того, что ни осциллограф, ни комп не были заземлены, и особенностей БП компьютера, я спалил оба COM-порта. С тех пор использую переходник USB-COM на основе PL2303.

Во время тестирования и отладки понял, что зря я не предусмотрел кнопку сброса МК и разъём внутрисхемного программирования…Пришлось «подвесить» его на проводах =)

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

Зимой я решил переписать прошивку для МК.
Естественно уже на ассемблере. За неделю осилил, и вот что получилось

Краткое описание алгоритма программы:

  • 1. Инициализации и конфигурирование регистров, макросы, таблица векторов прерываний
  • 2. Оправляем пользователю приглашение «hello», что контроллер готов.
  • 3. Ждём, когда же пользователь проснётся и пришлёт МК команду.
  • Команда представляет собой 3 байта. Первый и второй байт — число периодов управляющих сигналов, третий байт — направление вращения.
  • Формирование пакетов управляющих сигналов возложено на программу на компьютере.
  • Передача осуществляется на скорости 38400бит/с.
  • 4. Принимаем команду, сохраняем в RAM. Читаем из RAM в РОН.
  • 5. Запускаем таймер.
  • 6. Переходим к пункту 3.
Читайте также  Терморегулятор на pic

А тем временем таймер по прерыванию совпадения:

  • 1. Уменьшаем счётчик сигналов на единицу. Если не дошли до нуля, то
  • 1.1. Определяет направление вращения
  • 1.2. Выбирает следующую управляющую комбинацию сигналов из памяти программ
  • 1.3. Выводим соответствующую управляющую комбинацию в PORTB.
  • 2. Если счётчик сигналов равен нулю — тормозим таймер.

Такой алгоритм позволяет «пополнять» содержимое счётчика сигналов во время работы таймера (естественно не в момент прерывания) и добиться «непрерывной» работы ШД. Но этим уже занимается программа написанная на VisualBasic 6.0 (нравится он мне, как бы его не обижали любители С# и Delphi).

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

Оценка стоимости всего этого безобразия:

Как видно, уложился в 600р. Может конечно что-то и подзабыл, но одна из поставленных задач выполнена.

Выводы
Получился довольно «узконаправленный» контроллер. Но задачи создать универсальное устройство не было. Изготавливается довольно быстро, всё в DIPах и выводным монтажом. Размеры — наверно чуть больше 2х спичечных коробков. Возможность модернизации: Легко задать необходимую управляющую последовательность в коде прошивки, ассемблировать, зашить в МК и пользоваться, код занимает около 3% памяти — места хватит ещё светомузыку приделать 🙂

Возможные применения

  • детская игрушка башенный кран =)))
  • системы протяга всевозможных нитей, лески, например, занавески открывать по команде с компа
  • маломощные приводы (до 6Вт, т.к. ULN2003AN больше 500мА не терпит, если конечно ШД столько сам потянет)
  • системы, требующие точного позиционирования (число управляющих импульсов на 1 оборот ШД равно 2048. жаль мощность очень невелика)

P.S. Автор выражает благодарность своему научному руководителю Сергею Марковичу за спонсорство, коллегам по лаборатории Тарасу и Лёшке, подруге Юле за помощь в тестировании и отладке, и конечно же DI HALT`у за предоставленную возможность быть опубликованным на easyelectronics.ru!

DI HALT
Меня не теряте 😉 Я сейчас очень много пишу, но пока не буду уточнять что. Хотя, некоторые уже спалили. Как доделаю хотя бы половину задуманного, естественно, сообщу 🙂 А пока буду выкладывать присланные статьи. Их тут довольно много накопилось.

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

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

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

98 thoughts on “Контроллер маломощного униполярного шагового двигателя”

Ой, какая красота. На чём софт для компьютера делали? Одним глазочком в исходник посмотреть мона?

AVR Урок 18. Подключаем шаговый двигатель. Часть 1

Урок 18

Подключаем шаговый двигатель

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

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

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

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

Мне в руки попался именно вот такой вот шаговый двигатель 28-BJ48 компании Kiatronics

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

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

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

Данный модуль представляем собой микросхему ULN2003. Можно использовать ее не только для двигателей. Но мы будем использовать здесь 4 входа и 4 выхода, так как у нашего двигателя 4 провода. каждый из которых подключен к определённой обмотке, а пятый провод является общим. Подключенный таким образом мотор уже не влияет на ножки портов, у которых ограничен максимальный ток и можно уже ничего не бояться на этот счёт. При подключении к ножкам контроллера мы используем входы модуля IN1, IN2, IN3 и IN4, а разъём двигателя просто соединим с разъёмом модуля.

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

Здесь мы видим 4 катушки, одним выводом которые соединены к общему проводу, а на другие выводы каждой катушки мы будем подавать логические уровни, например на рисунке поданы 1000.

Данные обмотки потом по кругу так циклически и повторяются.

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

1 режим – этот простейший режим, при котором мы по очереди подаём логические единицы или высокие логические уровни на каждую обмотку. Называется он также полношаговый режим или One Phase Step Mode.

Схематично данный режим можно изобразить таким образом

Существует также ещё один интересный режим – это режим когда ротор будет шагать между обмотками, то есть мы единички будем подавать на 2 соседние обмотки

А также есть ещё и третий решим – это полушаговый режим, когда мы уже чередуем комбинации, сначала ротор будет находиться у обмотки, потом наполовину переместится к соседней обмотке, потом совсем к соседней обмотке и т.д. Это полушаговый режим или one and two-phase-on

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

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

Программатор и шаговый двигатель 28YBJ-48 с драйвером ULN2003 можно приобрести здесь:

Смотреть ВИДЕОУРОК (нажмите на картинку)

Выходной драйвер ULN2003 для микроконтроллеров. Описание, подключение, datasheet на русском

Характеристики микросхемы

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

Читать также: Ту 3178 004 87879481 2010

Чтобы этого не происходило, правильно подходите к расчету потребляемой и рассеиваемой мощности. В данном случае при максимальном напряжении на CE равном 50 В максимальная мощность выходного транзистора составит не более 25 Вт, при этом он будет очень сильно греться. Поэтому номинальный коммутационный ток лучше поддерживать не более 300-400 мА. В таком режиме микросхема будет работать долго и стабильно.

Структурная схема микросхемы до боли проста и состоит всего из 7 ячеек стандартной ТТЛ-логики И-НЕ с подключенным обратным диодом на общий вывод питания COM . С топологией устройства также все просто, каждый вход расположен напротив выхода, что не даст спутать выводы при проектировании каких-либо устройств. Главное запомнить, что первый вывод является прямым входом.

Что касается характеристик, то они представлены для микросхем с ТТЛ-логикой, при котором управляющий сигнал не превышает 5 В. Но также выпускаются аналоги КМОП, которые могут работать от более низкого порога около 2 В до 9 В.



Аналоги ULN2003

Разные зарубежные производители выпускают свои аналоги ULN2003: L203, MC1413, SG2003, TD62003. Так же есть и отечественный аналог: К1109КТ22.

8-ми канальный драйвер нагрузки ULN2803A, ULN2804A

Для работы с микроконтроллерами может быть более удобнымы 8-ми канальные драйверы. И у семиканальных ULN2003, ULN2004 есть их восьмиканальные братья ULN2803, ULN2804.

Читайте также  Считыватель rfid-меток с несущей частотой 125 кгц

Точно также как и ULN2003 — ULN2803 рассчитан на управление от ТТЛ-логики и низковольной К-МОП, а ULN2804 от К-МОП питающейся в диапазоне 6 .. 15 В. Отличия ULN280X от ULN200X только в дополнительном канале и 18-выводном корпусе. У ULN2803А есть отечественный аналог: К1109КТ63.

Драйверы нагрузки ULN2023A, ULN2024A

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

, в остальном параметры и схемотехника этих сборок повторяют своих собратьев.

Аналоги микросхемы uln 2003

Как и любая друга, микросхема uln 2003 аналоги имеет как среди импортных, так и отечественных производителей. Например, самым популярным из них является ключ К1109КТ22, ITT 656, L 203, M 2003 P , NE 5603 N и другие. Выбирая аналог к этой микросхеме, необходимо обращать внимание на топологию. Если этот ТТЛ-логика, то и входное напряжение должно быть не более 5 В. Все представленные аналоги этого устройства имеют то же техническое исполнение и конструктив, поэтому могут быть заменены без внесения каких-либо изменений в схему.

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

На uln 2003 схема подключения до боли проста и не включает никаких компонентов. Главное, не перепутать вход с выходом и общий вывод, в остальном все и так ясно. Но все же для наглядности стоит повторить схему на примере с шаговым двигателем с питанием от 12 до 24 В. Общий провод от +24В подключается на 9 вывод и к центральному отводу обмоток двигателя, все остальные оп порядку согласно полюсам. Управление двигателем осуществляется по аналогичным линиям, только со входа МС.

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

Зависимость входного напряжения и тока в нагрузке

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

  • В ТТЛ-логике при входном напряжении 2,4 В ток коммутации составляет не более 200 мА.
  • При U вх.=2,7В, выходной ток не превышает 250 мА.
  • При величине входного напряжения не более 3 В, ток коллектора выходного транзистора составляет 300 мА.

Также в устройстве присутствует паразитная емкость, которая может достигать 25 pF в зависимости от частоты управляющего напряжения или создаваемых помех в непосредственной близости от нее. При этом минимальный порог паразитной емкости находиться на уровне 15 пФ. Что касается времени включения выходных транзисторов, то они являются достаточно быстрыми. Время перехода из одного состояния в другое лежит в пределах от 0,25 до 1 мкс, что говорит о возможности работы на достаточно высоких частотах.

Исходя из описания на микросхему, максимальный ток составляет 0,5 А, но в таком режиме она существенно нагревается до 70 и более градусов, что может быть критичным. Ведь максимальная температура, при которой микросхема еще нормально работает, составляет порядка 85 градусов. Также следует отметить, что максимальный входной ток управления при напряжении 3,85 В не должен превышать 1,35 мА. А это немаловажный факт, потому что именно по входу у многих схемотехников она выходит из строя.

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

Выходной драйвер ULN2003 для микроконтроллеров. Описание, подключение, datasheet на русском

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

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

Пара Дарлингтона не свободна от некоторых недостатков, которые мы рассмотрим далее. Транзистор NPN универсального назначения открывается, когда мы подаем на его базу напряжение около 0,6 В. Если мы используем небольшой ток, мы можем довести его до насыщения с очень низким напряжением коллектор-эмиттер (VCE), например, в случае BC337, это между 0,2 В и 0,5 В.

В паре Дарлингтона входное напряжение будет в два раза больше, чем 0,6 В, потому что базовые напряжения обоих транзисторов складываются, как мы это можем видеть на рисунке. Также падение напряжения на выходном транзисторе будет больше, потому что это будет сумма напряжения насыщения первого транзистора + напряжение база-эмиттер выходного транзистора.

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

На предыдущем рисунке мы видим внутреннюю схему одного из каналов драйвера ULN2003. Здесь мы видим входной резистор на 2,7кОм, и еще два дополнительных резистора которые улучшают характеристики драйвера. Входное сопротивление каждого канала освобождает нас от установки внешних резисторов при подключении ULN2003 к микроконтроллеру.

Во внутренней схеме мы также можем видеть защитный диод, подключенный к коллектору выходного транзистора. Данный диод предназначен для защиты транзистора от ЭДС самоиндукции, возникающей в момент отключения индуктивной нагрузки (реле или двигателей). Чтобы этот диод работал, необходимо подключить вывод 9 (COM) к положительному выводу нагрузки (см. Рисунок с примером подключения).

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

На рисунке мы видим ULN2003, подключенный к микроконтроллеру (это могут быть PIC, Atmel, Arduino, Raspberry PI) и с различными нагрузками (двигатели постоянного тока, светодиодная лента, реле и т. д.).

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

Микросхема ULN2003 является частью семейства подобных драйверов: ULN2001, ULN2002, ULN2003, ULN2004, которые очень похожи. Различие в первую очередь в значении входного сопротивления для согласования с различной логикой.

В настоящее время микросхема ULN2003 является наиболее популярной, поскольку она хорошо работает с управляющими напряжениями 5 В (TTL) и 3,3 В (LTTL). Существует вариант с 8 каналами вместо 7 – это ULN2803. Из-за восьмого канала корпус имеет 18 выводов. В остальном он подобен ULN2003.

(167,0 KiB, скачано: 354)

Тестер транзисторов / ESR-метр / генератор

Многофункциональный прибор для проверки транзисторов, диодов, тиристоров…

Практическое применение

Сфера применения микросхемы uln 2003 достаточно широкая и охватывает как промышленность, так и детские игрушки с целью развлечения. Например, ее можно применить в устройстве переключения бегущих огней, собранных на мощных светодиодах или даже лампочках с общим питание не более 50 В. U ln2003 биполярный шаговый двигатель может вращать, потому что у нее достаточно выводов, чтобы выполнить целый оборот с позиционированием. Как пример, можно организовать управление вентиляторным шаговым двигателем посредством параллельного порта, собрав небольшую схему с подключением к цифровым выходам интерфейса из линии DATA .

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

ULN2003 — Матрица из мощных транзисторов Дарлингтона

ВИДЕО ПО ТЕМЕ: ULN2003A para Arduino

Обнаружили недостоверную информацию — нажмите значок справа от позиции для отправки жалобы. Вы хотите прекратить это первоапрельское безобразие? Да, хватит уже! Нет, оставьте, это смешно.

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

Как проверить микросхему?

Обычно на руках у радиолюбителя всяческие микросхемы появляются из других устройств, которые были разобраны очень давно, и уже нет никакой информации о состоянии его компонентов, поэтому вопрос, как проверить uln 2003a вполне актуален. А сделать это можно достаточно просто:

Прозвонить мультиметром. С его помощью можно выяснить пробит ли диод или сам транзистор. Если что-то пробито (звонится на КЗ или около), то в любом случае эта ячейка неисправна. Базу прозвонить таким способом не удастся, потому что на входе имеется резистор сопротивлением 2,7 кОм. Лучше попробовать включить открыть транзистор, подав на вход напряжение величиной не более 3,85 В.

AVR Lab устройства на микроконтроллерах AVR

Форум по AVR

  • не работает программа из примера про пролистывания меню
  • sinaprog не работает
  • Пароль к архивам на сайте
  • Пароль
  • HDD и прерывания — доработка программы из статьи /node/220
Читайте также  Измерение освещенности на arduino и вывод на дисплей nokia 5110

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

  • atmega8
  • avr
  • L293DNE
  • stepper motor
  • шаговый двигатель

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

Когда хочется чего-то более существенного чем просто помигать светодиодами, и когда усвоены основы работы с микроконтроллером можно переходить к более серьёзным проектам. Предлагаю научится управлять шаговым двигателем, той штукой, которая стоит во всех принтерах, копирах, дисководах, и многих других разнообразнейших устройствах. Шаговые двигатели делятся на два типа:
— униполярные шаговые двигатели,
— биполярные шаговые двигатели.

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

Рис. 1

У униполярного шагового двигателя есть 4-ре обмотки соединенные по схеме показанной на рис. 1
Принцип работы униполярного шагового двигателя следующий: поочередно на каждую из 4-х обмоток подается напряжение положительной полярности, в это время общий вывод соединен с отрицательным проводом питания. Получается за каждую коммутацию(подачу напряжения на одну из 4-х обмоток) ротор шагового двигателя смещается на один шаг, ширина этого шага зависит от конструкции самого шагового двигателя, для униполярного шагового двигателя показанного на рис. 2 и рис. 3 шаг составляет примерно:
22х8=176(шагов)
365/172=2,104 градуса.


рис. 2


рис. 3

Его я успешно выкурочил из древнего привода магнитных дисков размером 5,25 дюйма, кстати привод известной фирмы TEAC ))) Данный шаговый двигатель выполнял функцию перемещения магнитной головки по пазу в дискете, собственно через который и считывалась вся информация с магнитного диска.
Для управления этим шаговым двигателем при помощи микроконтроллера нам понадобится собрать силовой каскад, сам микроконтроллер просто сгорит, если подключить униполярный шаговый двигатель напрямую к его портам. В качестве силового каскада можно успешно применить 4 пары полевых транзистора из уже известной сборки IRF7105(схема показана на рис. 5),

Рис. 5
или четыре мощных биполярных транзистора или если у вас есть лишние деньги, можно воспользоваться драйвером мощной нагрузки, таким как микросхема L293 или L293DNE что практически одно и то же. Я пользовался именно драйвером L293DNE.

Принципиальная схема включения шагового двигателя через драйвер L293DNE:

Алгоритм управления униполярным шаговым двигателем очень простой, необходимо выполнять поочередную коммутацию четырех обмоток двигателя. То есть выдавать на четыре бита порта микроконтроллера последовательность типа:
1000
0100
0010
0001

Соответственно крутим поочередно обмотки A, B, C, D:
1000 — обмотка A
0100 — обмотка B
0010 — обмотка C
0001 — обмотка D

Данный вид коммутации называется «полношаговым режимом», то есть за каждую коммутацию происходит смещение ротора шагового двигателя на один целый шаг. Так же существует «полушаговый режим», коммутация обмоток при полушаговом режиме следующая:
1000 — 1-е пол шага обмотки А
1100 — 2-е пол шага обмотки А
0100 — 1-е пол шага обмотки B
0110 — 2-е пол шага обмотки B
0010 — .
0011 — .
0001 — .
1001 — 2-е пол шага обмотки D

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

Программа подходит для любого микроконтроллера AVR Attiny2313, Atmega8, Atmega16.
Итак, вот и сама программа (программа для полношагового режима):

Таким образом скорость вращения шагового двигателя будет замедлятся или ускорятся в зависимости от того, будут вы увеличивать (m=m+1;) или уменьшать (m=m-1;) время задержки между командами.

Хочу сказать что униполярные шаговые двигатели не очень мощные, то есть использовать их для перемещения предмета весом больше 40-80 грамм нет смысла, он просто не потянет. Тем более в полушаговом режиме. Для таких целей лучше всего применять шаговые двигатели из принтеров, те которые перемещают каретку с печатной головкой принтера.
Для экономичного управления униполярным шаговым двигателем необходимо отключать напряжение на обмотках во время простоя, то есть не давать обмотке шагового двигателя все время находится под напряжением, так как это приводит к нагреву самого шагового двигателя и соответственно к большой потере энергии (хотя конечно если преследуете цель обогрева помещения при помощи ШД тогда да 🙂 ). Максимальная скорость вращения ротора униполярного шагового двигателя не столь велика, её можно определить при помощи небольшого кусочка, который я разместил в самом низу программы. То есть для устройств требующих больших скоростей вращения униполярные шаговые двигатели не годятся.

Если не ошибаюсь IRF это не

Если не ошибаюсь IRF это не логического уровня, берите IRL и будев вам счастье.

Простой тестер униполярных шаговых двигателей на attiny2313 и uln2004

Описан еще один способ «полушагового» управления 2-тактным униполярным шаговым двигателем на Бейсике в BASCOM-AVR микроконтроллером ATtiny2313.

Как правило, у каждого радиолюбителя есть выкрученные из старой радиоаппаратуры 2-тактные униполярные ШД с 6-ю или 5-ю проводами. В современных устройствах они практически не используются, но из них можно много чего сделать. Данный метод не претендует на истину и носит лишь информативный характер. Предполагается, что если вы зашли на эту страничку, значит, Вы знаете, что такое шаговый двигатель. В данной статье не рассматривается применение специализированных микросхем. Цель данной статьи — наработка материала для создания более сложного устройства в будущем на основе одного микроконтроллера.

Итак, рассмотрим схему управления ШД микроконтроллером на примере устройства для проверки шаговых двигателей. Основа устройства МК ATtiny2313, выбран лишь потому, что у него есть необходимое количество ног для развития устройства в будущем. ШД подключен к микроконтроллеру через ULN2003. Это не лучшее решение для постоянной эксплуатации мощного ШД, но для проверки и оценки возможностей вполне достаточно. Как правило ШД выкрученные из старых принтеров и «флоппиков» не выделяются особой мощностью и годятся в основном лишь только «прищепки поворачивать», поэтому максимального тока ULN-ки 500мА вполне хватает. Кнопки управляют направлением вращения двигателя, при нажатии и удержании одной двигатель крутится в одну сторону, при нажатии другой — в другую. Светодиод подтверждает нажатие кнопок.

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

Потом устанавливаем все выводы порта B как «выход». Выводы 6 и 7 микроконтроллера устанавливаем как «вход», для подключения кнопок. Светодиод подключен к выводу 9 поэтому PORTD.5 «выход» и присваиваем ему имя Led. Для компенсации дребезга контактов устанавливаем продолжительность опроса кнопок оператором Debounce равной 50. Объявляем переменную S и делаем ее равной 1. В зависимости от значения этой переменной программа будет включать и выключать соответствующие выводы порта B.

Здесь запущен основной цикл программы. Т.к. ни одна из кнопок пока еще не нажата, то гасим светодиод и выключаем все выводы порта B, что бы на обмотках двигателя не было напряжения во время ожидания нажатия кнопок. Оператор Debounce бесконечно следит за нажатием кнопок и срабатывает сразу, когда на выводе 6 или 7 появляется низкий уровень, отсылая выполнение программы в соответствующую подпрограмму.

Теперь главное. Нажата кнопка «ВЛЕВО». Включаем светодиод и увеличиваем переменную S на 1. Так как мы управляем двигателем «полушагом», то для упрощения программы выбрано всего 8 вариантов состояния выходов порта B. Поэтому следим за значением переменной S и если оно больше 8, то снова делаем его равным 1. Теперь выбираем одно из состояний выводов порта B соответственно значению переменной S. Ждем несколько микросекунд и проверяем, нажата ли еще кнопка. Если кнопка нажата, то возвращаемся в начало подпрограммы, увеличиваем и проверяем переменную S, переключаем выводы в следующее состояние. Так до тех пор, пока нажата кнопка. Когда отпускаем кнопку, нас после проверки последнего условия автоматом возвращает в основной цикл программы, где программа снова ждет нажатия кнопки.

При нажатии кнопки «ВПРАВО» все происходит точно также, только теперь переменную S уменьшаем и следим, что бы она не становилась равной 0.

Отдельно нужно сказать об операторе задержки Waitms. Этот оператор регулирует скорость вращения вала двигателя, чем он его значение меньше, тем быстрее крутится вал. Дело в том, что для управления реальным ШД должен применяться оператор Waitus со значением от 1000 до 5000, но Proteus 7.10 отказывается симулировать схему на такой скорости. Поэтому для симуляции ставим в программу Waitms 50 и двигатель в Proteus-е весело крутится. А для реального ШД ставим Waitus 1000 иначе он будет просто дергаться при нажатии кнопки. Также, возможно, придется подобрать это значение под конкретный двигатель. Бывает так, что один мотор прекрасно и бесшумно крутится с значением Waitus 1000, а другой мычит на месте. Изменишь значение на 2000 и все, поехал.

Если после сборки и подключения двигатель не крутится, мычит или дергается в разные стороны проверяем сначала правильность подключения его обмоток. Можно просто методом «научного тыка» перебрать все возможные варианты. Так же внимательно программируем «фьюзы». Если мотор медленно, но верно «тикает» или пытается двинуться в нужном направлении можно попробовать изменить значение оператора Waitus.