كنترولور المحرك الخطوي
الكنترولور هو المتحكم بسرعة دوران المحرك ويكون الواسطة بين المحرك والميكروكنترولور. يقوم الميكروكنترولور بإرسال الأوامر إلى المحرك (كزاوية الدوران و الاتجاه)، لكنه لا يستطيع تزويد المحرك بالشحنة الكهربائية الضرورية له. أما الكنترولور فيتولى هذه المهمة.
سنقوم اليوم بالتكلم عن طريقتين للتحكم بالمحرك الخطوي:
l الطريقة الأولى تعتمد على دارة تسمى H-Bridge
l والطريقة الثانية تعتمد على دارة إليكترومية تسمى مصفوفة الترنزستورات ULN2003A.
هذه الدارتين عبارة عن مركبين اليكترونيين يمكنك شراءها في محلات بيع الاجزاء الاليكترونية.
أما إذا أردت أن تنجز كنترولور المحرك الخطوي بنفسك فغليك الرجوع إلى المقال الأول في هذه الحالة.
المحرك الخطوي الأحادي القطب
وهو النوع الأكثر شعبية بين هوات الروبوتات، ويتميز بدقة عالية. وغالبا ما يتم التحكم به بواسطة مجموعة من الترنزستوارات (غالبا أربعة انظر إلى المقال الأول) أو مركب إليكتروني يضم العديد من الترنزستورات داخله كما سنرى لاحقا.
المحرك الخطوي الثنائي القطبين
إنشاء دارة كهربائية تتحكم بهذا النوع صعب شيئا ما. هذا النوع من الدارات يسمى القنطرة H أي (H-Bridge). ويفضل استعماله للحصول على عزم أعلى.
التحكم بواسطة الكنترولور ULN2003A
الدارة الكهربائية
|
بالنسبة للدارة الكهربائية سنحتاج للمركبات التالية: l بطاقة Arduino l المحرك الخطوي: المحرك الخطوي الذي سنستعمله في هذا المثال مأخوذ من قارئ قديم للأقراص المرنة. لهذا المحرك 5 أسلاك موصلة واحدا منها خاص بالتيار الكهربائي (VCC) والأربعة البقية مخصصة للتحكم بزاوية واتجاه دوران المحرك. l مقاومة متغيرة (Potentiometer) : ستسعمل لقيادة المحرك نحو الاتجاه المطلوب وكذلك الزيادة في السرعة أو نقصانها. l كنترولور المحرك الخطوي ULN2003A: وهو عبارة عن مجموعة من الترنزستورات المتراصة جنبا إلى جنب من أجل تزويد المحرك بشحنة كهربائية كافية. l أسلاك كهربائية |
برمجة
المثال الأول: تطبيق بسيط
نقدم في المثال الأول شيفرة بسيطة لجعل المحرك يدور في اتجاه واحد. نستهدف من خلاله أولئك الذين ليس لهم معرفة مسبقة لهذا النوع من المحركات.
/* Stepper motor شيفرة المحرك الخطوي * ---------------------------------------------- *5'25 disk drive شيفرة للتحكم بمحرك خطوي مأخوذ من قارئ الأقراص المرنة *Copal Electronicsحسب المرجع الذي وجدت، فإن هذا المحرك مصنوع من طرف شركة * خطوة 1.8 درجة، و96 أوم *, with 1.8 degrees per step and 96 ohms * * [http://www.cs.uiowa.edu/~jones/step/example.html] * خو عبارة عن محرك أحادي القطب مزود بـ 5 أسلاك موصلة * * * الأحمر: موصل التيار الكهربائي، بالنسبة لي كانت 5 فولط كافية له * - البرتقالي والأسود: coil 1 * - البني واﻷصفر: coil 2 * * http://www.0j0.org | http://arduino.berlios.de * * @David Cuartiellesالمؤلف : * @date: 20 Oct. 2005 * @المترجم: محمد السهلي * @يناير 13 سنة 2012 */
int motorPin1 =8; int motorPin2 =9; int motorPin3 =10; int motorPin4 =11; int delayTime =500;
void setup() { pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); }
void loop() { digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(delayTime); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); delay(delayTime); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(delayTime); digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); digitaWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH); delay(delayTime); } |
المثال الثاني: تطبيق متقدم
تقوم هذه الشيفرة بالتحكم بسرعة واتجاه دوران المحرك باستعمال المقاومة المتغيرة.
/* Stepper motor شيفرة المحرك الخطوي * ------------- *5'25 disk drive شيفرة للتحكم بمحرك خطوي مأخوذ من قارئ الأقراص المرنة *Copal Electronicsحسب المرجع الذي وجدت، فإن هذا المحرك مصنوع من طرف شركة * خطوة 1.8 درجة، و96 أوم *, with 1.8 degrees per step and 96 ohms * * [http://www.cs.uiowa.edu/~jones/step/example.html] * خو عبارة عن محرك أحادي القطب مزود بـ 5 أسلاك موصلة * * * الأحمر: موصل التيار الكهربائي، بالنسبة لي كانت 5 فولط كافية له * - البرتقالي والأسود: coil 1 * - البني واﻷصفر: coil 2 * * http://www.0j0.org | http://arduino.berlios.de * * @David Cuartielles المؤلف : * @date: 20 Oct. 2005 * @المترجم: محمد السهلي * @يناير 13 سنة 2012 */
int motorPins[]={8, 9, 10, 11}; int count =0; int count2 =0; int delayTime =500; int val =0;
void setup() { for(count =0; count <4; count++) { pinMode(motorPins[count], OUTPUT); } }
void moveForward() { if((count2 ==0)|| (count2 ==1)){ count2 =16;} count2>>=1; for(count =3; count >=0; count--) { digitalWrite(motorPins[count], count2>>count&0x01); } delay(delayTime); }
void moveBackward() { if((count2 ==0)|| (count2 ==1)){ count2 =16; } count2>>=1; for(count =3; count >=0; count--) { digitalWrite(motorPins[3 - count], count2>>count&0x01); } delay(delayTime); }
void loop() { val = analogRead(0); if(val >540) { /* كلما كانت قيمة المقاومة المتغيرة قوية كلما كان التحرك أسرع*/ delayTime =2048-1024* val /512+1; moveForward(); } elseif(val <480) { /* كلما كانت قيمة المقاومة المتغيرة ضعيفة كلما كان التحرك أسرع*/ delayTime =1024* val /512+1; moveBackward(); } else { delayTime =1024; } } |
التحكم بواسطة H-bridge والمصفوفة U2004 Darlington
تقديم
سنستعمل في هذا الجزء مقاومة متغيرة (أو مقياس الجهد الانزلاقي Potentiometer) لنتحكم يديويا بالمحرك الخطوي كما فعلنا في الجزء السابق.
الجميل هنا هو أننا سنستعمل شيفرة صغيرة تتحكم بالمحرك كيفما كان نوعه ونوع الكنترولور أيضا.
كنترولور المحرك الخطوي الأحادي القطب هو: المصفوفة U2004 Darlington
كنترولور المحرك الخطوي الثنائي القطب هو: القنطرة SN754410NE
المركبات اللازمة
العربية |
الانجليزية |
بطاقة أردوينو مقاومة متغيرة محرك خطوي مصفوفة U2004 Darlington القنطرة H ذي الرمزSN754410NE بطاقة بلاستيكية مساعدة أسلاك كهربائية |
Arduino Board Potentiometer Stepper motor U2004 Darlington Array SN754410NE H-Bridge breadboard hookup wire |
خطاطة المركب U2004 Darlington
![]() |
![]() |
خطاطة المركب SN754410NE H-Bridge
![]() |
![]() |
الدارات الكهربائية لكلا المحركين
تجد فيما يلي الدارتين الكهربائيتين لكلا صنفي المحرك الخطوي. من الأحسن أن تزودهم بطاقة كهربائية باستعمال بطاريات أو محول كهربائي.
للمقاومة المتغيرة 10Kثلاث مرابط، قم بإيصالهم كالتالي:
l صل مربطي الطاقة بـ 5V و GND(في بطاقة Arduino)
l صل المربط المتبقي بالمربط التناظري 0 (Analog pin 0) لبطاقة Arduino.
إذا كنت قد اضطلعت على المقال الأول ستجد أننا تكلمنا عن طريقتين لربط المحرك الخطوي بالبطاقة (باستعمال سلكين أو باستعمال 4 أسلاك كهربائية). في الأمثلة أسفله سنستعمل فقط 4 أسلاك كهربائية وبالتالي سنحتاج لأربعة مرابط في البطاقة Arduino.
المحرك الخطوي أحادي القطب
المحرك الخطوي ثنائي القطب
برمجة
/*(شيفرة للدارتين) * (ويمكنك استعمال مستشعر اليكتروني آخر غيرها كذلك) * المقاومة متصلة مع بطاقة أردينو من خلال المربط التناظري 0 * */ Stepper stepper(STEPS, 8, 9, 10, 11); |
تأليف: محمد السهلي
{jumi [*3]}
المراجع
http://arduino.cc/hu/Tutorial/StepperUnipolar
http://www.azega.com/controlling-a-stepper-motor-with-an-arduino/
http://en.wikipedia.org/wiki/Red-legged_Honeycreeper
http://arduino.cc/it/Tutorial/MotorKnob
http://ar.wikipedia.org/wiki/%D9%85%D8%AD%D8%B1%D9%83_%D8%AE%D8%B7%D9%88%D9%8A
http://en.wikipedia.org/wiki/Stepper_motor#Unipolar_motors
http://www.me.umn.edu/courses/me2011/arduino/technotes/dcmotors/L293/L293.html