โครงการ: RJMD-R2101 H-Bridge MOSFET Motor Driver
ในบทแนะนำนี้ เราจะสำรวจวิธีการควบคุมมอเตอร์ DC โดยใช้ตัวขับมอเตอร์ MOSFET H-Bridge รุ่น RJMD-R2101 โครงการนี้จะแสดงให้เห็นถึงวิธีการใช้ MOSFET IRFZ44N อย่างมีประสิทธิภาพร่วมกับตัวขับประตู IR2101 เพื่อควบคุมความเร็วและทิศทางของมอเตอร์ เมื่อสิ้นสุดคู่มือนี้ คุณจะมีการตั้งค่าการควบคุมมอเตอร์ที่ใช้งานได้ซึ่งสามารถเร่งความเร็ว เบรก และหยุดมอเตอร์ได้อย่างราบรื่น

เมื่อเราเดินหน้าไป เราจะพูดถึงส่วนประกอบฮาร์ดแวร์ที่จำเป็น คำแนะนำการเดินสาย และตัวอย่างโค้ดเพื่อชี้แจงว่าทุกอย่างทำงานร่วมกันอย่างไร สำหรับการแสดงผลที่ชัดเจนยิ่งขึ้น ฉันขอแนะนำให้ดูวิดีโอที่เกี่ยวข้อง (ในวิดีโอที่ 02:15)

อธิบายฮาร์ดแวร์
ส่วนประกอบหลักในโครงการนี้คือไดรเวอร์ IR2101 และ MOSFET IRFZ44N ไดรเวอร์ IR2101 เป็นไดรเวอร์ความเร็วสูงที่ออกแบบมาเพื่อขับ MOSFET N-channel ในการตั้งค่าแบบครึ่งสะพาน มันช่วยให้การสลับและควบคุม MOSFETs มีประสิทธิภาพ ทำให้มอเตอร์ทำงานได้อย่างราบรื่น
MOSFETs IRFZ44N ทำหน้าที่เป็นองค์ประกอบในการสลับที่ควบคุมพลังงานที่ส่งไปยังมอเตอร์ เมื่อถูกเปิดใช้งานโดย IR2101 MOSFETs เหล่านี้สามารถจัดการกับกระแสไฟฟ้าสูงได้ โดยให้พลังงานที่จำเป็นในการขับเคลื่อนมอเตอร์ องค์ประกอบเหล่านี้ทำงานร่วมกันเพื่อให้สามารถควบคุมทิศทางและความเร็วของมอเตอร์ได้อย่างแม่นยำ
รายละเอียดแผ่นข้อมูล
| ผู้ผลิต | อินเตอร์เนชันแนลเรคติไฟเออร์ |
|---|---|
| หมายเลขชิ้นส่วน | IRFZ44N |
| แรงดันไฟฟ้า Logic/IO | 10 โวลต์ (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
- ตรวจสอบให้แน่ใจว่าขั้วไฟฟ้าถูกต้องเมื่อเดินสายมอเตอร์เพื่อหลีกเลี่ยงความเสียหาย
- ใช้ตัวเก็บประจุแบบแยกใกล้กับแหล่งจ่ายไฟเพื่อทำให้แรงดันไฟฟ้าคงที่
คำแนะนำการเดินสาย

เพื่อเชื่อมต่อไดรเวอร์มอเตอร์ 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).

ให้แน่ใจว่าได้เชื่อมต่อขั้วของมอเตอร์กับเอาต์พุตที่เหมาะสมของ 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- การอธิบายและการเดินผ่านโค้ด
ภาพ
/*
* 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);
}
}
แหล่งข้อมูลและเอกสารอ้างอิง
-
ภายนอก
-
ภายนอกIR2101 Gate Driver Datasheetinfineon.com
-
ภายนอกIRFZ44N MOSFET datasheetinfineon.com
ไฟล์📁
Gerber files
-
RJMD-R2101_H-Bridge_Motor_Driver_Manufacturing_Pack.zipH-Bridge MOSFET Motor Driver all three files that you may need to place order. Contains: PCB Layers Gerber zip, BMO excel file and coordinate file
RJMD-R2101_3_file_to Order.zip0.17 MB