В предыдущей части был собран прототип.
Он тестировался на слабеньком DIY BLDC при 12В. Даже без "холлов" он крутился до 15 об/сек без срывов (естественно, без нагрузки). Когда система была подключена к 10s2p и мотор-колесу от гироскутера - эффект был совсем другой.
Произошедший сбой - суммарный результат ряда "косяков" в проектировании: аппаратных и программных. Драйверов этот сбой касается меньше всего, т.к. были проблемы с питанием CPU, но если бы была дополнительная цепь контроля, выключающая их, то ряд проблем не возникло бы.
Во-первых, я забыл про контроль тока. Точнее у меня не было под рукой нужного шунта и готовой схемы усилителя на ОУ. В БП 12В была защита по max току, да и мощность двигателя была маленькая, поэтому я упустил этот момент.
Второй момент - управление MOSFETами, а точнее "затворный резистор". Часто на схемах с IR2104 указывается 10 Ом и используют мой любимый IRLZ44N. Насколько это оправдано?
IR2104
Выходной ток IR2104 в начале даташита указан как 130 мА / 270 мА. Что это значит?
Это ток короткого замыкания выходного каскада микросхемы для открытия и закрытия управляемого транзистора. Этот ток измерен при питании от 15В в течении 10 микросекунд и, очевидно, при более длительном воздействии микросхема сгорает.
Давайте посчитаем
Для открытия силового ключа выходное сопротивление равно R(on) = 15В/130мА=115,4 Ω. Для закрытия - R(off)15В/270мА=55,6 Ω.
Вот это поворот!
У IRLZ44N (который я часто использую) сопротивление открытого канала RDS(on) = 22мΩ. Разница в тысячу раз.
Смотрим схему.
Судя по схеме, на выходе IR2104 стоят "хитрые" КМОП инверторы. Это МДП-транзисторы со встроенным каналом (D-MOSFET).
Решил проверить - нашел первый попавшийся даташит D-MOSFET транзистор CPC3701. У него ток стока Id=130мА и RDS(On)=14Ом. Получается - высокое сопротивление и малый ток стока для них норма.
D-MOSFET обычно используются в аналоговых схемах (например усилителях), где требуется работа в линейном диапазоне. Применение их в данной схеме, я считаю, не оправдано. Разве что разработчики чипа сделали "защиту от дурака", чтобы инженеры при сборке своих схем ничего не спалили. В том числе и сам IR2104.
IRLZ44N
Для того, чтобы открыть MOSFET надо подать на его затвор напряжение выше VGS(th) - порогового напряжение затвора. В нашем случае - больше 1В.
Это просто открыть. А если надо быстро открывать и закрывать транзистор, как в случае ШИМ-регулятора или BLDC-контроллера, то "на сцену выходит" параметр Qg.
Total Gate Charge (общий заряд затвора) – это ключевая характеристика полевого транзистора, обозначающая полное количество электрического заряда, которое необходимо подать на вывод затвора (G) для переключения MOSFET из полностью выключенного состояния в полностью включенное (и наоборот).
Смотрим предельные характеристики переключения транзистора:
- td(on) - время, за которое напряжение на затворе поднимется до 90% от подаваемого
- tr - время, за которое транзистор откроется на 90% (задержка после td(on)).
То же самое для параметров выключения.
Обратите внимание td(off) > td(on) более чем в 2 раза. Так происходит во всех MOSFET'ах в силу особенности их структур.
Именно поэтому в IR2104 IonIR/IoffIR так же отличаются: 130мА/270мА.
Так же учтите, что эти параметры отличаются в зависимости от производителя в большую или меньшую сторону.
Если очень грубо, то затвор MOSFET'а - это конденсатор. Чтобы его зарядить в предельном режиме, надо подать заряд Qg за td(on). Как это сделать?
Очень просто: Q = I * t.
I(on) = Qg/td(on) = 48нКл/11нс ≈ 4,4А.
I(off) = Qg/td(off) = 48нКл/26нс ≈ 1,8А.
А в собранном мной драйвере получилось:
Ucc = 12В (а не 15В как в даташите). Rg = 10 Ω.
I(on) = Ucc/(R(on) + Rg) = 12В/(115,4 Ω + 10Ω) = 96мА.
I(off) = Ucc/(R(off) + Rg) = 12В/(55,6Ω + 10Ω) = 183мА.
t(on) = Qg/I(on) = 48нКл/96мА = 500нс.
t(on) = Qg/I(off) = 48нКл/183мА = 262нс.
Похоже, я знатно "завалил фронты"!
Автора статьи, с которой я "стартовал" не обошла эта участь стороной. Правда он использовал транзисторы 06n03la. Это 17нКл против моих 48нКл, но у него и Rg = 100 Ω. Да и мотор у него от дрона 12В. Ватт 10 - не более. У меня же 350 Вт (36В).
Все же посчитаем.
I(on) = Ucc/(R(on) + Rg) = 12В/(115,4 Ω + 100Ω) = 56мА.
I(off) = Ucc/(R(off) + Rg) = 12В/(55,6Ω + 100Ω) = 77мА.
t(on) = Qg/I(on) = 17нКл/56мА = 304нс.
t(on) = Qg/I(off) = 17нКл/77мА = 220нс.
Deadtime
304нс + 220нс = 524нс. Он аккурат уложился в Deadtime, которое у IR2104 равно 520нс. Ну почти.
В моем драйвере 500 нс + 262нс = 762нс. Явный перебор.
Но Deadtime учитывается при переключении с верхнего плеча на нижнее, чтобы не было сквозных токов, а в данной схеме ШИМ идет на пин SD, а не IN.
То есть "шимится" с большой частотой или нижний или верхний транзистор, причем на разных фазах двигателя (отдельных модулях на IR2104).
Тут нас больше волнует параметр tsd (shutdown propagation delay) = 160 нс.
Надоело считать - моделируем в Proteus.
Синий график - SD, желтый - напряжение на нагрузке нижнего ключа.
На графике разрыв импульса - при частоте 1КГц и разрешении осциллографа 0,5мкс/дел он не помещается в экран. Отчетливо видно, что спад импульса не сильно страдает - tsd не мешает. А вот фронт идет с сильной задержкой. Похоже, deadtime при включении все-таки и тут срабатывает.
Мешает ли это нам? На 1КГц однозначно нет.
Смотрим на 31КГц (частота ШИМ в статье, с которой все началось).
Видно, что ширина импульса срезана почти в 2 раза. А вот так выглядит импульс при 5% скважности.
Ничего не сгорит, но при регулировании надо учитывать, что выходной импульс меньше. Минимальную скважность легко исправить в софте, зато ее можно увеличивать почти до 100%.
Естественно, при дальнейшем использовании надо учитывать задержки, особенно при измерении токов итп.
При моделировании видны скругления импульсов, на практике картина будет та же. На "пяточки" и "наклоны" все-таки влияет недостаточный ток затвора. На больших частотах выходные транзисторы будут греться, хотя сквозных токов уже не будет.
Это для IRLZ44N. У STP110N7F6, которые я "наковырял" из гироскутера и планировал использовать в дальнейшем Qg = 100нКл. Это в 2 раза больше, чем у "44-го"!
Можно снизить частоту ШИМ, например до 8КГц, (ниже 16КГц уже будет слышен писк) или сделать драйверы помощнее.
Какая длительность фронтов нам нужна, можно подсмотреть в этом графике? Он для IGBT транзисторов, но там, по сути, MOSFET на входе, поэтому примем за ориентир 100-200нс.
Для STP110N7F6 даже при 15В и без затворного резистора:
t(on) = Qg/I(on) = 100нКл/130мА = 769нс.
t(on) = Qg/I(off) = 100нКл/270мА = 370нс.
IR2104 явно "не тянет". Нужно что-то помощнее.
Про большой китайский сайт я ничего не знаю, интернетом пользоваться не умею и, кроме импортозамещения, ничем не занимаюсь.