Мы не выдаем Китай за Италию. Платы от российского производителя по сниженным ценам.

Новинки: Power DC Shield, Светодиодная лента, Freeduino Mini, модули USB Host, Relay. Радикальное снижение цен: Mega 2560, Ethernet.

Назначение

Модуль Power DC Shield – мостовой преобразователь на четырех полевых транзисторах для управления двигателем постоянного тока (ДПТ) на максимальное напряжение 24 В, максимальный ток 30 A (далее - модуль).

Модуль основан на драйвере управления затворами N-канальных полевых транзисторов серии A3941 от Allegro MicroSystems. В качестве вентилей применены N-канальные полевые транзисторы серии IRLR8743. В схеме реализован контроль тока в цепи нагрузки на линейном датчике тока на основе эффекта Холла серии ACS714 от Allegro MicroSystems.

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

Power DC Shield 1900 р. В корзину

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

Power DC Shield DIY 1700 р. В корзину

Вариант DIY может быть интересен для прямого монтажа силовых проводников, или других нестандартных вариантов применения.

Технические характеристики

  • напряжение питания: +7...+24 В
  • максимально-продолжительный ток: 30 А
  • реверс двигателя
  • режимы торможения: динамическое, противовключением
  • измерение (контроль) тока в цепи нагрузки на частоте ШИМ до 80 кГц
  • совместимость со всеми известными моделями микроконтроллеров Freeduino/Arduino в полноразмерных габаритах: MaxSerial, Through-Hole, Diecimila, 2009, Duemilanove, Mega

Принципиальная схема по лицензии Creative Commons Attribution-ShareAlike 2.5

Для возможности точного выбора разработчиком преобразовательной электроники величины ёмкости конденсаторов накачки, в схеме предусмотрено по два конденсатора С5 и С6, а также С7 и С8 для каждого транзистора в верхнем полуплече моста QHA и QHB соответственно.

Драйвер управления затворами

Управление затворами N-канальных полевых транзисторов осуществляется микросхемой серии A3941 - H-мостовой 4-х канальный драйвер затвора N-канальных полевых транзисторов (далее - драйвер).

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

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

Таким образом, в драйвере А3941 реализовано три алгоритма широтно-импульсного управления мощностью нагрузки мостовой схемы: посредством управления: а) верхними (далее режим – PWMH); б) нижними (PWML); в) одновременно верхними и нижними (PWMPHASE) полевыми транзисторами мостовой схемы.

Разработчиками драйвера предусмотрена возможность работы мостовой схемы в режиме синхронного выпрямления (далее режим – SR), позволяющая снизить тепловые потери, рассеиваемые транзисторами во время работы.

Напряжение питания

Характеристики драйвера A3941 позволяют работать с напряжением постоянного тока в диапазоне от +7 до +50 В, но для модуля Power DC Shield ограничение на верхнюю границу напряжения задают его полевые транзисторы IRLR8743, максимальное значение сток–исток которых составляет +30 В.

Учитывая, что при работе схемы возникают коммутационные перенапряжения в нагрузке, превышающие уровень питающего напряжения, то для полевых транзисторов серии IRLR8743 рекомендуется использовать напряжение постоянного тока не выше +24 В.

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

Токовая нагрузка

Максимальная токовая нагрузка модуля ограничена характеристиками токопроводящих элементов силовой цепи, в том числе: полевых транзисторов IRLR8743, токопроводящих слоев печатной платы от стоков и истоков транзисторов до зажимов выходных клеммников, а также измерительного элемента в цепи нагрузки - датчика тока ACS714, который и задаёт ограничение тока в цепи нагрузки допустимым диапазоном измерений 30А. Кратковременный (до 100 мс) пиковый ток модуля, может достигать 100А.

Схема накачки

В составе драйвера A3941 аппаратно реализованы схемы накачки двух ёмкостей затворов полевых транзисторов верхнего полумоста с использованием внешних конденсаторов накачки.

