Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3sin

.pdf
Скачиваний:
23
Добавлен:
21.03.2016
Размер:
858 Кб
Скачать
☆

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

3.5.5 Синхронизация и изменение направления

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

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

Синхронизация и вращение управляются датчиками холла. Информация о направлении вращения получена, как описано в разделе 3.5.4.

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

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

3.5.6 Коммутация с опережением

Программируемый угол опережения коммутации может использоваться, чтобы настраивать фазу синусоиды, чтобы заставить её опережать угол ротора. Это необходимо что бы заставить двигатель работать на максимальной скорости и/или эффективности. Угол опережения коммутации, во время выполнения доступен и может быть установлен, чтобы измениться согласно, например скорости ротора или амплитуде. Угол опережения коммутации получается, если добавлять смещение к индексу таблицы значений, таким образом, сдвигая фазу волны. Угол опережения коммутации может быть настроен в шагах таблицы значений (1.8 °).

3.5.7 Вывод сигнала тахогенератора

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

3.6 Обнаружение сверхтока

Блокировка ротора, внезапное изменение нагрузки или быстрое ускорение могут вызвать чрезмерный ток через драйвер и двигатель. Чтобы избежать повреждений из-за сверхтока, очень важно всегда контролировать ток. Обычно, устанавливается шунт между транзисторами драйвера и землей, и, чтобы вычислить ток, измеряется падение напряжения на этом шунте. Это может быть сделано аналого-цифровым преобразователем (ADC) или аналоговым компаратором.

В этом документе использовался ADC для измерения тока. Использование ADC вводит небольшую задержку, из-за времени преобразования, но есть другие преимущества. Аналоговый компаратор работает все время, и поэтому очень чувствителен к шумам от переключений PWM, если не делать сложную внешнюю фильтрацию. Эту проблему проще преодолеть с помощью ADC. Напряжение измеряется в определенный момент, который может быть вызван, например, прерыванием переполнения в таймере PWM (точка 1 на рис.3-2), тогда измерение будет сделано в середине цикла PWM. Если коэффициент заполнения не слишком мал, этот момент будет далеко от любого переключения PWM. В результате потребуется более простая внешняя фильтрация, чтобы получить надежные значения тока.

3.7 Управление скорости

Эта РпП включает примеры и управления скорости разомкнутого цикла и контроллера PID. Также возможно добавить другие виды регуляторов скорости. Как вычислять фактическую скорость ротора, было описано в разделе 3.5.2.

3.7.1 Задатчик скорости

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

3.7.2 Контроллер скорости

Можно построить программу управления скоростью с закрытым или открытым контуром (с обратной связью (ОС) или без). Управление скоростью без ОС очень просто. Аналоговое значение задатчика скорости, оцифрованное на 8 бит, непосредственно используется, как значение амплитуды на 8 бит для сгенерированных синусоид.

Управление скоростью с ОС также использует значение аналогового задатчика скорости на 8 бит как первичное значение к установке амплитуды. Кроме того, PID (пропорциональная, интегральная производная) контроллер используется, чтобы удостовериться, что скорость точно соответствует желаемой. Измерение ADC используется как точка назначения для контроллера скорости. Так как внутреннее представление скорости – инкремент индекса, взвешенный сигнал должен быть преобразован в то же самое представление. Раздел 3.5.2 описывает отношения между скоростью в RPM и внутренним представлением инкрементом индекса. Блок-схема системы с ОС с подачей вперед показана на рисунке 3-4.

Рисунок 3-4. Контроллер PID с подачей вперед.

Цикл управления скорости - единственная часть программы управления двигателем, которое не управляется прерыванием. Это, потому что вычисления PID производятся слишком долго, чтобы исполнятся в подпрограмме прерывания, без ухудшения управления двигателем. Кроме того, нет необходимости выполнять цикл управления так часто, как коммутации.

4 Выполнение программы

Исходный текст программы, предоставляемой с этой РпП, полностью прокоментирован Doxygen, который объясняет все части кода. Открытие файла 'readme.html' поможет обратиться к полной документации Doxygen в формате html.

Эта глава включает дополнительную информацию, нужную для более полного понятия программы.

4.1 Структура кода

Обратите внимание, что код был написан для высокой эффективности. Из-за этого, почти весь исходный текст содержится в одном файле, чтобы позволить компилятору максимально оптимизировать код. Большинство функций объявлено с директивой " *pragma inline=forced", так как их вызывают из подпрограмм прерывания.

4.2 Использование периферии

Периферийные модули ATmegax8, используемые в этой программе перечислены в Таблице 4-1. Таблица 4-1. Использование аппаратных модулей.

Модуль

Использование

Timer/counter0

PWM фазы U

Timer/counter1

PWM фазы V

Timer/counter2

PWM фазы W

Каналы ADC

Задатчик скорости/измерение тока

Pin change interrupt 0

Прерывание аварийного завершения

Pin change interrupt 1

Прерывание по изменению датчиков холла

Pin change interrupt 2

Прерывание изменения направления

4.3 Действия, выполняемые в прерываниях

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

Таблица 4-2. Действия прерываний.

Прерывание

Функция

 

Ответственность/действие

Timer/counte1 захват

Timer1CaptureISR

 

Обновление значения PWM.

 

 

 

 

Управление коэффициентом заполнения блочной

 

 

 

коммутации.

 

 

 

Измерение скорости.

 

 

 

Обнаружение останова.

 

 

 

 

 

Pin change 0

EmergencyInterruptISR

 

Обработка внешнего сигнала выключения

 

Pin change 1

HallChangeISR

 

Синхронизирует синусоиду с датчиками холла.

 

 

 

 

Блочная коммутация.

 

 

 

Обновление сигнала тахогенератора.

 

 

 

Обнаружение фактического направления.

 

 

 

Проверка синхронизации двигателя и программы.

 

 

 

Обновление сигнала противовращения.

 

 

 

Вычисление инкремента индекса таблица синуса.

 

 

 

Обнаружение останова

Pin change 2

DirectionInputChangeISR

 

Ввод сигнала направления вращения.

 

ADC complete

ADCCompleteISR

 

Управление амплитудой для синусной/блочной

 

 

 

 

коммутации.

 

 

 

Измерение тока.

 

 

 

Выбор канала ADC.

4.4 Генерация синусоиды

Две подпрограммы обработки прерывания используются, чтобы получить на выходе синусоиду. Timer1CaptureISR изменяет регистр сравнения PWM, один раз для каждого цикла PWM. HallChangeISR синхронизирует синусоиду по текущему положению ротора, и вычисляет инкремент индекса таблицы значений. Рисунок 5-2 показывает взаимодействие между этими двумя прерываниями. Состояние, обозначенное как 'Любое состояние', показывает, что не важно в каком состоянии был или будет двигатель.

Рисунок 4-1. Конечный автомат генерации синусоиды.

4.5 Контроль направления и синхронизации

4.5.1 Связные флаги Необходимы два определения, чтобы объяснить контроль синхронизации и направления:

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

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

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

CommutationTicksUpdate:

∙motorStopped=ИСТИНА, если предопределенный число ‘тиков’ прошло с последнего изменения датчика холла.

∙motorSynchronized=ЛОЖЬ, если флаг motorStopped был только что установлен на

ИСТИНУ.

Эту функцию вызывает Timer1CaptureISR.

MotorSynchronizedUpdate:

∙motorSynchronized=ИСТИНА, если выполнены критерии синхронизации.

∙motorSynchronized=ЛОЖЬ, если критерии синхронизации не выполнены.

Эту функцию вызывает HallChangeISR.

HallChangeISR:

∙motorStopped=ЛОЖЬ (двигатель не может быть остановленным, если датчики холла изменяются)

DirectionInputChangeISR:

∙motorSynchronized=ЛОЖЬ

∙motorStopped=ЛОЖЬ

4.5.2Логика синхронизации и направления

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

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

∙Когда микроконтроллер стартует, а двигатель уже вращается, программа не будет ничего генерировать, пока она не засинхронизируется с двигателем, или пока ротор не прекратит вращение.

∙Когда требуется изменить направление вращения, запуск будет заблокирован или инициализировано торможение, пока двигатель не остановиться. Если снова потребуется изменение направления, двигатель может быть синхронизироваться заново. В этом

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

Полностью управление синхронизацией и направлением показаны на рис.4-2. Двигатель остановлен, значит, флажок motorStopped ИСТИНЕН. Двигатель синхронизирован, значит, что флажок motorSynchronized ИСТИНЕН. Если требуется сменить направление, тогда должно быть выполнено DirectionInputChangeISR.

Рисунок 4-2. Конечный автомат управления направлением и синхронизацией.

4.6 Аналого-цифровые преобразования

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

Каждое переполнение Timer/counter0 автоматически вызывает осуществление выборки входного значения. Это гарантирует, что выборки происходят в середине цикла PWM, делая каждое текущее измерение, сопоставимым с последним.

Когда период преобразования закончен, вызывается соответствующее прерывание ADC, и полученное значение помещается в глобальную переменную, соответствующую каналу ADC выбранному в настоящее время. Флаг прерывания переполнения Timer/Counter0 должен быть очищен вручную, если прерывание переполнения Timer/Counter0 не выполнено. Новый преобразование не будет вызвано, пока этот флаг не очищен.

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

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

5 Аппаратные средства

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

5.1 Назначение выводов

Назначение выводов, используемое в этом документе, показано на рисунке 5-1. Функция каждого вывода описана в Таблице 5-1.

Рисунок 5-1. Назначение выводов

Таблица 5-1. Использование выводов AVR

Pin

Имя

назначение

направление

PD5

UL

Фаза U сигнал управления нижнего ключа

Out

PD6

UH

Фаза U сигнал управления верхнего ключа

Out

PB2

VL

Фаза V сигнал управления нижнего ключа

Out

PB1

VH

Фаза V сигнал управления верхнего ключа

Out

PD3

WL

Фаза W сигнал управления нижнего ключа

Out

PB3

WH

Фаза W сигнал управления верхнего ключа

Out

PCO

H1

Датчик Холла 1

In

PC1

H2

Датчик Холла 2

In

PC2

H3

Датчик Холла 3

In

PC3

Задатчик скорости

Аналоговый вход управления амплитудой.

In

Внешний сигнал в пределах 0-1.1V.

 

 

 

PC4

Ток

Измерение тока двигателя. Внешний сигнал в

In

пределах 0-1.1V.

 

 

 

 

Экстренный

Когда измениться логический уровень на этом

 

PB5

выводе будет вызвано прерывание

In

останов

 

EmergencyInterrupt.

 

 

 

 

PD2

Направление

0-вперед, 1-назад.

In

вращения

 

 

 

 

 

0 - двигатель вращается согласно сигналу

 

PD4

Реверсивное

«Направление вращения».

Out

вращение

1 – двигатель вращается в обратном

 

 

 

 

направлении или остановлен.

 

 

 

Выходной сигнал (меандр) с частотой в 3 раза

 

PD7

Тахо

выше электрической частоты вращения

Out

 

 

двигателя.

 

5.2 Соединение Atmega48/88/168 с драйвером и двигателем

Для работы этой программы требуются:

∙3-фазный двигатель с постоянными магнитами и датчиками холла.

∙Драйвер, способный управлять двигателем.

∙Atmel ® ATmega48/88/168 микроконтроллер.

∙Аналоговый входной сигнал в диапазоне 0-1.1V (для управления скорости).

Рисунок 5-2 показывает концептуальную схему построения полной системы.

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

Рисунок 5-2. Концептуальное схемное решение полной системы.

5.2.1 Использование драйвера ATAVRMC100

Эта программа была проверена на наборе для разработки приводов мощных двигателей ATAVRMC100. ATAVRMC100 имеет встроенный микроконтроллер AT90PWM3, но возможно

использовать его и как мощный драйвер с другим микроконтроллером через интерфейсы EXT_DRV и SENSOR на плате. Разъем EXT_DRV задокументирован в Руководстве Пользователя ATAVRMC100, доступном на web узле Atmel. Важно стереть AT90PWM3 перед использованием ATAVRMC100 с другим микроконтроллером, чтобы гарантировать, что только один микроконтроллер управляет сигналами.

Таблица 5-2 содержит полный список сигналов, которые должны быть связаны с платой ATAVRMC100. Обратите внимание, что сигнал GND связан с отрицательным выводом шунта, который фактически напрямую связан с общим проводом. Рисунок 5-3 показывает графическое представление разъема EXT_DRV.

Таблица 5-3 показывает необходимые подключения для интерфейса с датчиками холла. Графическое представление этого интерфейса показано на Рисунке 5-4.

 

Таблица 5-2. Подключение EXT_DRV

ATAVRMC100.

Имя сигнала

 

ATmegax8 pin

сигнал ATAVRMC100

 

номер вывода EXT_DRV

UH

 

PD6

H_A

 

1

UL

 

PD5

L_A

 

2

VH

 

PB1

H_B

 

3

VL

 

PB2

L_B

 

4

WH

 

PB3

H_C

 

5

WL

 

PD3

L_C

 

6

Ток

 

PC4

V шунт+

 

7

GND

 

GND

V шунтt-

 

8

Рисунок 5-3. Разъем EXT_DRV.

Таблица 5-3. Интерфейс датчиков холла ATAVRMC100.

Имя сигнала

Вывод ATmegax8

Сигнал ATAVRMC100

H1

PCO

Sensor A

H2

PC1

Sensor B

H3

PC2

SensorC

Рисунок 5-4 Подключение датчиков холла

6 Выходные графики

Рисунки 6-1 и 6-2 показывают сгенерированные волны, при вращении вперед и назад с различными скоростями. На осциллографе использовалась функция усреднения, чтобы сгладить формы волны. Оба графика показывают, с верху вниз: напряжения фазы для U, V, W, межфазное напряжение U-V, датчики холла H1, H2 и H3.

Рисунок 6-1 Вращение вперед, 750 RPM

Рисунок 6-2 Вращение назад, 12660 RPM

7 Размер программы и характеристики

Таблица 7-1 показывает использование памяти программ и ОЗУ. Обратите внимание, что размер программы включает почти 900 байт, занятых таблицами значений.

Таблица 7-1. Использование памяти

 

Программа

ОЗУ

Открытая система управлением

~2.6kB

~70B

скоростью

 

 

Управление скоростью PID

~3.5kB

~90B

контроллером

 

 

8 Ссылки

1. Valentine, R., Motor control electronics handbook, 1998, McGraw-Hill.

2. Atmel corporation, ATAVRMC100 hardware user guide rev. B, February 2006 http://www.atmel.com/dvn/resources/prod documents/doc7551.pdf

9 Источники

1.Оригинал этого документа на английском http://www.atmel.com/dyn/resources/prod_documents/doc8010.pdf

2.Программа описанная здесь http://www.atmel.com/dyn/resources/prod_documents/AVR447.zip

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]