|
|
  |
Детекция ЭДС в регуляторе бесколлекторного двигателя. |
|
|
|
Jun 10 2018, 16:45
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
Цитата Попробуйте сначала коммутировать ключи с фиксированной частотой. 1 Гц например Этот этап пройден. Работает, пыхтит, греется, но крутит.
|
|
|
|
|
Jun 10 2018, 18:07
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
Поигралась с настройками - увеличила таймаут, по которому обычный режим переключается в режим с контролем ЭДС. Программа не дожидалась и сбрасывала сччетчик в ноль. И доходило до этого, в том числе, из-за отсутсвия ШИМ и инерции мотора. Сейчас заработало. Дергается, но через некоторое время раскручивается. Попробую реализовать программный ШИМ. Мда... с ШИМом он почему-то вообще не стартует, только дергается. Будем искать... Цитата значит теперь смещайте угол пока не закрутится. Это что-то вроде угла опережения зажигания? Где-то здесь задержку ставить надо? Код switch (commutation_step) { case (0): if(!SENSE_UVW || startup) { UH_ON; // На фазе U - ШИМ WH_OFF; // Фаза W отключена SENSE_W; // Активируем вход фазы W commutation_step = 1; // Следующий шаг TCNT0 = 0; // Обнуляем счетчик T0 } break; case (1): if(SENSE_UVW || startup) { VL_OFF; // На фазе V - лог. 0 WL_ON; // На Фазе W - лог. 1 SENSE_V; // Активируем вход фазы V commutation_step = 2; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (2): if(!SENSE_UVW || startup) { UH_OFF; // Фаза U отключена VH_ON; // На фазе V - ШИМ SENSE_U; // Активируем вход фазы U commutation_step = 3; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (3): if(SENSE_UVW || startup) { UL_ON; // На фазе U - лог. 1 WL_OFF; // На Фаза W - лог. 0 SENSE_W; // Активируем вход фазы W commutation_step = 4; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (4): if(!SENSE_UVW || startup) { VH_OFF; // Фаза V отключена WH_ON; // На фазе W - ШИМ SENSE_V; // Активируем вход фазы V commutation_step = 5; TCNT0 = 0; // Обнуляем счетчик T0 } break; case (5): if(SENSE_UVW || startup) { UL_OFF; // На фазе U - лог. 0 VL_ON; // На Фазе V - лог. 1 SENSE_U; // Активируем вход фазы U commutation_step = 0; TCNT0 = 0; // Обнуляем счетчик T0 } break; }
Сообщение отредактировал murmur - Jun 10 2018, 18:09
|
|
|
|
|
Jun 10 2018, 19:30
|
Местный
  
Группа: Участник
Сообщений: 425
Регистрация: 30-04-11
Пользователь №: 64 708

|
Все пока хорошо, но вот почему то запускается двигатель с дерганьем. Непредсказуемым по времени. Поможешь рукой - крутится. Посмотрела на управляющие импульсы на фазах - они какие-то неодинаковые по ширине. Что-то мне подсказывает, что сигнал обратной ЭДС кривой. Посмотрите на эту ЭКГ - что с ней не так?
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 11 2018, 01:24
|
Знающий
   
Группа: Участник
Сообщений: 926
Регистрация: 9-08-15
Пользователь №: 87 913

|
Цитата(murmur @ Jun 11 2018, 01:30)  .... но вот почему то запускается двигатель с дерганьем. Непредсказуемым по времени. ...именно в этом главный недостаток работы по сигналу ЭДС (в отличие от Холлов)... Ведь вот что происходит - при старте, вращение отсутствует, и сигнала ЭДС нет ВООБЩЕ..., а для уверенного старта, контроллер должен точно знать в каком положении ротор в ДАННЫЙ момент, чтобы подключить нужные фазы... А информации о положении ротора у контроллера нет... Вот контроллер и подключает СЛУЧАЙНЫМ образом фазы (или перебирает по очереди все шесть возможных комбинаций..., не знаю, как там реально программно организовано...), чтобы хоть как то заставить ротор вращаться и выдать сигнал ЭДС (очень слабый при старте, надо отметить...) и только потом станет ясно, в каком положении ротор, и в нужную ли сторону вращается...
Сообщение отредактировал варп - Jun 11 2018, 03:15
|
|
|
|
|
Jun 11 2018, 05:37
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(murmur @ Jun 10 2018, 21:07)  Это что-то вроде угла опережения зажигания? Управление вашим двигателем сводится к одной простой вещи: "держать магнитное поле статора к магнитному полю ротора под 90 градусов!" И всё будет ок. Под +90 или под -90 - в зависимости от требуемого направления вращения. А значит: нужно знать угловое положение м.поля статора и м.поля ротора. Для формирования поля статора у Вас есть ключи (грубое задание углового положения поля, с большой дискретностью - просто коммутацией; и более точное - с помощью ШИМ). А для того, чтобы определить положение ротора (и его магнитного поля), используют датчики угла разных типов (д.Холла, ресольверы, синус-косинусные датчики, энкодеры и т.п.). Также в самых дешёвых случаях используют бездатчиковое определение: по ЭДС на неиспользуемых обмотках. Естественно это и самый плохой случай. О недостатках полно инфы в инете. Например хотя-бы то, что не завращав ротор (а без вращения не получить эту самую ЭДС) не получить и показаний угла. Да и на малых скоростях ЭДС мала и определять угол по ней сложно. Наилучшие варианты: ресольвер или синус-косинусный датчик. Но дорого и громоздко. Вот измерили Вы угловое положение поля ротора и можете задать угловое положение поля статора, но остаётся вопрос: каков угол между началом координат (точкой 0 градусов) статора и началом координат ротора? А они естественно обычно не совпадают. А чтобы выставить поле под 90 градусов эту угловую разницу нужно знать. Обычно её измеряют. Или задают конструктивно. Ну или в крайнем случае грубо можно определить методом тыка. Вот про этот угол (угловую разницу) я и говорю. Обычно, когда я неверно выставлю этот угол, то у меня как раз такая картина и наблюдается: моторчик гудит, свистит, но не едет. Это если заданная угловая разница далека от истинной. Если ошибка не очень большая, то едет, но с гораздо бОльшим током по обмоткам (греется). Примерно так. Цитата(варп @ Jun 11 2018, 04:24)  в отличие от Холлов Не вводите в заблуждение! д.Холла - это всего лишь частный случай датчиков положения ротора. Не самый лучший кстати. Их много разных бывает.
|
|
|
|
|
Jun 11 2018, 05:57
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(jcxz @ Jun 11 2018, 08:37)  Примерно так. Вообще-то есть способы определения угла поворота ротора с помощью измерения напряжений даже в статическом состоянии. Они описаны в апнотах у TI, Microchip, ST и прочих Обратная ЭДС достаточная для синхронизации в модельных моторчиках возникает уже со второго импульса. Надо только применять не компаратор, а АЦП этак на сотню килогерц.
|
|
|
|
|
Jun 13 2018, 15:04
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(khach @ Jun 12 2018, 11:59)  Измерять индуктивность обмоток в зависимости от углового положений ротора конечно можно, но только если нет никаких других возможностей определить начальное положение ротора. Да и калибровать надо под каждый двигатель. А в многополюсном двигателе угловая зависимость индуктивности вообще слабая очень. Гораздо проше использовать датчики холла в аналоговом режиме. Кстати, нет ли где примеров такого кода, чтобы на удержании и низких оборотах использовались холлы аналогово, а на больших оборотах- через таймера. Интересует вопрос плавного перехода из первого режима во второй и отратно. Бьюсь над похожей задачей.  В моторе стоят цифровые холлы, на плате управления цифровой магнитометр, который ловит поле от дверной петли. Задача максимально плавно, бесшумно и с максимальным моментом закрывать и открывать дверь. Пока ничего лучше чем слияние Калмана не придумал, но еще не реализовал. Кстати в этом моторе 8-мь полюсов, но определение позиции ротора по индуктивности вполне четкое. Калибровка не требуется ибо определение идет по разнице.
|
|
|
|
|
Jun 13 2018, 18:28
|
Профессионал
    
Группа: Свой
Сообщений: 1 172
Регистрация: 14-11-11
Из: Москва
Пользователь №: 68 299

|
Не касаясь особенностей ШИМ (я в этом не профи), 1) AlexandrY про дверь (извините, если не для этой темы) - лучше переделать систему рычагов так, чтобы в начале и в конце открывания двери тоже было максимальное передаточное число, т.е. медленный поворот двери при одинаковой скорости двигателя. А в середине открывания чтоб было побыстрее. 2) про вентиляторный момент: это когда нагрузка пропорциональна квадрату скорости. В частности, при 0 скорости и нагрузка почти 0. Поэтому авиа-мотор стартует как-нибудь без нагрузки, а потом уже и ЭДС появляется. В автомобиле при 0 скорости момент максимальный, а при разгоне уменьшается. А также возможна длительная работа с низкими оборотами и большим моментом. Т.е. кое-как старт и низкие обороты нельзя реализовывать, а скорее всего, и двигатели нужны разные. И, например, может понадобиться отдельный вентилятор для охлаждения мотора на низких оборотах, когда собственная крыльчатка не вентилирует.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|