Драйвер A3941 поддерживает необходимый уровень заряда индивидуально на каждом конденсаторе накачки для обеспечения требуемой величины зарядного тока ёмкости затвора полевого транзистора.

Для надежного отпирания полевых транзисторов верхнего полумоста, схема накачки предусматривает подачу отпирающих импульсов на затворы верхних полевых транзисторов напряжением, свыше уровня питающего напряжения на 7 – 10 В.

Отпирающие импульсы на затворы нижних полевых транзисторов подаются на уровне 7,25 – 8 В.

Аппаратная и программная защиты

В модуле аппаратно реализованы следующие аппаратные защиты, предусмотренные логикой драйвера A3941:

  • от коротких замыканий в силовой цепи и нагрузке
  • от перенапряжений в цепях управления
  • от перегрева драйвера

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

Дополнительно к аппаратным защитам возможна реализация программной защиты с контролем по току нагрузки, измеряемого датчиком ACS714.

Возможные комбинации сигналов FF1 и FF2 представлены в таблице состояний модуля.

FF1

FF2

Состояние модуля

Подача управляющих импульсов на затворы

0 0 Исправен Да
0 1 Короткое замыкание в силовой цепи (на землю, в нагрузке) Нет
1 0 Перегрев драйвера A3941 свыше 165 C Да
1 1 Перенапряжения в цепях управления (в цепи +5 В, в цепях схемы накачки) Нет

Схема перезагрузки модуля

Драйвер A3941 переходит в спящий режим подачей низкого уровня напряжения на вход RESET, при этом отключается схема внутренней логики и внутренних регуляторов напряжений (+5V и схемы накачки), происходит сброс сигналов состояний FF1, FF2. Для выхода из спящего режима и перезагрузки модуля, следует подать высокий уровень напряжения на вход RESET драйвера A3941.

В модуле Power DC Shield предусмотрена возможность выбора источника сигнала сброса драйвера A3941 при помощи перерезаемых перемычек «SJRES», расположенных на обратной стороне модуля предполагающих выбор источника сигнала либо с микроконтроллера Arduino, либо с кнопки на модуле «подтягивающей» сигнал сброса на минус источника питания.

По умолчанию сброс выполняется от кнопки с модуля.

Режимы работы мостовой схемы

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

В приведенной схеме открыты два полевых транзистора А и D, ток в активно-индуктивной нагрузке протекает как показано на рисунке слева направо, индуктивность нагрузки в это время запасает электромагнитную энергию протекающего тока.

Для изменения мощности, подводимой к нагрузке драйвер A3941 может реализовать три алгоритма широтно-импульсного управления:

  • коммутируя ключ A
  • коммутируя ключ D
  • коммутируя одновременно оба ключа A и D

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

Несимметричное управление, режим медленного затухания тока

В момент закрытия ключа A ЭДС самоиндукции замыкается по контуру: нагрузка – открытый ключ D – минус источника питания – обратный диод VD2 (закрытого ключа В) – нагрузка.

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

При закрытии ключа D общая работа схемы не сильно отличается от вышеописанной, с той разницей, что контур протекания тока самоиндукции в этом случае будет находиться в верхней половине Н-мостовой схемы.

Симметричное управление, режим быстрого затухания тока

Одновременное закрытие двух ключей A и D создают следующий контур протекания тока: нагрузка – обратный диод VD3 (закрытого ключа С) – плюс источника питания - источник питания – минус источника питания – обратный диод VD2 (закрытого ключа B) – нагрузка.

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

Быстрое затухание тока при выключении вентилей требуется для работы высокоскоростных контроллеров двигателей постоянного тока.

Режим синхронного выпрямления

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

Например, падение напряжения на P-N переходе встроенного обратного диода полевого транзистора IRLR8743 при токе 20 А составляет около 1 В. Максимальное сопротивление сток-исток того же транзистора в открытом состоянии составляет 3.1 мОм, что соответствует падению напряжения около 0.06 В при том же токе 20 А. Отличие более чем в 16 раз.

