Search Code

프로젝트: RJMD-R2101 H-브리지 MOSFET 모터 드라이버

프로젝트: RJMD-R2101 H-브리지 MOSFET 모터 드라이버

이 튜토리얼에서는 RJMD-R2101 H-브리지 MOSFET 모터 드라이버를 사용하여 DC 모터를 제어하는 방법을 탐구할 것입니다. 이 프로젝트는 IRFZ44N MOSFET를 IR2101 게이트 드라이버와 함께 효과적으로 활용하여 모터의 속도와 방향을 제어하는 방법을 보여줄 것입니다. 이 가이드를 마치면 모터를 부드럽게 가속하고, 제동하고, 정지시킬 수 있는 기능적인 모터 제어 설정을 갖추게 될 것입니다.

RJMD-R2101 H-Bridge MOSFET Motor Driver 0

우리가 진행함에 따라 필요한 하드웨어 구성 요소, 배선 지침 및 모든 것이 어떻게 함께 작동하는지를 명확히 하기 위한 예제 코드 조각을 다룰 것입니다. 더 시각적인 표현을 원하신다면 관련 비디오(비디오 02:15)를 시청하는 것을 추천합니다.

RJMD-R2101 H-Bridge MOSFET Motor Driver 3

하드웨어 설명

이 프로젝트의 주요 구성 요소는 IR2101 게이트 드라이버와 IRFZ44N MOSFET입니다. IR2101은 하프 브리지 구성에서 N채널 MOSFET을 구동하기 위해 설계된 고속 드라이버입니다. 이는 MOSFET의 효율적인 스위칭 및 제어를 가능하게 하여 모터가 원활하게 작동하도록 합니다.

IRFZ44N MOSFET는 모터에 전달되는 전력을 제어하는 스위칭 요소로 작용합니다. IR2101에 의해 활성화되면, 이 MOSFET는 높은 전류를 처리할 수 있어 모터를 구동하는 데 필요한 전력을 제공합니다. 이 구성 요소들은 함께 모터의 방향과 속도를 정밀하게 제어할 수 있게 해줍니다.

데이터시트 세부정보

제조업체국제 정류기
부품 번호IRFZ44N
로직/입출력 전압10 V (VGS)
공급 전압55 V (VDS)
출력 전류 (채널당)49 A (최대)
채널당 피크 전류120 A (최대)
PWM 주파수 안내최대 100 kHz
입력 논리 임계값2.0 V (VGS(th))
전압 강하 / RDS(on)/ 포화0.025 Ω (최대)
열 한계175 °C (최대)
패키지TO-220
노트 / 변형H-브리지 구성에서 일반적으로 사용됨

  • MOSFET의 과열을 방지하기 위해 적절한 히트 싱크를 확보하십시오.
  • 속도 제어를 위해 PWM을 사용하여 부드러운 모터 작동을 달성하십시오.
  • 전원 공급 전압이 MOSFET 정격을 초과하지 않는지 확인하십시오.
  • 모터를 배선할 때 손상을 피하기 위해 올바른 극성을 확인하세요.
  • 전원 공급 장치 근처에 디커플링 커패시터를 사용하여 전압을 안정화하십시오.

배선 지침

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

RJMD-R2101 모터 드라이버를 연결하려면 먼저 전원 공급 장치를 연결합니다. 드라이버의 VCC 핀을 5V 전원에 연결합니다. GND 핀은 전원 공급 장치의 접지에 연결해야 합니다. 다음으로 제어 핀을 연결합니다: 첫 번째 MOSFET의 PWM 신호는 핀에 연결해야 합니다.PWM1_HIN1_PIN(핀 9)이며, 첫 번째 MOSFET의 활성화 핀은 연결되어야 합니다.EN1_LIN1_PIN(pin 8). 두 번째 MOSFET의 경우, PWM 신호를 연결하십시오.PWM2_HIN2_PIN(pin 3) 및 활성화 핀에EN2_LIN2_PIN(pin 2).

RJMD-R2101 H-Bridge MOSFET Motor Driver 5

모터 단자를 H-브리지의 적절한 출력에 연결해야 합니다. 아두이노를 사용하는 경우 PWM 핀을 아두이노 보드의 지정된 핀에 연결하세요. 예를 들어, 연결하십시오.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매개변수가 PWM 값에 매핑되어 모터 속도를 부드럽게 제어할 수 있습니다.

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

Thestop모터를 비활성화하는 기능은 활성화 핀을 낮게 설정하여 모터를 통해 전류 흐름을 효과적으로 중지시킵니다. 이는 구성 요소를 손상시키지 않으면서 빠른 정지를 보장합니다.

전체 코드는 기사 아래에 로드된 완전한 프로그램을 참조하십시오.

시연 / 기대할 사항

설정이 완료되면 모터가 아두이노에서 전송된 명령에 반응하는 것을 관찰할 수 있어야 합니다. 모터는 지정된 방향으로 회전하며, PWM 신호를 사용하여 속도를 조절할 수 있습니다. 주의해야 할 일반적인 문제로는 극성이 반대로 연결된 경우가 있으며, 이로 인해 모터가 반대 방향으로 회전할 수 있고, 부유 입력으로 인해 불규칙한 동작이 발생할 수 있습니다.

테스트 중에 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 모터 제어 스케치  
 * 속도, 브레이크 및 정지로 DC 모터를 제어합니다.  
 * 고측 및 저측에 사용되는 IRF44ZN 모스펫.  
 * MOSFET을 구동하기 위해 사용되는 IR2101 게이트 드라이버.  
 * 코드, PCB 제작을 위한 거버 파일 및 배선 다이어그램을 http://robojax.com/RJT390에서 받을 수 있습니다.  
 * 
 * 2024년 11월 19일 Ahmad Shamshiri 작성  
 * 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);
  }

}




자원 및 참고자료

파일📁

Gerber files