Tìm kiếm mã

Dự án: RJMD-R2101 Bộ điều khiển động cơ MOSFET H-Bridge

Dự án: RJMD-R2101 Bộ điều khiển động cơ MOSFET H-Bridge

Trong hướng dẫn này, chúng ta sẽ khám phá cách điều khiển một động cơ DC sử dụng bộ điều khiển động cơ MOSFET H-Bridge RJMD-R2101. Dự án này sẽ chứng minh cách sử dụng hiệu quả các MOSFET IRFZ44N kết hợp với các bộ điều khiển cổng IR2101 để điều khiển tốc độ và hướng của động cơ. Cuối cùng của hướng dẫn này, bạn sẽ có một thiết lập điều khiển động cơ hoạt động có thể tăng tốc, phanh và dừng động cơ một cách mượt mà.

RJMD-R2101 H-Bridge MOSFET Motor Driver 0

Khi chúng ta tiến triển, chúng ta sẽ đề cập đến các thành phần phần cứng cần thiết, hướng dẫn đấu dây và các đoạn mã ví dụ để làm rõ cách mọi thứ hoạt động cùng nhau. Để có một hình ảnh trực quan hơn, tôi khuyên bạn nên xem video liên quan (trong video tại 02:15).

RJMD-R2101 H-Bridge MOSFET Motor Driver 3

Giải thích phần cứng

Các thành phần chính trong dự án này là bộ điều khiển IR2101 và các MOSFET IRFZ44N. IR2101 là một bộ điều khiển tốc độ cao được thiết kế để điều khiển các MOSFET N-channel trong cấu hình cầu nửa. Nó cho phép chuyển mạch hiệu quả và kiểm soát các MOSFET, giúp động cơ hoạt động mượt mà.

Các MOSFET IRFZ44N hoạt động như các phần tử chuyển mạch điều khiển công suất cung cấp cho động cơ. Khi được kích hoạt bởi IR2101, các MOSFET này có thể xử lý dòng điện cao, cung cấp công suất cần thiết để điều khiển động cơ. Cùng nhau, các thành phần này cho phép kiểm soát chính xác hướng và tốc độ của động cơ.

Chi tiết bảng dữ liệu

Nhà sản xuấtInternational Rectifier
Số hiệu bộ phậnIRFZ44N
Điện áp Logic/IO10 V (VGS)
Điện áp cung cấp55 V (VDS)
Dòng điện đầu ra (mỗi kênh)49 A (tối đa)
Dòng điện đỉnh (mỗi kênh)120 A (tối đa)
Hướng dẫn tần số PWMlên đến 100 kHz
Ngưỡng logic đầu vào2.0 V (VGS(th))
Sụt áp / RDS(on)/ bão hòa0,025 Ω (tối đa)
Giới hạn nhiệt độ175 °C (tối đa)
GóiTO-220
Ghi chú / biến thểThường được sử dụng trong các cấu hình H-Bridge

  • Đảm bảo tản nhiệt đúng cách cho các MOSFET để ngăn ngừa quá nhiệt.
  • Sử dụng PWM để điều khiển tốc độ nhằm đạt được hoạt động mượt mà của động cơ.
  • Xác minh rằng điện áp nguồn cung cấp không vượt quá các chỉ số của MOSFET.
  • Đảm bảo đúng cực khi nối dây động cơ để tránh hư hỏng.
  • Sử dụng tụ điện tách rời gần nguồn điện để ổn định điện áp.

Hướng dẫn đấu dây

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

Để kết nối bộ điều khiển động cơ RJMD-R2101, bắt đầu bằng cách kết nối nguồn điện. Kết nối chân VCC của bộ điều khiển với nguồn điện 5V. Chân GND nên được kết nối với mặt đất của nguồn điện. Tiếp theo, kết nối các chân điều khiển: tín hiệu PWM cho MOSFET đầu tiên nên được kết nối với chânPWM1_HIN1_PIN(pin 9), và chân kích hoạt cho MOSFET đầu tiên nên kết nối vớiEN1_LIN1_PIN(pin 8). Đối với MOSFET thứ hai, kết nối tín hiệu PWM tớiPWM2_HIN2_PIN(pin 3) và chân kích hoạt đểEN2_LIN2_PIN(pin 2).