Потери на нагрев равны произведению тока на падение напряжения, поэтому для полевого транзистора IRLR8743 протекание тока самоиндукции порядка 20 А через сток-исток открытого полевого транзистора будет сопровождаться тепловыделением в 16 раз меньшим, чем при его протекании через обратный диод этого же транзистора.

Для уменьшения активных потерь на тепловыделение в силовых ключах, разработчики драйвера A3941 в режимах протекания тока самоиндукции предусмотрели возможность включения транзистора, шунтирующего P-N переход обратного диода. Для рассмотренных режимов работы схемы включение режима синхронного выпрямления (Synchronous Rectification – SR) будет сопровождаться дополнительным отпиранием полевых транзисторов, отмеченных на рисунке желтым цветом.

Максимальная частота ШИМ

Разработчиком драйвера А3941 предусмотрена аппаратно задаваемая (резистором R5) выдержка времени (Dead Time – бестоковая пауза) предотвращающая одновременное включение в одном полуплече транзисторов А и В или C и D, исключающая сквозные короткие замыкания через коммутируемые полевые транзисторы.

В модуле применен резистор R5 номиналом 100 кОм, что соответствует выдержке времени около 2.3 мкС, учитывая, что у полевого транзистора IRLR8743 время восстановления свойств p-n перехода составляет 21+17=38 нС с момента снятия сигнала управления с затвора транзистора, а время разряда емкости полевого транзистора и конденсатора накачки составляет порядка 450 нС, заданной выдержки вполне достаточно для надежного запирания транзистора.

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

Так для режима синхронного выпрямления, при управлении верхним полевым транзистором (PWMH) верхняя частота работы ШИМ рассчитывается как двойная задержка по 90 нС (tP(off)) - работа драйвера А3941 по последовательному формированию отпирающих сигналов на затворы транзисторов A и B, плюс двойная бестоковая пауза 2300 нС (tDEAD) - для восстановления свойств транзисторов A и B.

Получаем T = 2*90+2*2300 = 4780 нС = 4.78 мкС минимальное время цикла работы в режиме синхронного выпрямления, что соответствует максимальной частоте работы схемы f=1/Т = 209.2 кГц. Варьируя резистор R5 от 10 кОм до 500 кОм, бестоковые паузы изменяются в пределах от 80 нС до 6 мкС, получаем максимальные частоты ШИМ от 2.9 МГц до 82 кГЦ соответственно.

Временная диаграмма режима синхронного выпрямления при управлении верхним полевым транзистором А представлена ниже.

Схема измерения тока

Измерение тока в цепи нагрузки выполнено на датчике тока ACS714 с пределом измерений ±30 А. Датчик преобразует токовый сигнал в пропорциональный ему выходной аналоговый сигнал напряжения с чувствительностью 66 мВ/А.

Диапазон измерений тока от -30 А до 0 А соответствует выходному аналоговому сигналу напряжения с датчика от 0 В до +2,5 В соответственно. Диапазон измерений тока от 0 А до +30 А соответствует выходному аналоговому сигналу напряжения с датчика от +2,5 В до +5 В соответственно.

Время отклика выходного сигнала на входное изменение тока составляет 5 мкС.

Внутреннее сопротивление датчика составляет 1,2 мОм.

Максимальная частота (пульсации) входного тока, который способен измерить датчик и отразить в виде выходного сигнала напряжения составляет 80 кГц, что накладывает ограничение на максимальную частоту работы всей схемы в режиме ШИМ с возможностью контроля тока в силовой цепи.

Аппаратное решение датчика ACS714 позволяет подключать внешний конденсатор к схеме внутреннего усилителя датчика (предусмотрен вывод FILTER), тем самым позволяя собирать простой RC-фильтр на входе внутреннего усилителя и регулировать верхнюю полосу пропускания входного сигнала на выходе датчика.

