كود البحث

استخدام محرك الخطوات 28BYJ-48 مع وحدة التحكم ULN2003 وأردوينو

استخدام محرك الخطوات 28BYJ-48 مع وحدة التحكم ULN2003 وأردوينو

في هذا الدرس، سنتعلم كيفية التحكم في محرك خطوة 28BYJ-48 باستخدام سائق ULN2003 مع أردوينو. يتيح هذا الإعداد التحكم الدقيق في موضع المحرك وسرعته. بنهاية هذا المشروع، ستكون قادرًا على تدوير المحرك في كلا الاتجاهين والتحكم في خطواته بفعالية.

سنستخدم محرك الخطوات 28BYJ-48، الذي يعد خيارًا شائعًا لمشاريع الروبوتات والأتمتة المختلفة نظرًا لأسعاره المنخفضة وسهولة استخدامه. تتصل لوحة السائق ULN2003 بمحرك الخطوات مع الأردوينو، مما يتيح لنا إرسال إشارات الخطوات التي تتحكم في حركة المحرك. ستوجهك هذه الدروس خلال الأسلاك اللازمة والرمز لجعل محركك يدور.

للمزيد من التوضيح، يرجى الرجوع إلى الفيديو المرتبط بهذا الدرس (في الفيديو عند 0:45).

شرح الأجهزة

تشمل المكونات الرئيسية لهذا المشروع محرك الخطوات 28BYJ-48 ولوحة السائق ULN2003. يتكون محرك الخطوات من عدة لفات يمكن تنشيطها بتسلسل محدد لإنشاء الدوران. تعمل لوحة السائق ULN2003 كمفتاح، مما يسمح للاردوينو بالتحكم في الطاقة الموصلة إلى كل لفة.

يستخدم برنامج التشغيل ULN2003 مجموعة ترانزستورات دارلينغتون للتعامل مع التيار الأعلى المطلوب من محرك الخطوات. عندما يخرج دبوس من الأردوينو إشارة HIGH، فإنه يسمح بتدفق التيار إلى الملف المقابل في المحرك، مما يتسبب في تحركه. وهذا يتيح التحكم الدقيق في زاوية الدوران وسرعة المحرك.

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

المصنعULN2003
رقم الجزءULN2003
جهد المنطق/المدخلات والمخرجات٥ ف
جهد الإمداد5-30 فولت (كحد أقصى)
تيار الخرج (لكل قناة)500 مللي أمبير كحد أقصى
التيار الذروي (لكل قناة)2 أ قصوى
إرشادات تردد PWMN/A
عتبات منطق الإدخال0.8 فولت (منخفض)، 2.4 فولت (مرتفع)
انخفاض الجهد / Rدي إس (أون)/ تشبع1.5 فولت كحد أقصى
الحدود الحرارية70 درجة مئوية كحد أقصى
حزمةDIP-16
ملاحظات / متغيراتيستخدم عادة مع محركات الخطوة 5 فولت.

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

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

لتوصيل محرك الخطوات 28BYJ-48 إلى وحدة التحكم ULN2003 وأردوينو، اتبع الخطوات التالية:

أولاً، قم بتوصيل المحرك بموصل ULN2003. يحتوي المحرك على أربعة أسلاك، عادةً ما تكون ملونة باللون البرتقالي والأصفر والوردي والأزرق. قم بتوصيل هذه الأسلاك بالدبابيس المخرجة المقابلة على موصل ULN2003. التوصيلات هي كما يلي:

  • Orangeسلك إلىOUT1
  • Yellowسلك إلىOUT2
  • Pinkسلك إلىOUT3
  • Blueسلك إلىOUT4

بعد ذلك، قم بتوصيل وحدة التحكم ULN2003 بأردوينو. تتوافق دبابيس الإدخال على وحدة التحكم مع أربعة دبابيس رقمية على الأردوينو. على سبيل المثال:

  • IN1إلىPin 10
  • IN2إلىPin 11
  • IN3إلىPin 12
  • IN4إلىPin 13

أخيرًا، قم بتوصيل دبابيس الطاقة والأرضي لوحدة ULN2003 إلى الأردوينو. قم بتوصيل الـVCCقم بتوصيلها بمخرج 5 فولت في الأردوينو وGNDقم بتوصيل الدبوس بالأرضي الخاص بأردوينو. تأكد من أن جميع الاتصالات آمنة قبل تشغيل النظام.

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

في قسم الإعداد من كود الأردوينو، نقوم بتعريف الدبابيس المتصلة بسائق ULN2003:

int Pin1 = 10; 
int Pin2 = 11; 
int Pin3 = 12; 
int Pin4 = 13; 

هنا، نعلن عن أربعة متغيرات صحيحة:Pin1,Pin2,Pin3, وPin4، التي تتوافق مع الدبابيس الرقمية على الأردوينو. ستتحكم هذه الدبابيس في حركة المحرك الخطوي.

في الـsetup()نقوم بتكوين هذه الدبابيس كمخرجات:

void setup() { 
 pinMode(Pin1, OUTPUT);  
 pinMode(Pin2, OUTPUT);  
 pinMode(Pin3, OUTPUT);  
 pinMode(Pin4, OUTPUT);  
} 

