Имеют ли смысл эти сигналы BLDC?

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

введите описание изображения здесь

Я сейчас управляю этой штукой без обратной связи, просто чтобы проверить формы сигналов и т. Д. Вот что я получаю, когда управляю двигателем с рабочим циклом 18 кГц, 30%:введите описание изображения здесь

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

Мой вопрос: почему плавающая фаза выглядит так, будто несет с собой много лишнего багажа? И если так и должно быть, то в какой момент, по вашему мнению, происходит пересечение нуля? Я надеялся, что это будет выглядеть немного чище, как в этом примечании к применению от Microchip http://ww1.microchip.com/downloads/en/AppNotes/01160b.pdf введите описание изображения здесь . Видите, четкая линейная рампа? на своем такого не вижу..

Кроме того, я должен отметить, что я использую ШИМ только для одной ноги, в то время как другая привязана к напряжению постоянного тока (GND на этих рисунках, хотя я играл с оставлением VDC подключенным и PWMing ногой GND, но это не сделало что-нибудь в хороший наклон. Это просто изменило полярность того, что я показал на своих первых фотографиях).

Кроме того, просто для полноты картины я добавил более близкие виды осциллограмм... Опять же, помните, что они работают в разомкнутом цикле, поэтому обратной связи нет... Я просто переключаю состояние коммутации при прокрутке таймера, что меня очень порадовало. с для отладки.

Вот более пристальный взгляд на последовательность коммутации:

введите описание изображения здесь

А вот восходящая плавающая фаза:

введите описание изображения здесь

А вот и падающая плавающая фаза... кажется, падает... хотя дно поднимается, так что, возможно, я ошибаюсь...:

введите описание изображения здесь

Это правильно, или я что-то не так делаю?

Редактировать

Благодаря приведенному ниже ответу, теперь я разгоняю двигатель на 100 мс, чтобы приготовить BEMF, а затем я слежу за моментом, когда моя нижняя сторона ШИМ становится выше нуля. Затем я выжидаю определенное время простоя, а затем нажимаю на курок при коммутации. Это намного лучше... Раньше двигатель работал медленно при токе около 112 мА при 12 В, но теперь он может легко разогнаться до 7200 об/мин при 40 мА при 12 В. Загрузка двигателя (путем зажимания вала ротора пальцами) совсем не замедляет его, а просто увеличивает потребляемый ток, как и ожидалось.

Фото или этого не было:

введите описание изображения здесь

введите сюда описание ссылки

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

Ответы (1)

Да, графики имеют смысл, но наложенный вами ШИМ не находится «в фазе» с напряжением BEMF.

Как вы заявили, вы управляете этим разомкнутым контуром, который больше похож на шаговый двигатель, поэтому ваш «положительный результат» не будет совпадать с положительным результатом BEMF. Когда вы начнете использовать обратную связь с датчиком, ваш BEMF будет больше похож на пример.

Имейте в виду, что линейность BEMF сильно зависит от двигателя. Не пугайтесь, если увидите некоторую кривизну:

Форма волны BLDC

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

Спасибо, приятно слышать. Когда вы говорите, что ШИМ не в фазе, вы имеете в виду высокочастотные импульсы, а не частоту коммутации, верно? А не могли бы вы пояснить последние предложения? Не уверен, что «привод подает высокий уровень на эту фазу, поскольку фаза достигает пика». спасибо, что нашли время, чтобы помочь мне
Без проблем. На осциллограмме, которую я связал, привод подает питание на фазу примерно на 1/3 рисунка. Обратите внимание, что форма волны имеет очень внезапный разрыв между изогнутой областью и твердым включением. Это привод, применяющий к фазе высокое состояние, хотя и смягченное действием ШИМ.
Итак, если я вас правильно понял, похоже, мне нужно подождать, пока нижняя часть сигнала перестанет опускаться ниже нуля (выборка во время отключения ШИМ), а затем подождать заданный период времени, а затем изменить состояние коммутации? Намылить, смыть, повторить? И еще вы мне говорите, что я их сейчас не вижу, но они где-то есть? Можете ли вы предложить, какие параметры для драйвера инвертора вы бы изменили, чтобы хотя бы иметь возможность их видеть, разомкнутый контур? Если бы я мог получить правильную форму волны, даже если она надуманная, это сделало бы отладку кода обратной связи чертовски проще!
@ testname123 Я был в дороге, когда ты написал это, извини за поздний ответ. Переход от открытого цикла к закрытому всегда сложен в первый раз. Вы можете измерить BEMF в верхней или нижней части ШИМ, не имеет значения, если вы делаете это в одном и том же месте оба раза. Я предпочитаю верх. Когда вы обнаружите пересечение нуля (когда BEMF > Vbus/2), подождите некоторое время в зависимости от скорости, а затем выполните коммутацию. Для отладки двигатель будет работать нормально без ожидания по времени, он просто не будет таким эффективным ... просто коммутирует, когда вы обнаружите пересечение нуля. Это должно помочь!
Спасибо за ответ! Один вопрос, однако... Если вы заметите второй нисходящий сигнал BEMF, он никогда не превысит Vbus/2... это отказ разомкнутого контура? Я пробовал играть со скоростью опережения коммутации в разомкнутом контуре и рабочим циклом, но мне приходилось работать непрактично медленно и с огромным рабочим циклом, чтобы хвостовой конец верхней части BEMF преодолел Vbus/2.
Если вы производите выборку на пиках ШИМ (в зависимости от используемых вами методов ШИМ), то вы сможете найти пересечение нуля. Это лучше всего работает с дополнительными методами ШИМ (всегда высокий или низкий уровень на возбужденных фазах, никогда не бездействующий). На изображении «четкой линейной рампы», которое вы разместили, используется дополнительный метод. Обратите внимание, как появляется ШИМ, когда фаза «высокая» И когда фаза «низкая»? В вашем методе ШИМ нет ШИМ, когда фаза низкая. Это может помочь.
Ааа, знаете что, я всю ночь переписывал вещи, чтобы учесть ваши советы из ваших предыдущих комментариев, и как только я наслаждался сладкими и вкусными волновыми формами и 18-килогерцовым визгом успеха, я увидел этот комментарий! Вы были правы... Доверие к алгоритму все уладило... Я начал запускать обещанное пересечение нуля, и, конечно же, когда я позволил алгоритму работать, они появились, как и было обещано. Я даже добавил небольшой накопитель/порог в качестве задержки после события пересечения нуля, чтобы добавить некоторое мертвое время к переключению. Я обновлю вопрос и спасибо за помощь