المحرك DC
المحركات DC هي المحركات الأكثر شيوعا واستعمالا. تجدها في الطائرات وفي المروحيات وفي المذياع وفي العديد من الأجهزة اليومية.
وهذا المحرك رغم بساطته إلا أن له دور كبير في صناعة الروبوتات بشتى أنواعها.
وللعلم فإنه توجد ثلاثة أنواع من المحركات: المحرك DC والمحرك سيرفو والمحرك الخطوي. ونسعى في هذه المقالات المخصصة لبرمجة المحركات إلى تقديم مختلف الطرق البرمجية لهذه الأنواع الثلاثة حتى تصبح مرجعا لنا عندما نتكلم عن صنع أي جهاز ذكي.
بالنسبة للمحرك DC فسنتطرق إلى 3 طرق لبرمجته: باستعمال الترنزستور و باستعمال القنطرة H (أي H-bridge) و باستعمال المرحل (أيrelay ). تدعى هذه الوسائل الثلاثة بـكنترولور المحرك. |
|
التحكم بواسطة الترنزستور
تقديم
الترنزستور، ذلك المركب البسيط الذي تجده بسهولة في شتى أنواع الاجهزة الكهربائية. سيكون هذا العنصر هو المركب الاليكتروني الأساسي في صناعة كنترولور المحرك DC بكل بساطة.
يوجد نوعين من الترنزستورات : NPN و PNP.
سنتعمل ترنزستورا يدعى TIP120 من فئة NPN. صمم لأجل التعامل مع الأجهزة التي تتطلب تيار كهربائي عالي كالمصباح والمحرك مثلا. يجب إيصال قاعدته بأحد مخارج الميكروكنترولور، والباعث بالأرضية (أي القطب السالب للتيار) أم القاعدة فتوصل بالجهاز (محرك، مصباح ...) ويوصل الطرف الآخر للجهاز بمنبع التيار الكهربائي.
ملاحظة: يمكنك استعمال الترنستور IRF510 أو الترنزستور IRF520 MOSFET عوض TIP120. |
|
الدارة الكهربائية
بالنسبة للدارة الكهربائية سنحتاج للمركبات التالية: l بطاقة Arduino l بطاقة بلاستيكية مساعدة (breadboard) l مقاومة متغيرة 10 كيلوأوم l صمام ثنائي l بطارية l ترنزستور TIP120 l محرك كهربائي DC أو مصباح |
|
معظم المحركات تحتاج لشدة كهربائية (الأمبير) أكثر من ما يستطيع الميكروكنترولور أن يزوده. انتبه لما قلناه سابقا بأن المحرك يجب أن يوصل بالجامع C للترنزستور. ضف صماما ثنائيا بين الحامغ والباعث للترنزستور. هذا لحماية الترنستور من انعكاس اتجاه التيار الكهربائي المولد من طرف المحرك لاسيما عندما يقوم المحرك بالدوران العكسي أو يقع خطأ تقني فيه. تأكد 100% من أنك أضفت الصمام في الاتجاه الصحيح له. ستجد قرصا أبيضا محاطا في رأسه لتسهيل الأمر عليك. بهذا نكون قد أكملنا صناعة كنترولور المحرك DC بالاستعانة بالترنزستور TIP120. |
برمجة
الشيفرة التالية تقوم بتشغيل المحركة لمدة ثانية واحدة وإيقافة لمدة ثانية أخرى وهكذا دواليك.
const int transistorPin=9;
{ { |
أما الشيفرة التالية فتمكنك من زيادة أو نقصان سرعة ادوران المحرك باستخدام المقاومة المتغيرة.
const int transistorPin = 9; { { |
التحكم بواسطة المرحل (أيRelay أو Relais)
ما هو المرحل؟
يقوم المرحل بالسماح لتيار كهربائي ضعيف قادم من الميكروكنترولور بتشغيل أو إيقاف جهاز كهربائي يعمل بجهد كهربائي عالي. لهذا المركب الاليكتروني 4 مرابط: l مربط 1 للتيار الكهربائي (الموجب) l مربط 2 للأرضية (أي السالب) l مربط 3 لتنشيط المركب نفسه أو إيقافه. l مربط 4 يسمح بخروج التيار الكهربائي الذي سيزود به الجهاز الذي تريد التحكم به (محرك، مصباح ...).
قم بالحصول على مرحل (Relay أو Relais électromécanique ) قادر على التعامل مع 5 فولط إذا كان المحرك يستخدم 5 فولط أيضا. |
|
الدارة الكهربائية
بالنسبة للدارة الكهربائية سنحتاج للمركبات التالية: l بطاقة Arduino l بطاقة بلاستيكية مساعدة (breadboard) (ويمكنك أن تنجز الدارة بدونها كذلك) l مقاومة كهربائية 10 كيلوأوم l زر كهربائي l المرحل (Relay أو Relais électromécanique ) |
|
|
في هذه الصورة قمنا بإيصال المربط 3 للمرحل (أعلى يسار المركب) بالمربط 13 للبطاقة. والمربط 2 بالأرضية GND. والمربط 1 للمركب بالمربط Vin للبطاقة، وأخيرا المربط 4 للمركب بالقطب الموجب للمحرك الكهربائي. والقطب السالب للمحرك يوصل بالأرضية (التيار السالب). أما بالنسبة للزر الكهربائي، فصل مربطا من مرابطه بـ 5V والمربط الآخر يوصل بالمربط 2 للبطاقة وبالمقاومة الكهربائية لتوصل هذه الآخيرة بالأرضية. |
برمجة
int buttonPin = 2; int relayPin = 13; int state = 0;
void setup() { pinMode(buttonPin, INPUT); pinMode(relayPin, OUTPUT); }
void loop() { state = digitalRead(buttonPin); if(state==HIGH) digitalWrite(relayPin, HIGH); else digitalWrite(relayPin, LOW);
delay(100); } |
التحكم بواسطة الدارة H-bridge
لماذا الدارة H-bridge؟
تخيل أنك تريد أن تغير اتجاه دوران المحرك، مرة إلى الأمام ومرة إلى الخلف. هل ستقوم بتغيير الدارة الكهربائية أو تقوم بقلب قطبي المحرك كلما أردت ذلك؟ بالتأكيد هذا لن يكون تطبيقيا عند انجازك لجهاز أو روبوت متقدم في المستوى.
الاعتماد على الترنزستور وحده قد لا يمكنك من التحكم باتجاه دوران المحرك، وبالتالي فإن استعمال المركب المسمى H-bridge أو القنطرة H مخصص لهذا الغرض بالضبط.
يوجد العديد من أصناف القنطرة H، سنستعمل صنفا بسيطا منها في هذا المقال: المركب L293NE أو المركب SN754410.
كيف يعمل المركب L293NE أو SN754410؟
للمركب L293NE و SN754410 قنطرتي H: واحدة في اليسار والأخرى في اليمين، ويمكنه أن يتحكم بمحركين اثنين في آن واحد. ويمكن أن يتحمل شدة تيار كهربائي تبلغ 1 أمبيرمتر، وجهد كهربائي بين 4.5 و 36 فولط. وبالتالي فإن اختيار المحركات يجب أن يكون ضمن هذه الاعتبارات.
للقنطرة L293NE و SN754410 الامتيازات التالية: |
|
|
|
وهذا هو جدول الحقيقة الذي يبين مختلف حالات التحكم بواسطة القنطرة L293NE و SN754410. |
المربط EN |
المربط 1A |
المربط 2A |
الدور |
مرتفع |
منخفض |
مرتفع |
دوران نحو اليمين |
مرتفع |
مرتفع |
منخفض |
دوران نحو اليسار |
مرتفع |
منخفض |
منخفض |
توقف سريع للمحرك |
مرتفع |
مرتفع |
مرتفع |
توقف سريع للمحرك |
منخفض |
أيا كان |
أيا كان |
توقف سريع للمحرك |
مرتفع |
HIGH |
منخفض |
LOW |
الدارة الكهربائية
بالنسبة للدارة الكهربائية سنحتاج للمركبات التالية: l بطاقة Arduino l بطاقة بلاستيكية مساعدة (breadboard) (ويمكنك أن تنجز الدارة بدونها كذلك)
l مقاومة 10 كيلوأوم l قاطع التيار (switch) l بطارية 12 فولط l القنطرةL293NE أو SN754410 l محرك كهربائي DCذي 12 فولط |
|
|
|
|
|
يمكنك استعمال أيا من الدارتين أعلاه. الصورة الثانية نقول عنها أننا نستعمل طاقة كهربائية خارجية بحكم أن التيار الكهربائي يأتي عبر البطاقة البرمجية. في هذه الحالة يمكنك استعمال أي محرك كهربائي DC يتراوح جهد الكهربائي من 9 إلى 15 فولط. لكن لا تستعمل بطارية 9 فولط لتشغيل محرك 3 فولط مثلا!
إذا احترت في أي مرابط المركب L293NE أو SN754410 التي تم إيصال مربطي المحرك بها فقم بالرجوع مرة أخرى إلى أسماء مرابط المركب أعلاه.
أما المبدل الكهربائي فبواسطته سنقوم بالتحكم باتجاه دوران المحرك.
|
|
![]() |
إذا حدث وقام الميكروكنترولور بإعادة تشغيل نفسه كلما تم تشغيل المحرك، فيمكنك حينها إضافة مكثف بين القطب الموجب (السلك الأحمر) والقطب السالب (أي الأرضية أو السلك الأسود) للتيار الكهربائي. سيقوم هذا المكثف بجعل حركة التيار الكهربائي سلسة. يسمى هذا الاستعمال بـ decoupling capacitor. قم باختيار مكثف ذي سعة تتراوح بين 10uF و 100uF. |
برمجة
// نوصل مربط المبدل الكهربائي بالمربط 2 للبطاقة const int switchPin = 2; /* نوصل المربط 1A للقنطرة بالمربط 3 للبطاقة*/ const int motor1Pin = 3; /* نوصل المربط 2A للقنطرة بالمربط 4 للبطاقة*/ const int motor2Pin = 4; /* نوصل المربط EN للقنطرة بالمربط 9 للبطاقة*/ const int enablePin = 9;
voidsetup() {
voidloop() { { { } |
تحرير محمد السهلي
{jumi [*3]}
المراجع
http://itp.nyu.edu/physcomp/Tutorials/HighCurrentLoads
http://itp.nyu.edu/physcomp/Labs/DCMotorControl
http://quarkstream.wordpress.com/2009/12/11/arduino-8-relays/
http://quarkstream.wordpress.com/2010/01/07/arduino-8-the-h-bridge/
http://ar.wikipedia.org/wiki/%D9%85%D8%B1%D8%AD%D9%84
http://en.wikipedia.org/wiki/Relay
http://fr.wikipedia.org/wiki/Relais_%C3%A9lectrom%C3%A9canique
التعليقات
أنا محتاج جدا للتحكم بموتور 24 فولت و قد فشلت معي المتكاملة N298 حيث توقفت عن العمل رغم أن التيار لا يتعدى النصف أمبير عند التشغيل
و أنا أريد التحكم بسرعته من خلال عرض النبضة من 0 الى 255 كما أنا محتاج برمجيا و ليس يدويا باستخدام المقاومة المتغيرة
فهل أستطيع ذلك باستخدام الدارة الكهرباية أعلاه مع واحد من الترنزيستورات اللي نعاماس اقترحت
و أتحكم بسرعته برمجيا طبعا
و الله ولي التوفيق