Увеличение емкости конденсатора на выводе FILTER приводит к уменьшению полосы пропускания встроенного фильтра. С этой целью в модуле Power DC Shield предусмотрена простая схема выбора и подключения внешнего конденсатора к схеме внутреннего усилителя датчика ACS714 состоящая из конденсатора С15 – 1nF и С16 – 10uF подключаемого/отключаемого джампером JP2.

Управление A3941

В зависимости от требуемого режима работы мостовой схемы, управление драйвером A3941 предполагается подачей ШИМ сигнала на один из выводов микросхемы, а именно:

  • вывод PWMH (23-й пин микросхемы) осуществляется несимметричное управление верхними полевыми транзисторами A или С
  • вывод PWML (22-й пин микросхемы) осуществляется несимметричное управление нижними полевыми транзисторами B или D
  • вывод PHASE (19-й пин микросхемы) осуществляется симметричное управление полевыми транзисторами А и D или B и С в зависимости от требуемого направления вращения двигателя

Частота ШИМ сигнала управления, исходя из ограничений схемы измерения, возможна до 80 кГц.

Направление вращения двигателя (направление тока в нагрузке) в режимах несимметричного управления выполняется подачей логической 1 на вывод PHASE драйвера A3941.

Направление тока в нагрузке в режиме симметричного управления (направление вращения двигателя) выполняется формой ШИМ сигнала подаваемого на вывод PHASE. 50% ШИМ сигнал соответствует нулевому значению средней величины тока в нагрузке за период работы мостовой схемы, т.е. нулевой скорости вращения двигателя постоянного тока.

Режим синхронного выпрямления выполняется подачей логической 1 на вывод SR (21-й пин микросхемы) драйвера A3941.

Библиотека MTPowerMotor

Для упрощения работы с драйвером A3941 и опроса датчика тока ACS714, а также в рамках демонстрации работы с модулем, нами разработана библиотека MTPowerMotor в которой реализован конструктор класса MT_DCPowerMotor, в свою очередь имеющий несколько вызываемых методов, имеющие по аналогии с библиотекой для модуля Motor Shield v2 или v3 общие наименования и функционал.

Библиотека доступна для свободного скачивания: http://www.freeduino.ru/arduino/files/MTPowerMotor.zip

Конструктор класса

Вызов конструктора для создания класса:

MT_DCPowerMotor имя_класса(режим_работы_мостовой_схемы);

Задаваемый параметр класса режим_работы_мостовой_схемы может принимать три значения: PWMH, PWML, PWMPHASE указывающий на соответствующий режим работы мостовой схемы.

Например, создадим объект motor c режимом несимметричного управления верхними полевыми транзисторами:

MT_DCPowerMotor motor(PWMH);

Метод run

Метод задаёт направление вращения двигателя командами FORWARD, BACKWARD, либо выполняет останов двигателя командой RELEASE.

Например, у объекта motor вызовем метод run задающий направление вращения двигателя вперед:

motor.run(FORWARD);

Метод setSpeed

Метод setSpeed задаёт скорость вращения двигателя. Для режимов PWMH, PWML скорость задается в диапазоне от 0 до 255, а для режима PWMPHASE в диапазонах от 0 до 126 - вращение назад и от 127 до 255 - вращение вперед.

Например, у объекта motor вызовем метод setSpeed задающий максимальную скорость для режима PWMH:

motor.setSpeed(255);

Метод setPwmFrequency

Метод устанавливает частоту ШИМ на соответствующем выводе для режимов PWMH, PWML, PWMPHASE. Номера выводов (пинов) на управляющей плате Freeduino/Arduino соответствуют следующим режимам работы модуля:

PINPWMH – 9

PINPWML – 6

PINPHASE – 5

Диапазоны задаваемых частот:

