Код для поиска

Проект: RJMD-R2101 H-Bridge MOSFET Драйвер мотора

Проект: RJMD-R2101 H-Bridge MOSFET Драйвер мотора

В этом учебном пособии мы рассмотрим, как управлять DC-двигателем с помощью MOSFET-драйвера мотора RJMD-R2101 H-Bridge. Этот проект продемонстрирует, как эффективно использовать MOSFET-ы IRFZ44N в сочетании с драйверами затворов IR2101 для управления скоростью и направлением мотора. К концу этого руководства у вас будет функциональная система управления двигателем, которая может ускоряться, тормозить и плавно останавливать мотор.

RJMD-R2101 H-Bridge MOSFET Motor Driver 0

По мере продвижения мы рассмотрим необходимые аппаратные компоненты, инструкции по подключению и примеры кода, чтобы прояснить, как все работает вместе. Для более наглядного представления я рекомендую посмотреть связанное видео (в видео на 02:15).

RJMD-R2101 H-Bridge MOSFET Motor Driver 3

Объяснение аппаратного обеспечения

Основные компоненты этого проекта - драйвер затвора IR2101 и MOSFET IRFZ44N. IR2101 - это высокоскоростной драйвер, предназначенный для управления N-канальными MOSFET в конфигурации полумоста. Он обеспечивает эффективное переключение и управление MOSFET, позволяя двигателю работать плавно.

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

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

ПроизводительМеждународный выпрямитель
Номер деталиIRFZ44N
Логическое/входное напряжение10 В (VGS)
Напряжение питания55 В (VDS)
Выходной ток (на канал)49 A (макс)
Пиковый ток (на канал)120 A (макс)
Руководство по частоте ШИМдо 100 кГц
Входные логические пороги2.0 В (VGS(th))
Падение напряжения / RДС(включено)/ насыщение0,025 Ом (макс)
Термические пределы175 °C (макс)
УпаковкаTO-220
Заметки / вариантыЧасто используется в конфигурациях H-моста

  • Обеспечьте правильное теплоотведение для МОП-транзисторов, чтобы предотвратить перегрев.
  • Используйте ШИМ для управления скоростью, чтобы обеспечить плавную работу мотора.
  • Проверьте, чтобы напряжение источника питания не превышало характеристики MOSFET.
  • Обеспечьте правильную полярность при подключении мотора, чтобы избежать повреждений.
  • Используйте декуплирующие конденсаторы рядом с источником питания для стабилизации напряжения.

Инструкции по проводке

Arduino wiring for H-bridge IR2101 with IRFZ44N
Arduino wiring for H-bridge IR2101 with IRFZ44N

Чтобы подключить драйвер мотора RJMD-R2101, начните с подключения источника питания. Подключите вывод VCC драйвера к источнику питания 5V. Вывод GND должен быть подключен к земле источника питания. Далее подключите управляющие выводы: сигнал PWM для первого MOSFET должен идти на выводPWM1_HIN1_PIN(что является выводом 9), а вывод включения для первого MOSFET должен подключаться кEN1_LIN1_PIN(pin 8). Для второго MOSFET подключите сигнал ШИМ кPWM2_HIN2_PIN(пин 3) и пин включения кEN2_LIN2_PIN(пин 2).

RJMD-R2101 H-Bridge MOSFET Motor Driver 5

Убедитесь, что вы подключили клеммы мотора к соответствующим выходам H-моста. Если вы используете Arduino, подключите выводы ШИМ к назначенным выводам на плате Arduino. Например, подключитеPWM1_HIN1_PINк пину 9,EN1_LIN1_PINк пину 8 и так далее. Эта настройка позволит вам эффективно управлять мотором.

Примеры кода и пошаговое руководство

Секция кода включает функции для управления скоростью и направлением мотора с использованием определенных выводов. Ниже приведен фрагмент из эскиза управления мотором:

const int PWM1_HIN1_PIN= 9; // PWM pin for first MOSFET
const int EN1_LIN1_PIN= 8; // Enable pin for first MOSFET

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

void Motor(boolean direction, int speed=0) {
    int speedPWM = map(speed, 0, 100, 0, 255);
    // Control motor direction and speed here
}

Эта функция принимает на вход аdirectionпараметр, определяющий, должен ли мотор вращаться по часовой стрелке или против часовой стрелки.speedпараметр сопоставляется с значением ШИМ, что позволяет плавно управлять скоростью двигателя.

void stop() {
    digitalWrite(EN1_LIN1_PIN, LOW); // Disable first MOSFET
}

Тотstopфункция отключает мотор, устанавливая низкий уровень на выводе включения, эффективно останавливая любой ток, проходящий через мотор. Это обеспечивает быструю остановку без повреждения компонентов.

Для полного кода, пожалуйста, обратитесь к полной программе, загруженной ниже статьи.

Демонстрация / Что ожидать

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