تضمن هذه الإعدادات أن يتمكن الأردوينو من إرسال إشارات إلى محرك ULN2003 للتحكم في المحرك.pinModeتقوم الدالة بتعيين كل دبوس إلى وضع الإخراج، مما يمكّنها من إرسال الإشارات.

أخيرًا، في الحلقة الرئيسية، نقوم بإنشاء حالة تبديل للتحكم في خطوات المحرك بناءً على المتغير_step:

switch(_step){ 
   case 0: 
     digitalWrite(Pin1, LOW);  
     digitalWrite(Pin2, LOW); 
     digitalWrite(Pin3, LOW); 
     digitalWrite(Pin4, HIGH); 
   break;  
   // Additional cases follow
}

في هذا المقتطف، نستخدمdigitalWriteلإرسال إشارات عالية أو منخفضة إلى كل دبوس بناءً على التيار_step. هذا يتحكم في أي لفات يتم تنشيطها، مما يسمح للمحرك بالدوران. سيتم تحميل الكود الكامل الذي يدمج هذه المقاطع أدناه المقال.

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

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

فصول

  • مقدمة - 0:00
  • شرح الأجهزة - 1:30
  • تعليمات التوصيل - 3:15
  • أمثلة الشيفرة وشرح مفصل - 5:00
  • عرض / ماذا تتوقع - 7:45
6-The source code for stepper motor 28BYJ-48 with ULN2003 for Arduino
اللغة: C++
/*
 * للحصول على مخطط الأسلاك من هذا الكود: https://youtu.be/0glBk917HPg
 * قم بشراء دورة Arduino الخاصة بي على Udemy.com http://robojax.com/L/?id=62
 * 
 * احصل على هذا الكود وغيره من أكواد Arduino من RoboJax.com
 * تعلم Arduino خطوة بخطوة في دورة منظمة مع كل المواد، ومخططات الأسلاك، والمكتبات
 * كل ذلك في مكان واحد. اشترِ دورتي على Udemy.com http://robojax.com/L/?id=62
 * 
 * إذا كنت تجد هذا الدرس مفيدًا، يرجى دعمي حتى أتمكن من مواصلة إنشاء
 * محتوى مثل هذا.
 * 
 * أو قم بالتبرع عبر PayPal http://robojax.com/L/?id=64
 * 
 * هذا الكود "كما هو" دون ضمان أو مسؤولية. مجانًا للاستخدام طالما أنك تحتفظ بهذه الملاحظة سليمة.
 * تم تحميل هذا الكود من RoboJax.com
 * هذا البرنامج هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديل
 * تحت شروط رخصة GNU العامة كما نشرتها
 * مؤسسة البرمجيات الحرة، سواء النسخة 3 من الرخصة، أو
 * (حسب خيارك) أي نسخة لاحقة.
 * 
 * هذا البرنامج موزع على أمل أن يكون مفيدًا،
 * ولكن دون أي ضمان؛ وحتى دون الضمان الضمني لـ
 * قابلية البيع أو الصلاحية لغرض معين. راجع
 * رخصة GNU العامة للمزيد من التفاصيل.
 * 
 * كان ينبغي أن تكون قد تلقيت نسخة من رخصة GNU العامة
 * مع هذا البرنامج. إذا لم يكن كذلك، يمكنك مراجعة <https://www.gnu.org/licenses/>.
 */
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
int _step = 0;
boolean dir = true; // خطأ=مع اتجاه عقارب الساعة، صحيح=عكس اتجاه عقارب الساعة
int count=0;
void setup()
{
 pinMode(Pin1, OUTPUT);
 pinMode(Pin2, OUTPUT);
 pinMode(Pin3, OUTPUT);
 pinMode(Pin4, OUTPUT);
}
 void loop()
{
 switch(_step){
   case 0:
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, LOW);
     digitalWrite(Pin4, HIGH);
   break;
   case 1:
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, HIGH);
     digitalWrite(Pin4, HIGH);
   break;
   case 2:
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, HIGH);
     digitalWrite(Pin4, LOW);
   break;
   case 3:
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, HIGH);
     digitalWrite(Pin3, HIGH);
     digitalWrite(Pin4, LOW);
   break;
   case 4:
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, HIGH);
     digitalWrite(Pin3, LOW);
     digitalWrite(Pin4, LOW);
   break;
   case 5:
     digitalWrite(Pin1, HIGH);
     digitalWrite(Pin2, HIGH);
     digitalWrite(Pin3, LOW);
     digitalWrite(Pin4, LOW);
   break;
     case 6:
     digitalWrite(Pin1, HIGH);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, LOW);
     digitalWrite(Pin4, LOW);
   break;
   case 7:
     digitalWrite(Pin1, HIGH);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, LOW);
     digitalWrite(Pin4, HIGH);
   break;
   default:
     digitalWrite(Pin1, LOW);
     digitalWrite(Pin2, LOW);
     digitalWrite(Pin3, LOW);
     digitalWrite(Pin4, LOW);
   break;
 }
 if(dir){
   _step++;
 }else{
   _step--;
 }
 if(_step>7){
   _step=0;
 }
 if(_step<0){
   _step=7;
 }
 delay(1);

}

ملفات📁

لا توجد ملفات متاحة.