Частота ШИМ на пине PinPWMH: 1024 - 30,52 Гц; 256 - 122,07 Гц; 64 - 488,28 Гц; 8 - 3906,25 Гц; 1 - 31250,00 Гц.

Частота ШИМ на пине PinPWML: 1024 - 61,04 Гц; 256 - 244,14 Гц; 64 - 976,56 Гц; 8 - 7812,50 Гц; 1 - 62500,00 Гц.

Частота ШИМ на пине PinPhase: 1024 - 61,04 Гц; 256 - 244,14 Гц; 64 - 976,56 Гц; 8 - 7812,50 Гц; 1 - 62500,00 Гц.

У объекта motor вызовем метод setPwmFrequency задающий частоту ШИМ 3906,25 Гц для работы мостовой схеме в режиме PWMH:

setPwmFrequency(PinPWMH, 8);

Синхронное выпрямление

Режим включается подачей логической 1 на вывод 21 драйвера A3941, который соединен с выводом 7 управляющей платы Freeduino/Arduino:

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

Отключение режима задается вызовом

digitalWrite(PINSR, LOW);

Включение режима задается вызовом

digitalWrite(PINSR, HIGH);

Метод getI

Метод возвращает мгновенное значение тока, протекающее в силовой цепи с дискретностью измерения 1/512, что соответствует 30/512 = 0,0585 А. По умолчанию считывание показаний датчика тока выполняется с вывода A5 микроконтроллера.

Занесем в переменную I текущее значение тока:

I = motor.getI(A5);

Диагностика состояния

Считывание сигналов состояния модуля FF1 и FF2 выполняется обращением к советующим выводам. Номера выводов (пинов) на управляющей плате Freeduino/Arduino соответствуют следующим сигналам состояния:

PINFF1 – 4;

PINFF1 – 2;

Считаем сигналы состояния модуля и занесем их в переменные:

StateFF1 = digitalRead(PINFF1); StateFF2 = digitalRead(PINFF2);

Пример программы

Пример программы поочередного вращения двигателя со сменой возможных режимов работы

#include <MTPowerMotor.h>  //Подключаем заголовочный файл библиотеки

MT_DCPowerMotor motor(PWMH); // управление верхними ключами PWMH

float I = 0;
int StateFF1 = 0;  // флаги состояний
int StateFF2 = 0;  // флаги состояний

void setup() {
  motor.setPwmFrequency(PWMH, 1);// задаем частоту ШИМ 31250,00 Гц. на выводе 9
  Serial.begin(9600);
}

void display() {                 // процедура опроса и вывода в последовательный порт возможных состояний модуля
  StateFF1 = digitalRead(PINFF1);
  StateFF2 = digitalRead(PINFF2);
  Serial.print("FF1 = ");
  Serial.print(StateFF1);
  Serial.print("; FF2 = ");
  Serial.print(StateFF2);
  I = motor.getI(A5);
  Serial.print("; I = " );
  Serial.println(I);
}

void loop() {
  int i;
  motor.run(FORWARD);            // задаем направление вращения вперед
  for (i = 0; i < 255; i++) {
    motor.setSpeed(i);           // в цикле увеличиваем скорость вращения от 0 до 255
    display();
    delay(10);
  }
  for (i = 255; i != 0; i--) {
    motor.setSpeed(i);           // в цикле уменьшаем скорость вращения от 255 до 0
    display();
    delay(10);
  }
  motor.run(BACKWARD);           // задаем направление вращения назад
  for (i = 0; i < 255; i++) {
    motor.setSpeed(i);           // в цикле увеличиваем скорость вращения от 0 до 255
    display();                   // опрашиваем и выводим в последовательный порт текущие переменные модуля
    delay(10);
  }
  for (i = 255; i != 0; i--) {
    motor.setSpeed(i);           // в цикле уменьшаем скорость вращения от 255 до 0
    display();                   // опрашиваем и выводим в последовательный порт текущие переменные модуля
    delay(10);
  }
  delay(1000);
}