Во время тестирования вы также можете заметить изменение скорости мотора в зависимости от отправленных значений ШИМ. Убедитесь, что все соединения надежны, чтобы избежать перебоев в подаче электроэнергии, что может повлиять на производительность (в видео на 05:45).

Временные метки видео

  • 00:00- Введение в проект
  • 02:15- Обзор аппаратных компонентов
  • 05:45- Демонстрация управления мотором
  • 08:30- Обзор кода и объяснение

Изображения

RJMD-R2101 H-Bridge MOSFET Motor Driver 0
RJMD-R2101 H-Bridge MOSFET Motor Driver 0
RJMD-R2101 H-Bridge MOSFET Motor Driver 1
RJMD-R2101 H-Bridge MOSFET Motor Driver 1
RJMD-R2101 H-Bridge MOSFET Motor Driver 2
RJMD-R2101 H-Bridge MOSFET Motor Driver 2
RJMD-R2101 H-Bridge MOSFET Motor Driver 3
RJMD-R2101 H-Bridge MOSFET Motor Driver 3
RJMD-R2101 H-Bridge MOSFET Motor Driver 4
RJMD-R2101 H-Bridge MOSFET Motor Driver 4
RJMD-R2101 H-Bridge MOSFET Motor Driver 5
RJMD-R2101 H-Bridge MOSFET Motor Driver 5
Arduino wiring for H-bridge IR2101 with IRFZ44N
Arduino wiring for H-bridge IR2101 with IRFZ44N
796-Arduino H-Bridge code to control IRFZ44N Mosfets using IR2101 gate drivers
Язык: C++
/*
 * IR2101 Схема управления двигателем
 * Управляет постоянным двигателем с регулировкой скорости, торможением и остановкой.
 * MOSFET IRF44ZN используется для верхнего и нижнего ключей.
 * Драйвер IR2101 используется для управления MOSFET.
 * Вы можете получить код, гербер-файл для производства печатной платы и схему подключения
 * с сайта http://robojax.com/RJT390
 * 
 * написано Ахмадом Шамширом 19 ноября 2024 года
 * www.Robojax.com https://youTube.com/@robojax
 */
const int PWM1_HIN1_PIN= 9; // должен быть пинта с ~
const int EN1_LIN1_PIN= 8;

const int PWM2_HIN2_PIN= 3; // должен быть пинта с ~
const int EN2_LIN2_PIN= 2;

const boolean CW =1;
const boolean CCW =0;


void Motor(boolean, int); // прототип
void brake(); // прототип
void stop(); // прототип

void setup() {
  Serial.begin(9600);
  pinMode(PWM1_HIN1_PIN, OUTPUT);
  pinMode(EN1_LIN1_PIN, OUTPUT);

  pinMode(PWM2_HIN2_PIN, OUTPUT);
  pinMode(EN2_LIN2_PIN, OUTPUT);

}

void loop() {
  Motor(CW, 100);
  delay(5000);

  brake();
  delay(3000);

  Motor(CCW, 100);
  delay(5000);

  stop();
  delay(3000);

  Motor(CCW, 50); // в CW на 50% скорости
  delay(5000);

  brake();
  delay(3000);
  for(int i=0; i<=100; i++)
  {
    Motor(CCW, i);
    delay(100);
  }
  delay(3000);
  for(int i=100; i>=0; i--)
  {
    Motor(CCW, i);
    delay(100);
  }
  brake();
  delay(3000);
}


void stop()
{
    Serial.println ("=== Stop");
    digitalWrite(EN1_LIN1_PIN, LOW);
    digitalWrite(PWM1_HIN1_PIN, LOW);
    digitalWrite(EN2_LIN2_PIN, LOW);
    digitalWrite(PWM2_HIN2_PIN, LOW);
}
void brake()
{
    Serial.println ("=== Brake");
    digitalWrite(PWM1_HIN1_PIN, HIGH);
    digitalWrite(EN1_LIN1_PIN, LOW);
    digitalWrite(PWM2_HIN2_PIN, HIGH);
    digitalWrite(EN2_LIN2_PIN, LOW);
}


void Motor(boolean direction, int speed=0)
{
  int speedPWM = map(speed, 0, 100, 0, 255);
  Serial.print("Speed: "); Serial.print (speedPWM);
  Serial.print("(");Serial.print(speed);Serial.print("%)");


  if(direction){
   Serial.print(" dir: ");Serial.println ("CW");

    analogWrite(PWM1_HIN1_PIN, speedPWM);
    digitalWrite(EN1_LIN1_PIN, HIGH);

    digitalWrite(PWM2_HIN2_PIN, LOW);
    digitalWrite(EN2_LIN2_PIN, LOW);

  }else{
    Serial.print(" dir: ");Serial.println ("CCW");

    digitalWrite(PWM1_HIN1_PIN, LOW);
    digitalWrite(EN1_LIN1_PIN, LOW);

    analogWrite(PWM2_HIN2_PIN, speedPWM);
    digitalWrite(EN2_LIN2_PIN, HIGH);
  }

}




Ресурсы и ссылки

Файлы📁

Другие файлы