كود البحث

H-Bridge 1: بناء محرك H-bridge على لوحة تجريبية باستخدام ترانزستورات دارلينغتون TIP120 و TIP125

H-Bridge 1: بناء محرك H-bridge على لوحة تجريبية باستخدام ترانزستورات دارلينغتون TIP120 و TIP125

سيرشدك هذا الدليل إلى بناء محرك H-bridge باستخدام ترانزستورات TIP120 وTIP125 من نوع دارلينجتون على لوحة تجريبية. هذه الإعدادات مثالية للتحكم في اتجاه وسرعة محرك تيار مستمر، وهو أمر أساسي لمشاريع الروبوتات والأتمتة المختلفة. بنهاية هذا الدليل، ستكون قادرًا على التحكم في محرك مع دوران في اتجاه عقارب الساعة وعكس اتجاه عقارب الساعة، بالإضافة إلى تعديل السرعة.

في هذا الدليل، سنستخدم لوحة أردوينو للتحكم في المحرك. يسمح تكوين جسر H بعكس اتجاه المحرك من خلال التحكم في إشارات الإدخال المرسلة إلى الترانزستورات. هذه نقطة حاسمة للعديد من التطبيقات، مثل الأذرع الروبوتية أو الروبوتات المتنقلة التي تتطلب تحكمًا دقيقًا في المحرك. لمزيد من التوضيح، يرجى الرجوع إلى الفيديو (في الفيديو عند 00:00).

شرح الأجهزة

تشمل المكونات الرئيسية لهذا المشروع ترانزستورات TIP120 وTIP125، والتي تُستخدم كمفاتيح للتحكم في تشغيل المحرك. TIP120 هو ترانزستور دارلينجتون من نوع NPN، وTIP125 هو ترانزستور دارلينجتون من نوع PNP. معًا، يشكلان تكوين H-bridge، مما يتيح لنا التحكم في اتجاه التيار المتدفق عبر المحرك.

في هذا الإعداد، يتم استخدام إشارة PWM (تعديل عرض النبضة) للتحكم في سرعة المحرك. تقوم الترانزستورات بالتبديل بسرعة بين التشغيل والإيقاف لإنشاء جهد متوسط يحدد سرعة المحرك. تقوم دبابيس EN بتمكين أو تعطيل الترانزستورات، مما يضمن تشغيل المحرك فقط عند الحاجة.

تفاصيل ورقة البيانات

المصنع تكساس إنسترومنتس
رقم الجزء TIP120
جهد المنطق/المدخلات والمخرجات 5-15 فولت
جهد الإمداد ٦٠ فولت
تيار الخرج (لكل قناة) ٥ أ
التيار الذروي (لكل قناة) 30 أ
إرشادات تردد PWM 1 كيلوهرتز كحد أقصى
عتبات منطق الإدخال 2.5 فولت (مرتفع)، 0.8 فولت (منخفض)
انخفاض الجهد / Rدي إس (أون)/ تشبع 1.2 فولت
الحدود الحرارية ١٧٥ درجة مئوية
حزمة TO-220
ملاحظات / متغيرات متوفر كـ TIP125

  • تأكد من توفير تبريد مناسب للتطبيقات ذات التيار العالي.
  • استخدم إشارات PWM للتحكم في سرعة المحرك بفعالية.
  • تحقق من اتجاه الترانزستور لتجنب تلف الدائرة.
  • انتبه إلى تصنيفات الجهد لتجنب تجاوز الحدود.
  • استخدم المكثفات المفصولة لتثبيت إمداد الجهد.

تعليمات التوصيل

555 Relay Timer of 20A 0-10 minutest on breadboard wiring
555 Relay Timer of 20A 0-10 minutest on breadboard wiring

لتوصيل سائق محرك H-bridge، قم أولاً بتوصيل دبوس VCC من TIP120 وTIP125 بمصدر 5V على لوحة Arduino الخاصة بك. قم بتوصيل دبوس GND بالأرض. دبابيس التحكم PWM،PWM1وPWM2يجب توصيلها بالدبابيس الرقمية 9 و 3 على الأردوينو، على التوالي. دبابيس التمكين،EN1وEN2سيتصل بالأطراف الرقمية 8 و 2.

بعد ذلك، قم بتوصيل أطراف المحرك بأطراف المجمع للترانزستورات TIP120 و TIP125. تأكد من أن المحرك متوافق مع مصدر الطاقة الخاص بك. إذا كنت تستخدم مكونات إضافية مثل الصمامات لحماية العودة، ضعها بالتوازي مع أطراف المحرك لمنع التلف الناتج عن الجهد العكسي. إذا كنت تستخدم نماذج مختلفة من Arduino، تحقق من تخطيطات الدبابيس لإشارات PWM والتفعيل.

أمثلة الشيفرة وشرح الخطوات

const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;

في الإعداد، نقوم بتعريف دبابيس التحكم لإشارات PWM ودبابيس التمكين.pinModeتقوم الدالة بتعيين هذه الدبابيس كمخرجات للتحكم في الترانزستورات التي تشغل المحرك.

