Перейти к содержанию
    

Детекция ЭДС в регуляторе бесколлекторного двигателя.

Не стартует.

К слову, ШИМ у меня сейчас пока нет, обмотки коммутируются максимальным током.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не стартует.

Попробуйте сначала коммутировать ключи с фиксированной частотой. 1 Гц например. Без всяких ADC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте сначала коммутировать ключи с фиксированной частотой. 1 Гц например

Этот этап пройден. Работает, пыхтит, греется, но крутит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот этап пройден. Работает, пыхтит, греется, но крутит.

значит теперь смещайте угол пока не закрутится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поигралась с настройками - увеличила таймаут, по которому обычный режим переключается в режим с контролем ЭДС. Программа не дожидалась и сбрасывала сччетчик в ноль. И доходило до этого, в том числе, из-за отсутсвия ШИМ и инерции мотора. Сейчас заработало. Дергается, но через некоторое время раскручивается. Попробую реализовать программный ШИМ.

 

Мда... с ШИМом он почему-то вообще не стартует, только дергается.

Будем искать...

 

значит теперь смещайте угол пока не закрутится.

Это что-то вроде угла опережения зажигания?

 

Где-то здесь задержку ставить надо?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Посмотрела на управляющие импульсы на фазах - они какие-то неодинаковые по ширине.

Что-то мне подсказывает, что сигнал обратной ЭДС кривой.

Посмотрите на эту ЭКГ - что с ней не так?

post-64708-1528659045_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С ней всё не так. Вообще непонятно, что это: может, и вправду ЭКГ подопытного мышонка из ближайшей биолаборатории? Ни шкал, ни легенды, ни пояснений... Ток? ЭДС? Где снято, при каких условиях?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

...именно в этом главный недостаток работы по сигналу ЭДС (в отличие от Холлов)... Ведь вот что происходит - при старте, вращение отсутствует, и сигнала ЭДС нет ВООБЩЕ..., а для уверенного старта, контроллер должен точно знать в каком положении ротор в ДАННЫЙ момент, чтобы подключить нужные фазы... А информации о положении ротора у контроллера нет... Вот контроллер и подключает СЛУЧАЙНЫМ образом фазы (или перебирает по очереди все шесть возможных комбинаций..., не знаю, как там реально программно организовано...), чтобы хоть как то заставить ротор вращаться и выдать сигнал ЭДС (очень слабый при старте, надо отметить...) и только потом станет ясно, в каком положении ротор, и в нужную ли сторону вращается...

Изменено пользователем варп

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это что-то вроде угла опережения зажигания?

Управление вашим двигателем сводится к одной простой вещи: "держать магнитное поле статора к магнитному полю ротора под 90 градусов!" И всё будет ок.

Под +90 или под -90 - в зависимости от требуемого направления вращения.

А значит: нужно знать угловое положение м.поля статора и м.поля ротора.

Для формирования поля статора у Вас есть ключи (грубое задание углового положения поля, с большой дискретностью - просто коммутацией; и более точное - с помощью ШИМ).

А для того, чтобы определить положение ротора (и его магнитного поля), используют датчики угла разных типов (д.Холла, ресольверы, синус-косинусные датчики, энкодеры и т.п.).

Также в самых дешёвых случаях используют бездатчиковое определение: по ЭДС на неиспользуемых обмотках. Естественно это и самый плохой случай. О недостатках полно инфы в инете.

Например хотя-бы то, что не завращав ротор (а без вращения не получить эту самую ЭДС) не получить и показаний угла. Да и на малых скоростях ЭДС мала и определять угол по ней сложно.

Наилучшие варианты: ресольвер или синус-косинусный датчик. Но дорого и громоздко.

Вот измерили Вы угловое положение поля ротора и можете задать угловое положение поля статора, но остаётся вопрос: каков угол между началом координат (точкой 0 градусов) статора и началом координат ротора? А они естественно обычно не совпадают. А чтобы выставить поле под 90 градусов эту угловую разницу нужно знать. Обычно её измеряют. Или задают конструктивно. Ну или в крайнем случае грубо можно определить методом тыка.

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

Примерно так.

 

в отличие от Холлов

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Примерно так.

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

Они описаны в апнотах у TI, Microchip, ST и прочих

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

Надо только применять не компаратор, а АЦП этак на сотню килогерц.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Они описаны в апнотах у TI, Microchip, ST и прочих

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

Надо только применять не компаратор, а АЦП этак на сотню килогерц.

Речь про это документ?

SENSORLESS BLDC MOTOR CONTROL AND BEMF SAMPLING METHODS WITH ST7MC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет не это.

Что-то вроде этого - https://www.researchgate.net/publication/43...hless_DC_Drives

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Гораздо проше использовать датчики холла в аналоговом режиме. Кстати, нет ли где примеров такого кода, чтобы на удержании и низких оборотах использовались холлы аналогово, а на больших оборотах- через таймера. Интересует вопрос плавного перехода из первого режима во второй и отратно.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Гораздо проше использовать датчики холла в аналоговом режиме. Кстати, нет ли где примеров такого кода, чтобы на удержании и низких оборотах использовались холлы аналогово, а на больших оборотах- через таймера. Интересует вопрос плавного перехода из первого режима во второй и отратно.

Бьюсь над похожей задачей.

giphy.gif

В моторе стоят цифровые холлы, на плате управления цифровой магнитометр, который ловит поле от дверной петли.

Задача максимально плавно, бесшумно и с максимальным моментом закрывать и открывать дверь.

Пока ничего лучше чем слияние Калмана не придумал, но еще не реализовал.

 

Кстати в этом моторе 8-мь полюсов, но определение позиции ротора по индуктивности вполне четкое.

Калибровка не требуется ибо определение идет по разнице.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не касаясь особенностей ШИМ (я в этом не профи),

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

2) про вентиляторный момент: это когда нагрузка пропорциональна квадрату скорости. В частности, при 0 скорости и нагрузка почти 0. Поэтому авиа-мотор стартует как-нибудь без нагрузки, а потом уже и ЭДС появляется.

В автомобиле при 0 скорости момент максимальный, а при разгоне уменьшается. А также возможна длительная работа с низкими оборотами и большим моментом. Т.е. кое-как старт и низкие обороты нельзя реализовывать, а скорее всего, и двигатели нужны разные. И, например, может понадобиться отдельный вентилятор для охлаждения мотора на низких оборотах, когда собственная крыльчатка не вентилирует.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...