Search Code

โครงการ: RJMD-R2101 H-Bridge MOSFET Motor Driver

โครงการ: RJMD-R2101 H-Bridge MOSFET Motor Driver

ในบทแนะนำนี้ เราจะสำรวจวิธีการควบคุมมอเตอร์ DC โดยใช้ตัวขับมอเตอร์ MOSFET H-Bridge รุ่น RJMD-R2101 โครงการนี้จะแสดงให้เห็นถึงวิธีการใช้ 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 เป็นไดรเวอร์ความเร็วสูงที่ออกแบบมาเพื่อขับ MOSFET N-channel ในการตั้งค่าแบบครึ่งสะพาน มันช่วยให้การสลับและควบคุม MOSFETs มีประสิทธิภาพ ทำให้มอเตอร์ทำงานได้อย่างราบรื่น

MOSFETs IRFZ44N ทำหน้าที่เป็นองค์ประกอบในการสลับที่ควบคุมพลังงานที่ส่งไปยังมอเตอร์ เมื่อถูกเปิดใช้งานโดย IR2101 MOSFETs เหล่านี้สามารถจัดการกับกระแสไฟฟ้าสูงได้ โดยให้พลังงานที่จำเป็นในการขับเคลื่อนมอเตอร์ องค์ประกอบเหล่านี้ทำงานร่วมกันเพื่อให้สามารถควบคุมทิศทางและความเร็วของมอเตอร์ได้อย่างแม่นยำ

รายละเอียดแผ่นข้อมูล

ผู้ผลิตอินเตอร์เนชันแนลเรคติไฟเออร์
หมายเลขชิ้นส่วนIRFZ44N
แรงดันไฟฟ้า Logic/IO10 โวลต์ (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-Bridge

  • ตรวจสอบให้แน่ใจว่ามีการระบายความร้อนที่เหมาะสมสำหรับ MOSFETs เพื่อป้องกันการร้อนเกินไป
  • ใช้ PWM สำหรับการควบคุมความเร็วเพื่อให้การทำงานของมอเตอร์ราบรื่น
  • ตรวจสอบว่าแรงดันไฟฟ้าจ่ายไม่เกินค่าที่กำหนดของ 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 ตัวที่สอง ให้เชื่อมสัญญาณ PWM ไปที่PWM2_HIN2_PIN(pin 3) และขาเปิดใช้งานไปยังEN2_LIN2_PIN(pin 2).

RJMD-R2101 H-Bridge MOSFET Motor Driver 5

ให้แน่ใจว่าได้เชื่อมต่อขั้วของมอเตอร์กับเอาต์พุตที่เหมาะสมของ H-Bridge หากคุณกำลังใช้ Arduino ให้เชื่อมต่อขา PWM กับขาที่กำหนดบนบอร์ด 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 สเก็ตช์ควบคุมมอเตอร์  
 * ควบคุมมอเตอร์ DC ด้วยความเร็ว เบรก และหยุด  
 * MOSFET IRF44ZN ใช้สำหรับด้านสูงและด้านต่ำ  
 * IR2101 ไดรเวอร์เกตใช้ขับ MOSFET  
 * คุณสามารถรับโค้ด ไฟล์ Gerber สำหรับ PCB เพื่อผลิต และแผนผังการเดินสาย  
 * จาก http://robojax.com/RJT390  
 * 
 * เขียนโดย Ahmad Shamshiri เมื่อวันที่ 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);
  }

}




แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

Gerber files