void loop() {
  Motor(CW, 50); //in CW at 50% speed
  delay(5000);
  stop(); // stops the motor
  delay(2000);
}

توضح هذه الدالة الحلقية عملية المحرك. أولاً، تقوم بتشغيل المحرك في اتجاه عقارب الساعة بسرعة 50% لمدة 5 ثوانٍ، ثم تتوقف لمدة 2 ثانيتين.Motorيتم استدعاء الدالة مع معلمات الاتجاه والسرعة، مما يتحكم في سلوك المحرك بناءً على تلك المدخلات.

void Motor(boolean direction, int speed=0) {
  int speedPWM = map(speed, 0, 100, 0, 255);
  if(direction) {
    analogWrite(PWM1, speedPWM); // Set speed for CW
  } else {
    analogWrite(PWM2, speedPWM); // Set speed for CCW
  }
}

الMotorتأخذ الدالة اتجاهًا منطقيًا وسرعة صحيحة. تقوم بتحويل نسبة السرعة إلى قيمة PWM وتستخدمanalogWriteلتعيين الدبوس المناسب للتحكم في المحرك. هذه الوظيفة حاسمة لتغيير اتجاه المحرك وسرعته بشكل ديناميكي.

عرض / ما يمكن توقعه

عند الانتهاء من التوصيلات وتحميل الكود، يجب أن تلاحظ المحرك يدور في اتجاه عقارب الساعة بسرعة 50% لمدة 5 ثوانٍ، يتبعه توقف. بعد تأخير، سيدور في الاتجاه المعاكس بسرعة 80% لمدة 5 ثوانٍ أخرى. تشمل الأخطاء الشائعة التوصيلات غير الصحيحة وتجاوز قيم الجهد، مما قد يتسبب في تلف الترانزستورات أو المحرك.

طوابع زمنية للفيديو

  • 00:00- مقدمة
  • 01:30- نظرة عامة على الأجهزة
  • ٠٣:١٥- تعليمات التوصيل
  • 05:00- استعراض الشيفرة
  • ٠٨:٤٥- عرض

الصور

مشروع جسر H مع TIP120 TIP125 مخطط توصيل
مشروع جسر H مع TIP120 TIP125 مخطط توصيل
رسم تخطيطي لـ TIP120 TIP125 جسر H
رسم تخطيطي لـ TIP120 TIP125 جسر H
مشروع H-Bridge مع TIP120 TIP125 3
مشروع H-Bridge مع TIP120 TIP125 3
555 Relay Timer of 20A 0-10 minutest on breadboard wiring
555 Relay Timer of 20A 0-10 minutest on breadboard wiring
371-Arduino code for H-Bridge Project with TIP120/TIP125 Transistors
اللغة: C++
/*
This code is for:
Building an H-Bridge Motor driver using TIP120 and TIP125 on a breadboard and full PCB Design with Arduino
https://youtu.be/6ugrL5ziPn8

This code has been downloaded from Robojax.com
You can access the resources page and download the Gerber file to produce
the PCB or a fully assembled PCB from PCBX.com
Visit https://robojax.com/tutorial_view.php?id=392
to control a DC motor using TIP120 and TIP125 as an
H bridge
Written by Ahmad Shamshiri
26 Aug 2024
*/
const int PWM1= 9;//pin with ~
const int EN1= 8;

const int PWM2= 3;//pin with ~
const int EN2= 2;

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

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

void setup() {
  Serial.begin(9600);
  Serial.println("TIP120 H Bridge by Robojax");
  pinMode(PWM1, OUTPUT);
  pinMode(EN1, OUTPUT);

  pinMode(PWM2, OUTPUT);
  pinMode(EN2, OUTPUT);   

}

void loop() {
  Motor(CW, 50);//in CW at 50% speed
  delay(5000);

  stop();
  delay(2000);

  Motor(CCW, 80);//in CCW at 80% speed
  delay(5000);

  brake();
  delay(2000);

  for (int i=0; i<=100; i++)
  {
   Motor(CCW, i);
   delay(25);
  }
    delay(5000);

  brake();
  delay(2000);
}

/*
stop()
stops the output
*/
void stop()
{
    Serial.println ("=== Stop"); 
  digitalWrite(PWM1, LOW);
  digitalWrite(EN1, LOW);
  digitalWrite(PWM2, LOW);
  digitalWrite(EN2, LOW);  
}

/*
brake()
*/
void brake()
{
    Serial.println ("=== Brake"); 
  digitalWrite(PWM1, HIGH);
  digitalWrite(EN1, LOW);
  digitalWrite(PWM2, HIGH);
  digitalWrite(EN2, 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, speedPWM);
    digitalWrite(EN1, HIGH);
    digitalWrite(PWM2, LOW);
    digitalWrite(EN2, LOW); 
  }else{
    Serial.print(" dir: ");Serial.println ("CCW");  
    digitalWrite(PWM1, LOW);
    digitalWrite(EN1, LOW);    
      analogWrite(PWM2, speedPWM);
    digitalWrite(EN2, HIGH); 
  }
 
}

ملفات📁

ملفات أخرى