Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Выбор контроллера





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

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

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

 

Реализация контроллера шагового двигателя на основе микроконтроллера семейства AVR.

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

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

Основой устройства является микроконтроллер U1 типа АТ90S2313 фирмы Аtmel. Сигналы управления обмотками двигателя формируются на портах РВ4-РВ7 программно. Для коммутации обмоток используются транзисторы с изолированным затвором и каналом n-типа КП739А, всего 4 транзистора (VT1-VT4). Эти транзисторы имеют корпус КТ-28 и могут коммутировать ток до 10А, сопротивление канала составляет около 0.4 Ома. Для того, чтобы транзисторы оставались закрытыми во время действия сигнала «сброс» микроконтроллера (порты в это время находятся в высокоимпедансном состоянии), между затворами и истоками включены резисторы R11-R14. Для ограничения тока перезарядки емкости затворов установлены резисторы R6 -R9. Данный контроллер не претендует на высокие скоростные характеристики, поэтому вполне устраивает медленный спад тока фаз, который обеспечивается шунтированием обмоток двигателя диодами VD2 -VD5. Для подключения шагового двигателя имеется 8-контактный разъем ХРЗ, который позволяет подключить двигатель, имеющий два отдельных вывода от каждой обмотки. Для двигателей с внутренним соединением обмоток один или два общих контакта разъема останутся свободными.

Стабилизация тока осуществляется с помощью ШИМ, которая тоже реализована программно. Для этого используются два датчика тока UZ1 и UZ2. Сигналы, снятые с датчиков тока, через ФНЧ R17С8 и R18С9 поступают на входы компараторов D3 и D4. ФНЧ предотвращают ложные срабатывания компараторов вследствие действия помех. На второй вход каждого компаратора должно быть подано опорное напряжение, которое и определяет пиковый ток в обмотках двигателя. Это напряжение формируется микроконтроллером с помощью встроенного таймера, работающего в режиме 8-битной ШИМ. Для фильтрации сигнала ШИМ используется двухзвенный ФНЧ R10С10R19С11. Одновременно резисторы R10, R19 и R20 образуют делитель, который задает масштаб регулировки токов фаз. В данном случае максимальный пиковый ток, соответствующий коду 255,выбран 5.11 А, что соответствует напряжению 0.511 В на датчиках тока. Учитывая тот факт, что постоянная составляющая на выходе ШИМ меняется от 0 до 5В, необходимый коэффициент деления равен примерно 9.7. Выходы компараторов подключены к входам прерываний микроконтроллера INТО в INТI.

Для управления работой двигателя имеются два логических входа: FWD (вперед) и REW (назад), подключенных к разъему ХР1. При подаче НИЗКОГО логического уровня на один из этих входов, двигатель начинает вращаться на заданной минимальной скорости, постепенно разгоняется с заданным постоянным ускорением. Разгон завершается, когда двигатель достигает заданной рабочей скорости. Если подается команда изменения направления вращения, двигатель с тем же ускорением тормозится, затем реверсируется и снова разгоняется.

Кроме командных входов, имеются два входа для концевых выключателей, подключенных к разъему ХР2. Концевой выключатель считается сработавшим, если на соответствующем входе присутствует НИЗКИЙ логический уровень. При этом вращение в данном направлении запрещено. При срабатывании концевого выключателя во время вращения двигателя он переходит к торможению с заданным ускорением, а затем останавливается.

Командные входы и входы концевых выключателей защищены от перенапряжений цепочками R1VD6, R2VD7, R3VD8 и R4VD9, состоящими из резистора и стабилитрона.

Питание микроконтроллера формируется с помощью микросхемы стабилизатора 78LR05, которая одновременно выполняет функции монитора питания. При понижении напряжения питания ниже установленного порога эта микросхема формирует для микроконтроллера сигнал «сброс». Питание на стабилизатор подается через диод VD1, который вместе с конденсатором С6 уменьшает пульсации, вызванные коммутациями относительно мощной нагрузки, которой является шаговый двигатель. Питание на плату подается через 4-контактный разъем ХР4, контакты которого задублированы.

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

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

Блок-схема обработчика приведена на рисунке 3.1.

Несомненно, было бы удобнее использовать таймер 1, так как он 16-разрядный и способен вызывать периодические прерывания по совпадению с автоматическим обнулением. Однако он занят формированием с помощью ШИМ опорного напряжения для компараторов. Поэтому приходится перезагружать таймер 0 в прерывании, что требует некоторой корректировки загружаемой величины в вызывает некоторый джиттер, который, однако, на практике не мешает. В качестве основной временной базы выбран интервал 25мкс, который и формируется таймером. С такой дискретностью могут формироваться временные последовательности фаз, такой же период имеет и ШИМ стабилизации тока в фазах двигателя.

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

 


 

Рисунок 3.1 Блок-схема обработчика прерывания таймера 0


Последовательность чередования фаз задана таблично. В памяти программ микроконтроллера имеются три разных таблицы: для полношагового режима без перекрытия фаз, полношагового с перекрытием и для полушагового режима. Все таблицы имеют одинаковую длину 8 байт. Нужная таблица в начале работы загружается в ОЗУ. Что позволяет наиболее просто переходить между разными режимами работы двигателя. Выборка значений из таблицы происходит с помощью указателя РHASE, поэтому переключение направления вращения двигателя тоже осуществляется очень просто: для вращения вперед требуется инкрементировать указатель, а для вращения назад декрементировать.

