Содержание

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

&nbsp

&nbsp

&nbsp

 

Урок 18

Часть 1

 

 

 

Сегодня мы попробуем к микроконтроллеру 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 режиме, так как он будет самый плавный и самый интересный.

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

 

Предыдущий урок Программирование МК AVR Следующая часть

 

Техническая документация на шаговый двигатель

 

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

Программатор (продавец надёжный) USBASP USBISP 2.0

Шаговый двигатель 28YBJ-48 с драйвером ULN2003

 

 

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

 

Post Views:
1 130

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

Отличительные особенности: Контроллер быстродействующего шагового двигателя Использование системы прерываний Компактный код программы размер процедуры прерываний всего 10 байт Очень высокое быстродействие Низкие требования к вычислительным возможностям Поддержка всех AVR-микроконтроллеров Введение В данном документе описывается пример реализации контроллера шагового двигателя с компактным размером кода и высокоскоростным формированием управляющих воздействий с помощью прерываний по таймеру и табличного метода преобразования. Типичная сфера применения шаговых двигателей: подача пленки и изменение масштаба изображения в камерах, факсимильные аппараты, принтерах, копировальные машины, лотки подачи и сортировщики бумаги, а также дисководы. Высокая производительность AVR-микроконтроллеров позволяет разработчикам реализовать устройство управления быстродействующим шаговым двигателем при малых требованиях к вычислительным возможностям контроллера. Принцип действия Шаговый двигатель постоянного напряжения преобразует импульсы тока во вращение.







Поиск данных по Вашему запросу:

Схемы, справочники, даташиты:

Прайс-листы, цены:

Обсуждения, статьи, мануалы:

Дождитесь окончания поиска во всех базах.

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

Содержание:

  • Контроллер шагового двигателя на ATtiny13
  • Драйвер Шагового На Avr. Шаговый двигатель avr
  • Подключение униполярного шагового двигателя к микроконтроллерам AVR
  • Шаговый двигатель
  • Управление шаговым двигателем на Attiny2313
  • Управление шаговым двигателем с использованием микроконтроллера ATmega16 и LabVIEW
  • Управление шаговым двигателем с помощью AVR микроконтроллера ATmega8
  • AVR и контроллер шагового двигателя

ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: AVR Ассемблер. Урок 14. Управление шаговым двигателем. AVR Assembler. Lesson 14. Stepper motor.

Контроллер шагового двигателя на ATtiny13






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

Рядом с ним электромагнит, который жестко закреплен и пока никуда не подключен, поэтому положение ПМ произвольное. В следующий момент, подаем на начало обмотки минус, на конец плюс. Если поменять полярность электромагнита — полюса поменяются, ПМ развернется. Таким образом, в зависимости от полярности электромагнита у вращающегося ПМ будет два устойчивых состояния, то есть шаг будет равен градусов. Если добавить еще один электромагнит, то будет уже четыре устойчивых состояния, то есть шаг будет 90 градусов.

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

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

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

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

Если просто искать шаговик то можно гордо купить nema23 с током обмотки в 2 и более ампер. С таким током этот драйвер через минуту скажет пшшшшшш и пойдёт дымок. Для чего нужен мотор? Именно по той причине что вы описали, контролировать ток, напряжение и прочие параметры вы должны самостоятельно. Собственно, забота выбора силовой части тоже лежит на плечах юзера. Это лишь простой пример. Конкретный выбор, можно обсудить на форуме.

Так я ж вопрос Янису задавал Он хочет купить подобный. А он уверен что характеристики текущего мотора из статьи ему подойдут. Да понятно это мне Только вот я не знаю где достать такой двигател.. В ebay его нет как не странно. Вот и ищу подобный Пока еще не нашел. Очень познавательная статья. Как раз думал как бы автоматизировать кормушку для домашней живности. Есть конечно специальные дрова, но уж с очень большим обвесом и дискретных элементов, да к тому же очень дорогие.

Плюс столкнулся с такой проблемой, что при чрезмерной нагрузке на двигатель он автоматом стопорится. Не могу понять почему не работает. Просто добавил кнопку на порт В для включения шагового двигателя. Помогите пожалуйста разобраться, что я сделал не так? Доброго времени суток! Хочу сказать, большое спасибо за ваши уроки, многое новое для себя открываю в работе с МК. Есть желание собрать устройство работы шагового двигателя в зависимости от температуры.

Температуру измерять датчиком DS18b20 как в уроке 12 и, к примеру, с ростом температуры на 1 градус поворачивать двигатель на один шаг. Подскажите, пожалуйста, как объединить два урока 12 и 25?! Выводить при этом температуру на дисплей нет необходимости. Спасибо за познавательный урок.

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

А тут через драйвер как сориентироваться в какой последовательности надо посылать импульсы для вращения по часовой и против часовой? Как иначе менять полярность? Ладно а как на программном уровне сменить полюса? Где и когда их сменять чтобы все было последовательно а не 3 вперет 1 назат…? Например тут как изменить чтобы крутился в обратную сторону?

Ваш e-mail не будет опубликован. Поиск по сайту. Урок 1. Первый проект Урок 2. Управление кнопками Урок 3. Подключение LCD Урок 4. Использование ШИМ Урок 5. Таймеры Урок 6. Статическая индикация Урок 6. Динамическая индикация Урок 7. Генерация звука Урок 7. Генерация звука. Продолжение Урок 8. Передача данных через UART. Передача данных через SPI Урок Изучение АЦП.

Простой вольтметр Урок Получение синуса при помощи ШИМ Урок Измерение температуры Урок Внешние прерывания. Урок Использование отладчика Урок Управление инкрементальным энкодером Урок Управление громкостью, при помощи энкодера Урок Управление RGB светодиодом Урок Использование ИК Урок Знакомство с графическим дисплеем Урок Опрос матричной клавиатуры Урок Сторожевой таймер Урок Управление шаговым двигателем. Янис on Алексей on Vitek on Виктор on Когда тиристором научимся управлять??

Денис on Алекс on Ян on Это я Протеусом пользоваться не умею. Михаил on

Драйвер Шагового На Avr. Шаговый двигатель avr

Шаговые двигатели достаточны распространены в устройствах, в которых необходимо добиться точного перемещения механизмов. Существует много типов шаговых двигателей, но самыми дружелюбными в плане управления являются 2-х фазные униполярные двигатели. Этот тип двигателей имеет две независимые обмотки с выводами от середины. Их можно встретить преимущественно в старой технике: принтерах, копирах, дисководах 5-и дюймовых и еще много где. Изменяя величину задержки между шагами, можно в больших пределах регулировать скорость вращения вала.

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

Подключение униполярного шагового двигателя к микроконтроллерам AVR

Управление двигателем на atmega8 Здравствуйте, есть у меня проблема, которую не удалось решить самостоятельно. Итак, имеем схему, Управление шаговым двигателем на PIC16F Подскажите возможно применить данный алгоритм для управления биполярным шаговым двигателем Не очень разбираюсь в микроконтроллерах Управление светодиодом Пожалуйста помогите доделать программу. Управление светодиодами на ATtiny Ребята, помогите. Нужно написать программу под ATtiny , где при нажатии кнопки 1 горит Led Симуляция и управление двигателем на МК Atmega Добрый день!!! Блоги программистов и сисадминов. Vkontakte ,.

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

Здесь приведен перевод апноута [1], описывающего реализацию компактного, высокоскоростного, управляемого прерываниями контроллера шагового мотора. Шаговые двигатели ШД обычно используются для приложений наподобие управления фокусом камеры, привода ленты, перемещения печатающей головки, управления движением механики в факсах, принтерах, копировальных аппаратах, 3D-принтерах, станках с ЧПУ, жестких дисках, приводах DVD-ROM и т. Высокое быстродействие микроконтроллеров AVR позволяет разработчику реализовать высокоскоростные приложения для управления ШД, причем вычислительное ядро процессора остается слабо нагруженным. Особенности описываемого контроллера:. Шаговый мотор шаговый двигатель, ШД постоянного тока преобразует импульсы тока во вращение своего ротора.

Правила форума. Правила Расширенный поиск.

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

Re: пассики для проигрывателей винила Re: Динамическая индикация на LCD дисплее Re: Пассик на пленочный магнитофон Re: Продам набор SMD конденсаторов в корпусе Re: ШИМ-регулятор на Attiny13 Подробную теоретическую информацию о шаговых двигателях можно найти на просторах интернета, а здесь займемся практическим решением.

Управление шаговым двигателем с использованием микроконтроллера ATmega16 и LabVIEW

Подключение микросхемы ШИМ-контроллера шагового двигателя от принтера при помощи микроконтроллера ATmega Представлена принципиальная схема драйвера биполярных шаговых двигателей с двумя L усиленный 48В, 4А. Tiny External RAM size: 0. Автономный контроллер шагового двигателя. Электрическая часть станка автор: Сергей Шевченко. Контроллер шагового двигателя Форум Управление шаговым двигателем. Как было написано самодельный драйвер двигателей на транзисторах можно использовать не только для управления коллекторными моторчиками постоянного тока но и для управления шаговыми двигателями.

Подключение биполярного шагового двигателя к микроконтроллерам AVR. Логика работы микроконтроллера для управления униполярным и.

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

Представляю вашему вниманию доработанную программу управления униполярным шаговым двигателем к контроллеру описанному в прошлой статье. Для связи с COM-портом компьютера использовал свою отладочную плату с мегой32, так как на ней установлен конвертер уровней max Порядок вывода комментариев: По умолчанию Сначала новые Сначала старые. Ну почему же — даже на бейсике есть микрошаг, но рассыпухи много и геморроя тоже.

AVR и контроллер шагового двигателя

ВИДЕО ПО ТЕМЕ: Принцип работы шагового двигателя

Автор: AntonChip. Дата публикации: 02 декабря Схема была придумана для проверки униполярных шаговых двигателей. Драйвер выполнен на микроконтроллере ATtiny13 , так как в нем есть АЦП была реализована возможность регулировки частоты вращения двигателя.

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

Сейчас этот форум просматривают: Google [Bot] и гости: 1. Предыдущее посещение: менее минуты назад Текущее время: 10 окт , Добавлено: 11 июл , В старых завалах в шкафу нашел сделанный когда-то драйвер шагового двигателя на Тини Но сырков не осталось Поэтому отряхнув от пыли, написал новый драйвер для нее на Си. Работает прекрасно, из минусов только — транзисторы надо было ставить помощнее, у меня там воткнуты обычные С

Re: пассики для проигрывателей винила Re: Динамическая индикация на LCD дисплее Re: Пассик на пленочный магнитофон






Контроллер шагового двигателя с ATtiny13

Контроллер шагового двигателя с ATtiny13
Дорожка:
Главная =>
Обзор AVR =>
Приложения => Контроллер шагового двигателя
( Diese Seite на немецком языке:
)

Это приложение AVR демонстрирует управление шаговым двигателем с помощью ATMEL ATtiny13, с
следующими свойствами:

  • Предназначен для тросового привода дистанционных шаговых двигателей с редуктором.
  • Входное напряжение от 0 до 5 В с разрешением 10 бит (1024 шага напряжения, 4,88 мВ
    на шаг напряжения) управляет положением шагового двигателя.
  • Количество шагов двигателя можно отрегулировать до 65 535 шагов, поэтому любой редуктор и количество
    число оборотов двигателя может быть выбрано программным обеспечением.
  • Простой драйвер для управления двигателем.
  • Очень быстрое вращение двигателя может быть достигнуто за счет оптимизации частоты привода.
  • Снижение потребности в токе за счет отключения катушек двигателя после предварительно выбранного
    время активации после последнего шага.
  • 1. Оборудование
    • 1.1 Микроконтроллер
    • 1.2 ISP-интерфейс
    • 1.3 Драйвер тока катушки ULN2003A
    • 1.4 Поставка
  • 2. Программное обеспечение
    • 2.1 Функционирование
    • 2.2 Регулировка перед сборкой
    • 2.3 Исходный код с комментариями

Аппаратное обеспечение состоит из процессора AVR ATtiny13, шестиконтактного стандарта.
соединение для программирования для внутрисистемного программирования (ISP), 7-битный драйвер
ULN2003, питание процессора и фильтрация аналогов
входной сигнал. Схематическая диаграмма (нажмите на нее, чтобы перейти на страницу PDF с более высоким
разрешение):

