Смекни!
smekni.com

Бесколлекторные электродвигатели (стр. 3 из 3)

void mc_init_IT(void);

Модифицируйте данную функцию для разрешения или запрета типов прерываний.

void PSC0_Init ( unsigned int dt0,

unsigned int ot0,

unsigned int dt1,

unsigned int ot1);

void PSC1_Init ( unsigned int dt0,

unsigned int ot0,

unsigned int dt1,

unsigned int ot1);

void PSC2_Init (unsigned int dt0,

unsigned int ot0,

unsigned int dt1,

unsigned int ot1);

PSCx_Init позволяет пользователю выбрать конфигурацию контроллера силового каскада (PSC) микроконтроллера.

    Функции коммутации фаз

U8 mc_get_hall(void);

Считывание состояния датчиков Холла, соответствующее шести ступеням коммутации (HS_001, HS_010, HS_011, HS_100, HS_101, HS_110).

_interrupt void mc_hall_a(void);

_interrupt void mc_hall_b(void);

_interrupt void mc_hall_c(void);

Данные функции выполняются, если выявлено внешнее прерывание (изменение выхода датчиков Холла). Они позволяют выполнить коммутацию фаз и вычислить скорость.

void mc_duty_cycle(U8 level);

Данная функция устанавливает рабочий цикл ШИМ в соответствии с конфигурацией PSC.

void mc_switch_commutation(U8 position);

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

    Конфигурация времени преобразования

void mc_config_sampling_period(void);

Инициализация таймера 1 для генерации прерывания каждые 250 мкс.

_interrupt void launch_sampling_period(void);

После активизации 250 мкс-ого прерывания устанавливает флаг. Он может использоваться для управления временем преобразования.

    Оценка скорости

void mc_config_time_estimation_speed(void);

Конфигурация таймера 0 для выполнения функции вычисления скорости.

void mc_estimation_speed(void);

Данная функция вычисляет частоту вращения двигателя на основе принципа измерения периода следования импульсов датчика Холла.

_interrupt void ovfl_timer(void);

При возникновении прерывания выполняется приращение 8-разрядной переменной для реализации 16-разрядного таймера с помощью 8-разрядного таймера.

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

_interrupt void ADC_EOC(void);

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

void mc_init_current_measure(void);

Данная функция инициализирует усилитель 1 для измерения тока.

U8 mc_get_current(void);

Считывание значения тока, если преобразование завершено.

Bool mc_conversion_is_finished(void);

Индицирует завершение преобразования.

void mc_ack_EOC(void);

Сброс флага завершения преобразования.

    Детекция токовой перегрузки

void mc_set_Over_Current(U8 Level);

Устанавливает порог определения токовой перегрузки. В качестве порога выступает выход ЦАП, связанный с внешним компаратором.

Контур стабилизации

Контур стабилизации выбирается с помощью двух функций: разомкнутый (mc_set_Open_Loop()) или замкнутый контур (mc_set_Close_Loop()). На рисунке 13 показан программно-реализованный контур стабилизации.


Рисунок 13. Контур стабилизации

Замкнутый контур представляет собой контур стабилизации скорости на основе ПИД-регулятора.

Далее будет показано, как настроить коэффициенты Кп и Ки. Коэффициент присутствует в контуре стабилизации, но не используется.

Как было показано ранее, коэффициент Кп используется для стабилизации времени отклика двигателя. Вначале установите Ки и Кд равными 0. Для получения требуемого времени отклика двигателя необходимо подбирать значение Кп.

  • Если время отклика слишком мало, то увеличьте Кп.
  • Если время отклика быстрое, но не стабильное, то снизьте Кп.


Рисунок 14. Настройка Кп

Параметр Ки используется для подавления статической погрешности. Оставьте коэффициент Кп неизменным и установите параметр Ки.

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


Рисунок 15. Настройка Ки

На рисунках 14 и 15 показаны примеры выбора правильных параметров регулятора Кп = 1, Ки = 0.5 и Kд = 0.

Настройка параметра Кд:

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

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

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

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

ЦПУ и использование памяти

Все измерения выполняются при частоте генератора 8МГц. Они также зависят от типа двигателя (количество пар полюсов). При использовании двигателя с 5 парами полюсов частота сигнала на выходе датчика Холла в 5 раз ниже частоты вращения двигателя.

Все результаты, приведенные на рисунке 16, получены при использовании трехфазного БКЭПТ с пятью парами полюсов и максимальной частотой вращения 14000 об/мин.


Рисунок 16. Использование быстродействия микроконтроллера

В худшем случае уровень загрузки микроконтроллера около 18% с временем преобразования 80 мс и частотой вращения 14000 об/мин.

Первую оценку можно выполнить для более быстрого двигателя и с добавлением функции стабилизации тока. Время выполнения функции mc_regulation_loop() находится между 45 и 55мкс (необходимо принять во внимание время преобразования АЦП около 7 мкс). Для оценки был выбран БКЭПТ с временем отклика тока около 2-3 мс, пятью парами полюсов и максимальной частотой вращения около 2-3 мс.

Максимальная частота вращения двигателя равна около 50000 об/мин. Если ротор использует 5 пар полюсов, то результирующая частота на выходе датчиков Холла будет равна (50000 об/мин/60)*5 = 4167 Гц. Функция mc_estimation_speed() запускается при каждом нарастающем фронте датчика Холла А, т.е. каждые 240 мкс при длительности выполнения 31 мкс.

Функция mc_switch_commutation() зависит от работы датчиков Холла. Она выполняется при возникновении фронтов на выходе одного из трех датчиков Холла (нарастающий или падающий фронты), таким образом, за один период импульсов на выходе датчика Холла генерируется шесть прерываний, а результирующая периодичность вызова функции равна 240/6 мкс = 40 мкс.

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

Результаты приведены на рисунке 17.


Рисунок 17. Оценка загрузки микроконтроллера

В таком случае уровень загрузки микроконтроллера около 61%.

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

При таких условиях используется следующий объем памяти:

  • 3175 байт памяти программ (38,7% от всего объема флэш-памяти).
  • 285 байт памяти данных (55,7% от всего объема статического ОЗУ).

Конфигурация и использование ATAVRMC100

На рисунке 18 представлена полная схема различных режимов работы стартового набора ATAVRMC100.


Рисунок 18. Назначение портов ввода-вывода микроконтроллера и коммуникационные режимы

Режим работы

Поддерживается два различных режима работы. Установите перемычки JP1, JP2 и JP3 в соответствии с рисунком 19 для выбора одного из этих режимов. В данных рекомендациях по применению используется только режим с использованием датчиков. Полное описание аппаратной части приведено в руководстве пользователя к набору ATAVRMC100.


Рисунок 19. Выбор режима управления с использованием датчиков

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

Программа, которая поставляется вместе с платой ATAVRMC100, поддерживает два режима работы:

  • запуск двигателя на максимальной скорости без внешних компонентов.
  • регулировка скорости двигателя с помощью одного внешнего потенциометра.


Рисунок 20. Подключение потенциометра

Заключение

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

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

Принципиальная схема содержит минимум внешних компонентов, необходимых для управления БКЭПТ со встроенными датчиками.

Возможности ЦПУ и памяти микроконтроллера AT90PWM3 позволят разработчику расширить функциональные данного решения.


Рисунок 21. Принципиальная электрическая схема (часть 1)


Рисунок 22. Принципиальная электрическая схема (часть 2)


Рисунок 23. Принципиальная электрическая схема (часть 3)


Рисунок 24. Принципиальная электрическая схема (часть 4)