Самая «главная» переменная в программе - это 24-битная знаковая переменная VС которая содержит значение текущей скорости. Знак этой переменной определяет направление вращения, а значение - частоту следования шагов. нулевое значение этой переменной говорит о том, что двигатель остановлен.

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

Таким образом, в случае переполнения программного таймера STCNT происходит анализ значения переменной VС, в случае положительного значения указатель PHASE инкрементируется, а в случае отрицательного декрементируется. Затем из таблицы выбирается очередная комбинация фаз, которая выводится в порт. В случае нулевого значения VС указатель РНАSЕ не изменяется, и в порт выводятся все нулевые значения.

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

Для осуществления ШИМ - стабилизации тока фазы должны периодически включаться, а затем, при достижении током заданного уровня, выключаться. Периодическое включение производится в прерывании таймера 0, для чего даже в случае отсутствия переполнения программного таймера STCNT в порт выводится текущая комбинация фаз. Происходит это с периодом 25мкс (что соответствует частоте ШИМ 40кГц). Выключением фаз управляют компараторы, выходы которых подключены к входам прерывания INT0 INT1.

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

 

 

Рисунок 3.2 Блок-схема обработчика прерываний INTO и INT1

 

Процессы, происходящие при ШИМ-стабилизации тока, показаны на (рис. 3.3) Особо следует отметить, что ток в датчике тока имеет прерывистый характер даже в том случае, если ток обмотки не прерывается. Это связано тем, что во время спада тока его путь не проходит через датчик тока (а проходит через диод).

Рисунок 3.3 Процесс ШИМ - стабилизации тока

 

Нужно сказать, что аналоговая часть системы ШИМ - стабилизации тока фаз двигателя является довольно «капризной». Дело в том, что сигнал. снимаемый с датчика тока, содержит большое количество помех. Помехи возникают в основном в моменты коммутации обмоток двигателя, причем как «своей», так в «чужой» фазы. Для правильной работы схемы требуется корректная разводка печатной платы, особенно это касается земляных проводников. Возможно, придется подобрать номиналы ФНЧ на входе компаратора или даже ввести в компаратор небольшой гистерезис.

В данной программе периодичность вычисления новых значений скорости и периода выбрана равной 15.625мс. Такое значение выбрано не случайно. Этот интервал составляет 1/64с, а главное, он содержит целое число периодов переполнения таймера 0 (25мкс). Удобно, если значения скорости и ускорения задаются в естественных единицах, т.е. в шагах в секунду и в шагах, деленных на секунду в квадрате. Для того чтобы иметь возможность в целочисленной арифметике вычислять мгновенную скорость 64 раза в секунду, нужно перейти к внутреннему представлению скорости, увеличенному в 64 раза. Умножение и деление на 64 сводится к обычным сдвигам и поэтому требует очень мало времени. Заданную периодичность вычислений обеспечивает еще один программный таймер URCNT, который декрементируется в прерывании таймера 0 (раз в 25мкс). Этот таймер всегда загружается постоянной величиной, что обеспечивает неизменный период его переполнений. равный 15.625мс. При переполнении этого таймера устанавливается битовый флаг UPD, который сигнализирует основной программе, что «пора-бы обновить значения скорости и периода».

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

Обновление значений скорости и периода следования шагов основная программа делает периодически, периодичность задается флагом UPD. Обновление программа делает на основе сравнения значений двух переменных: мгновенной скорости VС и требуемой скорости VR.

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

 

 

Рисунок 3.4 Блок - схема основного цикла программы

 

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

Если при очередной проверке обнаруживается, что скорости VR и VC не равны, то к значению VC прибавляется (или вычитается) значение ускорения А. Если в результате этой операции происходит превышение требуемой скорости, то полученное значение корректируется путем замены на точное значение требуемой скорости.

Затем происходит вычисление периода Т (рис. 3.5).

 

 

 

Рисунок 3.5 Блок-схема подпрограммы вычисления периода

 

В начале вычисляется модуль текущей скорости. Затем происходит ограничение минимальной скорости. Это ограничение необходимо по двум причинам. Во-первых. Бесконечно малой скорости соответствует бесконечно большой период, что вызовет ошибку в вычислениях. Во-вторых, шаговые двигатели имеют довольно протяженную по скорости зону старта, поэтому нет необходимости стартовать на очень маленькой скорости, тем более что вращение на малых скоростях вызывает повышенный шум и вибрацию. Значение минимальной скорости VMIN должно выбираться исходя из конкретной задачи и типа двигателя. После ограничения минимальной скорости производится вычисление периода по формуле Т = 2560000|VC|. На первый взгляд формула не очевидна, но если учесть, что период необходимо получить в 25мкс-интервалах, а внутреннее представление VC -это умноженное на 64 ее истинное значение, то все становится на свои места.

При вычислении Т требуется операция беззнакового деления формата 24/24, которое AVR на тактовой частоте 10МГц делает примерно за 70мкс. Учитывая, что вычисления периода происходят не чаще, чем один раз в 15.625мс, загрузка процессора получается очень низкой. Основную загрузку производит прерывание таймера 0, да и оно в основном выполняется по короткой ветке (без переполнения ST-CNT) длительностью примерно 3мкс, что соответствует 12%-й загрузке процессора. Это означает, что имеются значительные резервы вычислительных ресурсов.


Date: 2015-07-23; view: 558; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию