محرك التيار المستمر | DC motor July 26, 2017 – Posted in: Learn arduino – Tags: dc motor, محرك, محرك التيار المستمر
في هذا الدرس سنتعلم كيفية التحكم بمحرك التيار المستمر الصغير DC Motor باستخدام الأردوينو وسنقوم باستخدام خاصية ‘Pulse Width Modulation –بالأردوينو ‘PMW’ وذلك للتحكم في سرعة المحرك عبر ارسال رقم ما بين 0 و 255 من شاشة الاتصال التسلسلي Serial Monitor. التي تعاملنا معهم في الدروس السابقة.
القطع المطلوبة
سوف نحتاج في هذا الدرس الى محرك صغير بقوة 3-6 فولت, ترانزستر من نوع ,PN2222 , صمام ثنائي-ديود- من نوع 1N4001, مقاومة 220 اوم , لوحة توصيل , اردوينو اونو , اسلاك توصيل ميل –ميل .
-
Transistor – NPN (BC547)₪ 1.0
-
Diode Rectifier – 1A 50V₪ 1.0
-
Breadboard Jumper Wire 65pcs₪ 16.0
-
Product on saleHALF-SIZE BREADBOARD₪ 11.0
-
DC Toy / Hobby Motor – 130 Size₪ 5.0
يحتاج محرك DC الصغير الى كمية كبيرة من التيار أكثر مما يتم إخراجه من المنفذ الرقمي للاردوينو بحيث انه يمكن التعامل معها مباشرة. إذا حاولنا ربط المحرك مباشرة إلى منفذ اردوينو، يمكن للاردينو ان تحترق او تتضرر.
الترانزستور مثلا يمكن استخدامه كمفتاح بحيث انه يستخدم القليل من التيار الكهربائي من المنفذ الرقمي للاردوينو للسيطرة على تيار أكبر بكثير للمحرك. للترانزستور 3 ارجل. معظم الشحنات تتدفق من الجامع collector إلى الباعث emitter، ولكن هذا لن يحدث إلا عند تدفق كمية صغيرة من خلال منفذ القاعدة baise. يتم توفير هذا التيار بمقدار قليل من المنفذ الرقمي للاردوينو.
هناك الصمام الثنائي (دايود) متصلة على التوازي مع المحرك. الدايود تسمح فقط الكهرباء بالتدفق في اتجاه واحد (اتجاه السهم). عند إيقاف الطاقة في المحرك، يتم اخراج جهد سلبي في الدائرة والتي يمكن أن تتلف اردوينو أو الترانزستور. الصمام الثنائي يحميهم من التيار العكسي الناشئ من المحرك.
طريقة التوصيل
أولا سوف نقوم بتوصيل منفذ رقم ٣ بأحد اطراف المقاومة و الطرف الاخر نوصله في منفذ الbase للترانزيستور اما طرف ال Emitter’ فنوصله مع المنفذ الأرضي للاردوينو كما في الصوره التالية
ونوصل collector من الترانزستور مع احد اطراف المحرك والطرف الآخر من المحرك نوصله مع ال٥ فولت كما في الصورة التالية
وأخيرا نوصل cathode من الديود مع ال٥ فولت للاردوينوا و المحرك و Anode من الديود مع collector للترانزستور والطرف الآخر من المحرك كما في الصور التالية:
الكود البرمجي للأردوينو
قم برفع الكود التالي على متحكم الأردوينو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
int motorPin = 3; void setup() { pinMode(motorPin, OUTPUT); Serial.begin(9600); while (! Serial); Serial.println("Speed 0 to 255"); } void loop() { if (Serial.available()) { int speed = Serial.parseInt(); if (speed >= 0 && speed <= 255) { analogWrite(motorPin, speed); } } } |
بعد ما قمنا بتحميل الكود الى لوحة الاردوينو قم بفتح نافذة الاتصال التسلسلي Serial Monitor سوف تظهر رسالة تطلب منك ادخال قيمة طاقة المحرك ( ما بين 0 و 255 ).
لنقم الان بادخال قيم مختلفة وننظر الى المحرك ماذا يحصل له, نلاحظ ان سرعة المحرك تعتمد على القيمة المدخلة فتكون سرعة المحرك القصوى عند ادخال قيمة ٢٥٥ ويتوقف عند ادخال قيمة 0.
بعد ما شاهدنا ما حصل دعونا نتجه لشرح الكود
شرح الكود
أولا سوف نقوم بإعطاء منفذ رقم 3 اسم motorPin واستخدامه كمخرج, وتفعيل خاصية الاتصال التسلسلي عبر امر Serial.begin مع سرعة 9600 بت ي الثانية, وطباعة Speed 0 to 255.
في دالة loop الأمر ‘Serial.parseInt’ يستخدم لقراءة الرقم المدخل عبر شاشة الاتصال التسلسلي Serial Monitor وتحويله لقيمة رقمية ‘int’, كما في الامر التالي.
1 |
int speed = Serial.parseInt(); |
وبإمكانك ادخال أي رقم ، جملة if الشرطية في السطر الذي يليه تقوم بالكتابة التماثلية ‘analogWrite’ عند وجود رقم بين 0 و 255 فقط. التي بدورها سوف تخرج لنا قيمة من الطاقة تعتمد على القيمة المدخلة.
1 Comment
NADER HANOURA November 01, 2020 - 22:43
شكرا على الشرح الجميل لكن ركبت ماتور مضخة صغيرة dc 5 volt
لكن ضغط المياه ضعيف هل معنى ذلك ان فكرة الترانزستور بلا جدوى ولابد من ريلاي أو H bridge؟