1.1 Микроконтроллер

Процессор ATtiny13 обеспечивает следующие функции.
Рабочее напряжение 5 В подается на контакты 8 (+5 В)
и 4 (0 В) и заблокирован керамическим конденсатором 100 нФ.
Контакт 1 (= вход RESET) подключен резистором 10 кОм к
рабочее напряжение.
Вход PB4 (Контакт 3) измеряет аналоговое напряжение, используя внутренний
АЦП, по сравнению с рабочим напряжением. От его преобразования
результаты, программное обеспечение вычисляет целевое значение шагов шагового двигателя.
Контакты выходного порта с PB0 по PB3 (контакты 5, 6, 7 и 2) управляют драйвером для
катушки шагового двигателя.

1.2 ISP-интерфейс

Интерфейс ISP служит интерфейсом программирования для программирования AVR в
система. Распиновка соответствует стандарту ATMEL.
Интерфейс интернет-провайдера использует биты порта PB2 (SCK, контакт 7), PB1 (MISO,
контакт 6), PB0 (MOSI, контакт 5) и RESET на контакте 1.
рабочее напряжение на ВТГ, если оно подключено, обеспечивает ток питания
программист. Оставьте VTG открытым, если программатор обеспечивает собственное питание.
GND — ссылка для отрицательного рабочего напряжения.

1.3 Драйвер тока катушки ULN2003A

Ток возбуждения катушек шагового двигателя регулируется
микросхема драйвера ULN2003A. Выходы с транзисторами с открытым коллектором
допускают напряжения до 50 В и токи до 500 мА.
Они включают и выключают различные катушки двигателя.
Наведенные индуктивные фоновые напряжения при выключенных катушках,
замыкаются накоротко диодами, которые подключены внутри от каждого
коллектор к выводу CD. Используемый здесь двигатель работает от сети 12 В.
напряжение питания и требует ток ок. 150 мА на активный
катушка (потому что одновременно всегда активны две катушки, вместе
300 мА).
Входные контакты I7..I4 драйвера управляются процессором
(активный высокий уровень, логическая 1 включает катушку).

1.4 Поставка

Напряжения питания фильтруются, чтобы избежать сбоев при переключении
катушки. Питание катушек подключено через диод 1N4007 и
сглажен конденсатором 100 мкФ.
Процессор питается от стабилизатора напряжения 78L05. Его ввод
подключается к питанию 12 В через диод 1N4007 и и
конденсатор 100 мкФ. Стабилизатор заблокирован
танталовые конденсаторы 1 мкФ соответственно. от 2,2 мкФ до
избегать колебаний.
Питание и регулирование контроллера/драйвера выходит за пределы
четырехжильный соединительный кабель от источника питания 12 В
(нажмите на картинку, чтобы загрузить документ в формате PDF с более высоким разрешением).

Источник питания 12 В смонтирован на небольшой плате.

ПО для ATtiny13 написано на ассемблере, исходник
код здесь для скачивания.

2.1 Функционирование

Программное обеспечение состоит из следующих основных элементов:

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

Таблица векторов перенаправляет выполнение программы на основную программу, если
сброс запускает процессор. В случае прерывания сервисные процедуры
для таймера/счетчика и АЦП перенаправляют. Имеется в наличии
векторы, которые здесь не используются, представлены инструкциями RETI.

Инициализация начальных значений

Инициирование начальных значений кодируется, начиная с метки «Основное:».
Здесь

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

