تعد محركات التيار المستمر هي المحركات الأكثر استخدامًا. يمكن العثور على هذه المحركات في كل مكان تقريبًا من المشاريع الصغيرة إلى الروبوتات المتقدمة. لقد قمنا سابقًا بتوصيل محرك DC مع العديد من المتحكمات الدقيقة الأخرى مثل Arduino و Raspberry pi واستخدمناها في العديد من المشاريع الروبوتية. نتعلم اليوم التحكم في محرك DC باستخدام متحكم AVR Atmega16. ولكن قبل المضي قدمًا ، دعنا نعرف المزيد عن محرك التيار المستمر.
ما هو محرك DC؟
DC Motor هو جهاز يحول الطاقة الكهربائية إلى طاقة ميكانيكية. على وجه التحديد ، يستخدم محرك DC تيار مستمر لتحويل الطاقة الكهربائية إلى طاقة ميكانيكية. المبدأ الأساسي للمحرك هو التفاعل بين المجال المغناطيسي والتيار لإنتاج قوة داخل المحرك تساعد المحرك على الدوران. لذلك عندما يمر التيار الكهربي عبر ملف في مجال مغناطيسي ، تتولد قوة مغناطيسية تنتج عزم دوران ينتج عنه حركة المحرك. يتم التحكم في اتجاه المحرك عن طريق عكس التيار. كما يمكن أن تتغير سرعته باختلاف الجهد المزود. نظرًا لأن الميكروكونترولر بها دبابيس PWM ، فيمكن استخدامها للتحكم في سرعة المحرك.
في هذا البرنامج التعليمي ، سيتم عرض تشغيل محرك التيار المستمر باستخدام Atmega16. سيتم استخدام محرك المحرك L293D لعكس اتجاه التيار وبالتالي اتجاه الحركة. يستخدم محرك L293D تكوين دائرة H-Bridge الذي ينتج التيار المطلوب للمحرك. يتم استخدام زري ضغط لتحديد اتجاه المحرك. يتم استخدام أحد أزرار الضغط لتحديد دوران الساعة والآخر لتحديد التشغيل المضاد للساعة لمحرك التيار المستمر.
المكونات مطلوبة
- محرك DC (5 فولت)
- سائق محرك L293D
- متحكم Atmega16 IC
- 16 ميجا هرتز الكريستال المذبذب
- اثنين من المكثفات 100nF
- مكثفتان 22pF
- اضغط الزر
- أسلاك توصيل
- اللوح
- USBASP v2.0
- Led (أي لون)
مخطط الرسم البياني
برمجة Atmega16 للتحكم في محرك التيار المستمر
هنا تمت برمجة Atmega16 باستخدام USBASP و Atmel Studio7.0. إذا كنت لا تعرف كيفية برمجة Atmega16 باستخدام USBASP ، فقم بزيارة الرابط. يتم تقديم البرنامج الكامل في نهاية المشروع ، ما عليك سوى تحميل البرنامج في Atmega16 واستخدام زري الضغط لتدوير محرك التيار المستمر في اتجاه عقارب الساعة وعكس اتجاه عقارب الساعة.يتم توصيل محرك DC باستخدام محرك L293D. سوف يدور محرك DC في اتجاهين عند الضغط على زر الضغط الخاص به. سيتم استخدام زر الضغط الواحد لتدوير محرك التيار المستمر في اتجاه الساعة الحكيم وسيتم استخدام زر الضغط الآخر لتدوير محرك التيار المستمر في اتجاه الساعة المضاد. أولاً ، حدد تردد وحدة المعالجة المركزية لوحدة التحكم الدقيقة وقم بتضمين جميع المكتبات الضرورية.
#define F_CPU 16000000UL # تضمين # تضمين
بعد ذلك ، استخدم متغيرًا واحدًا لتتبع حالة الضغط على زر الضغط. سيتم استخدام هذا المتغير لتحديد اتجاه المحرك.
إنت أنا
حدد وضع الإدخال / الإخراج لـ GPIO باستخدام سجل اتجاه البيانات. في البداية ، اجعل خرج دبوس المحرك منخفضًا لتجنب بدء تشغيل المحرك دون الضغط على زر الضغط.
DDRA = 03 ؛ PORTA & = ~ (1 << 1) ؛ PORTA & = ~ (1 << 0) ؛
معرفة ما اذا كان 1 شارع ضغط زر متصلة PORTA4 من Atmega16 وتخزين حالة ضغط على زر في متغير.
إذا (! bit_is_clear (PINA، 4)) { i = 1؛ PORTA & = ~ (1 << 1) ؛ _delay_ms (1000) ؛ }
تحقق بالمثل من الضغط على زر الضغط الثاني المتصل بـ PORTA5 من Atmega16 وقم بتخزين حالة زر الضغط في متغير.
وإلا إذا (! bit_is_clear (PINA، 5)) { i = 2؛ PORTA & = ~ (1 << 0) ؛ _delay_ms (1000) ؛ }
إذا كانت حالة من 1 شارع زر هو الصحيح ثم تدوير المحرك العاصمة في ساعة توجيهاته السديدة وإذا وضع زر الثاني هو الصحيح ثم تدوير محرك DC في مكافحة عقارب الساعة.
إذا (i == 1) { PORTA - = (1 << 0) ؛ PORTA & = ~ (1 << 1) ؛ } else if (i == 2) { PORTA - = (1 << 1) ؛ PORTA & = ~ (1 << 0) ؛ }
يمكنك توصيل دبابيس المحرك بأي طرف GPIO حسب GPIO المستخدم. من المهم أيضًا استخدام Motor Driver IC لتقليل الحمل على وحدة التحكم الدقيقة لأن وحدات التحكم الدقيقة غير قادرة على توفير التيار المطلوب لتشغيل محركات التيار المستمر. لمزيد من التفاصيل والمشاريع الأخرى القائمة على محركات DC ، يرجى زيارة الرابط المحدد.
الكود الكامل والفيديو التوضيحي مذكور أدناه.