Управление бесколлекторным двигателем постоянного тока с помощью Arduino --*без ESC*

Я хочу построить ESC, используя ATmega328 (используется в Arduino Uno). Это бесщеточный двигатель постоянного тока, который я выбрал, и это полевой МОП-транзистор , который я выбрал для управления источником питания. Он будет использоваться для привода гребного винта с переменной скоростью в одном направлении.

Я понимаю концепцию «вращения» мощности, но не могу решить головоломку.

  1. На какой частоте я должен открыть полевой МОП-транзистор для максимальной скорости? Двигатель 700kv при максимальном напряжении 14,4 вольта. Означает ли это, что я должен стробировать MOSFET на частоте 10,08 МГц (700 кГц * 14,4)?
  2. Должен ли я определять положение ротора? (Используя эффект Холла или датчик) Если да, то почему?
  3. Что лучше для этого приложения: прямоугольная волна (ШИМ) или синусоидальная волна?


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

  1. Я принял 1 кВ за 1000 об/мин вместо правильного 1 об/мин на вольт. Я также думал об оборотах в секунду вместо правильных оборотов в минуту . Теперь это гораздо более правдоподобно.
«МОП-транзистор» ... вы понимаете, что вам понадобится шесть МОП-транзисторов, верно?
Поищите AVR444 - Бездатчиковое управление трехфазным бесколлекторным постоянным током... Это не тривиально.
@BrianDrummond, почему 6? Я не могу запустить его с 3?
Если это Y-образная обмотка, вы можете запустить ее с 3, но 6 (3 полумоста) - это нормальный способ.
Возможно, стоит отметить, что меньший брат ATmega328, ATmega8, является одним из лучших вариантов для реализации любительских регуляторов скорости (большинство из них либо это, либо SiLabs 8051). Проекты прошивок с открытым исходным кодом для тех, кто может сразу портировать или, по крайней мере, дать вам некоторые практические идеи о подходах к работе.
вы можете взглянуть на работу Бенджамина Веддера на его домашней странице и на его канале YT. Это удивительно, и вы можете увидеть, насколько это сложно, и получить представление о том, что вы пытаетесь сделать. Возможно, было бы неплохо начать с коллекторных двигателей постоянного тока, поскольку им не требуется модуляция трех фаз, как это делают бесщеточные собратья.
Работа @ca Benjamin потрясающая! Я приостановил этот проект, потому что хотел использовать BEMF вместо датчиков. Похоже, в его дизайне есть все, что я хотел, и даже больше.

Ответы (1)

У Atmel есть несколько замечаний по применению бесщеточного управления двигателем без датчиков, например, http://www.atmel.com/Images/doc8192.pdf или http://www.atmel.com/images/doc8306.pdf .

2/ Вам нужно как-то определить положение ротора. Магнитное поле в катушках двигателя должно немного опережать магнитное поле в роторе, чтобы притягивать его, поэтому вам нужно знать, где находится ротор, чтобы включить следующий набор катушек в нужное время. Если двигатель не имеет датчиков Холла, вы делаете это, измеряя ЭДС в катушках. Это работает только тогда, когда двигатель вращается, поэтому существует более медленная фиксированная последовательность запуска двигателя.

1/Количество kv — это число оборотов в минуту на вольт без нагрузки, поэтому при 14,4 В можно ожидать, что двигатель будет работать со скоростью 10 000 об/мин, что составляет 167 Гц. 10 МГц было бы очень быстро для двигателя — кончики 10-сантиметрового пропеллера будут двигаться со скоростью 2% от скорости света.

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

Я знаю, что пропеллеры теряют эффективность, когда законцовки становятся сверхзвуковыми... что происходит, когда они становятся релятивистскими? :)
Это приводит к другому вопросу. Если это 167 Гц, и я запускаю ШИМ на частоте + 20 кГц, как мне изменить скорость двигателя?
ШИМ должен быть только выше, чем период включения транзистора - в этом случае с 3 катушками у вас есть 6 периодов включения на оборот, поэтому ваша ШИМ 20 кГц будет составлять 20 циклов ШИМ за время, в течение которого каждый транзистор включается ( 20 кГц/(167*6 включений в секунду).
+1 за бонусную заметку о почти релятивистской скорости тангенциального ротора + расчет. :)
Упс, только что заметил: в (2) очень интересный вопрос ОП о необходимости определять положение двигателя: «Если да, то почему?» не отвечает. (Я хотел взять свой (во всяком случае, дрянной...) голос за это, но (к счастью) у меня нет представителей.)
@Ш. это описано в связанной заметке, но я добавил очень простое объяснение
Отлично, спасибо! Тем не менее, все еще интересно (не уверен, что OP имел в виду то же самое), именно потому, что «... существует более медленная фиксированная последовательность для запуска двигателя»: вы можете попробовать ускоряющую последовательность линейного разгона без обратной связи, и ротор будет продолжайте вращаться, возможно, довольно быстро в конце концов и, возможно, даже создавая некоторый крутящий момент. Этот «шаговый режим» вроде бы работал (после некоторой настройки), но был бы очень неэффективным и враждебным по отношению к двигателю (и, возможно, водителю), а управление скоростью тоже было бы ужасным. Таким образом, управление BLDC без обратной связи возможно , но намного хуже. Это верно? Спасибо.
@Sz да, вы запускаете разомкнутый контур, но вы не можете получить и скорость, и крутящий момент - если вы пропустите через него полный ток с медленной коммутацией, вы получите тот же крутящий момент, но без обратной связи он будет ужасно рывками, или вы можете коммутируйте его на требуемой скорости, и вы можете вообще не получить крутящего момента.
И, как я также понял, еще более проблематичным является то, что привод без обратной связи должен брать на себя определенную фиксированную нагрузку. Любое изменение в этом (что неизбежно в любом значимом приложении), и все это станет безнадежно шатким. Итак, сообщение для ОП (@NathanGoings): я считаю это основной причиной «да, вы должны использовать обратную связь и замкнутый цикл».