RJMD-R2101 H-Bridge MOSFET Motor Driver 5

Đảm bảo kết nối các đầu cuối của động cơ với các đầu ra thích hợp của H-Bridge. Nếu bạn đang sử dụng Arduino, hãy kết nối các chân PWM với các chân được chỉ định trên bảng mạch Arduino. Ví dụ, kết nốiPWM1_HIN1_PINđể ghim 9,EN1_LIN1_PINđể gắn vào chân 8, và cứ như vậy. Cài đặt này sẽ cho phép bạn điều khiển động cơ một cách hiệu quả.

Ví dụ mã & Hướng dẫn

Phần mã bao gồm các hàm để điều khiển tốc độ và hướng của động cơ sử dụng các chân đã được định nghĩa. Dưới đây là một đoạn trích từ bản phác thảo điều khiển động cơ:

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

Trong phần này, chúng tôi định nghĩa các chân được sử dụng để điều khiển MOSFET đầu tiên.PWM1_HIN1_PINđược sử dụng để kiểm soát tốc độ, trong khi đóEN1_LIN1_PINkích hoạt bộ điều khiển động cơ.

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

Hàm này nhận vào mộtdirectiontham số để xác định xem động cơ nên quay theo chiều kim đồng hồ hay ngược chiều kim đồng hồ.speedtham số được ánh xạ đến giá trị PWM, cho phép điều khiển mượt mà tốc độ động cơ.

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

Cáistopchức năng vô hiệu hóa động cơ bằng cách đặt chân cho phép ở mức thấp, hiệu quả là ngăn chặn bất kỳ dòng điện nào chảy qua động cơ. Điều này đảm bảo dừng nhanh mà không làm hỏng các linh kiện.

Để xem mã đầy đủ, vui lòng tham khảo chương trình hoàn chỉnh được tải bên dưới bài viết.

Buổi trình diễn / Những gì cần mong đợi

Khi quá trình thiết lập hoàn tất, bạn nên quan sát động cơ phản hồi với các lệnh được gửi từ Arduino. Động cơ sẽ quay theo hướng đã chỉ định, và bạn có thể điều chỉnh tốc độ bằng cách sử dụng tín hiệu PWM. Những vấn đề phổ biến cần chú ý bao gồm kết nối đảo cực, có thể khiến động cơ chạy theo hướng ngược lại, và các đầu vào nổi có thể dẫn đến hành vi không ổn định.

Trong quá trình thử nghiệm, bạn cũng có thể nhận thấy tốc độ động cơ thay đổi dựa trên các giá trị PWM được gửi. Đảm bảo tất cả các kết nối đều an toàn để tránh gián đoạn trong dòng điện, điều này có thể ảnh hưởng đến hiệu suất (trong video tại 05:45).

Thời gian video

  • 00:00- Giới thiệu về dự án
  • 02:15- Tổng quan về các thành phần phần cứng
  • 05:45- Biểu diễn điều khiển động cơ
  • 08:30- Hướng dẫn và giải thích mã

Hình ảnh

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
Ngôn ngữ: C++
/*
IR2101 Motor Contorl Sketch
Controls DC motor with speed, brake and stop
IRF44ZN Mosfets used for high side and low side.
IR2101 Gate driver used to drive the MOSFETs.
you can ge the code, the gerbar file for PCB to produce and wirign diagram 
from http://robojax.com/RJT390

written by Ahmad Shamshiri on Nov 19, 2024
www.Robojax.com https://youTube.com/@robojax
*/
const int PWM1_HIN1_PIN= 9;//must be a pint with ~
const int EN1_LIN1_PIN= 8;

const int PWM2_HIN2_PIN= 3;//must be a pint with ~
const int EN2_LIN2_PIN= 2;

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


void Motor(boolean, int);//prototype
void brake();//prototype
void stop();//prototype

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);//in CW at 50% speed
  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);
  }
 
}



Tài nguyên & tài liệu tham khảo

Tập tin📁

Gerber files