Инициализация оборудования состоит из:

  • направление четырех портовых битов от PB0 до PB3 установлено для вывода
    и эти биты установлены на первую ступень двигателя,
  • счетчик преобразования AD установлен на 64, суммарное значение преобразования
    результат очищается, драйвер цифрового входа, если канал 2 на PB4
    выключен (вывод PB4 используется исключительно для аналогово-цифрового преобразования),
    мультиплексор AD подключен к каналу ADC2, а преобразователь AD запускается с
    следующие настройки:

    • опорное напряжение — это рабочее напряжение ATtiny13,
    • Делитель тактовой частоты

    • = 128 при внутренней тактовой частоте 1,2 МГц и
      13 тактовых циклов на конверсию, которую требует каждая конверсия
      1,387 мс, суммирование 64 результатов преобразования дает полный
      цикл измерения каждые 88,75 мс или 11,3 цикла измерения в секунду.
    • Прерывание после каждого полного преобразования,
    • нет автоматического перезапуска по завершению преобразования (перезапуск выполняется в
      процедура обслуживания прерывания).
  • таймер/счетчик TC0 установлен в нормальный режим CTC (очистка счетчика при
    значение сравнения достигнуто) со следующими настройками:

    • продолжительность цикла CTC равна длине выходного сигнала для
      один шаг двигателя должен продолжаться, это контролируется константой
      cCmpA, который записывается в регистр сравнения A счетчика,
    • в конце цикла CTC срабатывает прерывание,
      Compare-Match-Interrupt A включен,
    • предварительный делитель часов установлен на 1024 и таймер запущен,
      тактовая частота счетчика, таким образом, составляет 1,2 МГц/1024 = 1,172 кГц/сек,
      со значениями CTC от 1 до 255 дают частоты от 1172 до
      4,6 имп/с для шагов двигателя.
  • процессор находится в спящем режиме бездействия, что означает: между
    прерывания счетчика и выполнения программы АЦП
    остановился.
АЦП измерения входного напряжения

АЦП преобразует входное напряжение на контакте 3 (PB4, ADC2).
в значение между 0..1023 и запускает прерывание завершения преобразования.
Процедура обслуживания прерываний, начинающаяся с метки «AdcInt:», гласит:
результат с портов ADCL и ADCH и суммирует его в регистр
пара rAdcH:rAdcL. Счетчик rAdc уменьшается на единицу. Если rAdc
достигает нуля, значение суммы копируется в пару регистров rAdcRH:rAdcRL,
сумма очищается, счетчик снова устанавливается в исходное значение 64
и флаг bAdc в регистре флагов установлен в единицу. Наконец, следующий
конвертация запущена.
Суммирование 64 результатов преобразования приводит к усреднению по этим
значений, удаляя случайные результаты и колебания входного сигнала,
и замедляет процесс измерения до удобной длительности цикла.
Результирующее значение суммы находится в диапазоне от нуля до 65 535 (0x0000..0xFFFF),
отличная основа для последующего расчета целевого значения.

Преобразование результата измерения в целевое значение

Если после пробуждения процессора и выполнения службы прерывания
если установлен флаг rAdc в регистре флагов, преобразование
вызывается подпрограмма, начинающаяся с метки «AdcRdy:». Эта рутина

  • снова очищает бит флага,
  • копирует значение суммы в пару регистров rAdcCH:rAdcL,
  • умножает значение суммы на константу cSmSteps (значение
    количество шагов вперед для полномасштабной работы двигателя)
    чтобы получить 32-битный результат,
  • округляет младшие 16 бит этого числа,
  • делит 32-битный результат на 65 536 (игнорируя младшие 16 бит).
    бит), что приводит к целевому значению в виде 16-битного числа и
  • записывает этот результат в пару регистров целевого значения rSmSH:rSmSL.
    (во время которого прерывания отключаются во избежание ошибок в
    регулировка двигателя, если между
    копирование LSB и MSB).
Ступенчатое управление и выход на двигатель

Ступенчатое управление и вывод на шаговый двигатель осуществляется в
прервать процедуру обслуживания счетчика, начиная с
метка «Tc0IntCA:».
Сначала сравниваются регистры фактического и заданного значения.
Если они равны, выполняется переход на метку «Tc0IntCA0:».
Там счетчик задержки в паре регистров X уменьшается на
один. Если счетчик задержки достигает нуля, катушки обесточиваются.
записывая нули в биты управляющего порта, счетчик задержки
перезапускается, а сервисная программа остается.
Если фактическое и целевое значение не равны, фактическое
значение увеличивается или уменьшается. Это новое значение переводится
следующим образом к новому значению для драйвера шагового двигателя:

  • два младших бита (нового) фактического значения изолированы, и
  • добавляются к начальному адресу таблицы «SmTab:» в Z,
    который указывает на соответствующую таблицу во флэш-памяти,
  • с инструкцией LPM считывается байт по этому адресу
    до R0 и
  • это записывается в выходной порт, который переключает
    правильное включение/выключение катушек двигателя.

Таблица «SmTab:» с двумя словами 0x0605 и 0x090A определяет
последовательность шагов шагового двигателя выглядит следующим образом:

  • Шаг 1: 0x05, двоичный 0 1 0 1,
  • Шаг 2: 0x06, двоичный 0 1 1 0,
  • Шаг 3: 0x0A, двоичный 1 0 1 0,
  • Шаг 4: 0x09, двоичный 1 0 0 1.

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

2.2 Регулировки перед сборкой

В исходном коде на ассемблере следующие корректировки должны/могут
сделать до сборки кода:

  • Три переключателя отладки debug_calc, debug_const и debug_out
    должен быть установлен на ноль!
  • Константа cSmSteps должна быть настроена на количество
    шаги, которые двигатель должен выполнять во всем диапазоне
    (максимум: 65 535).
  • Константа cSmFreq должна быть настроена на частоту,
    двигатель надежно движется (минимум 5 имп/с — для
    чрезвычайно большие двигатели, максимальная скорость 1171 сб/с — слишком быстро
    для большинства типов двигателей).
  • константа cSmDelay задает количество циклов, за которое
    катушки остаются активированными после смены привода
    рисунок мотора. Если cSmDelay равен cSmFreq,
    задержка ровно одна секунда.

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

Coil color Portbit Step 1 Step 2 Step3 Step 4
Q1 red PB3 0 0 1 1
Q2 green PB1 0 1 1 0
Q3 brown PB2 1 1 0 0
Q4 white PB0 1 0 0 1

The resulting table code is as follows:

Step Coil Portbit Byte Word
Q4 Q3 Q2 Q1 PB3 PB2 PB1 PB0
1 1 1 0 0 0 1 0 1 0x05 0x0605
2 0 1 1 0 0 1 1 0 0x06
3 0 0 1 1 1 0 1 0 0x0A 0x090A
4 1 0 0 1 1 0 0 1 0x09

2.

3 Commented source code

Исходный код доступен в текстовом формате .asm здесь, в
Формат .html здесь.


© 2007 г. http://www.avr-asm-tutorial.net

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

Главная Прикладная механика и материалы Прикладная механика и материалы Vol. 816 Управление шаговым двигателем с помощью микроконтроллера ATMEL AVR

Предварительный просмотр статьи

Аннотация:

В статье рассмотрено управление шаговым двигателем с помощью микроконтроллера ATmega8-16PU. В статье упоминаются два способа управления, а именно полношаговый режим и полушаговый режим управления. Сначала вводится биполярный шаговый двигатель. Далее создается измерительный стенд, состоящий из биполярного шагового двигателя с углом шага 1,8° и энкодера с 360 CPR. В ходе эксперимента измерялись угловые скорости с помощью измерительной платы ввода/вывода MF624, взаимодействующей с Matlab/Simulink. Результаты показывают различия между двумя используемыми шаговыми режимами двигателя.

Доступ через ваше учреждение

Вам также могут быть интересны эти электронные книги

Предварительный просмотр

* — Автор, ответственный за переписку

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

[1]
М. Келемен, И. Виргала, К. Микова, П. Франковски, Экспериментальная идентификация свойств линейного привода, Acta Mechanica Slovaca (2015), Vol. 19, № 1, с. 42 – 47, ISSN 1335-2393.

[2]
М. Дабабне, В. Эмар, И. Т. Трад, Управление прерывателем биполярного шагового двигателя, Международный инженерный журнал, Vol. 7, № 2, с.61 – 73, (2013).

[3]
Ф. Духонь, М. Декан, А. Бабинец, Л. Хованец, А. Витко, Обнаружение сварных швов при автоматизированной сварке, Прикладная механика и материалы, Vol. 611 (2014), стр. 519– 528.

DOI: 10.4028/www.scientific.net/amm.611.519

[4]
А.