- السائر المحركات
- تدوير محرك متدرج باستخدام ARM7-LPC2148
- المكونات مطلوبة
- محرك متدرج (28BYJ-48)
- ULN2003 محرك متدرج
- مخطط الرسم البياني
- برمجة ARM7-LPC2148 لمحرك متدرج
في عالم الأتمتة اليوم ، يعد المحرك المتدرج والمحرك المؤازر من أكثر المحركات استخدامًا في الأنظمة المدمجة. يتم استخدام كلاهما في العديد من آلات الأتمتة مثل الأذرع الروبوتية ، وآلة CNC ، والكاميرات وما إلى ذلك في هذا البرنامج التعليمي ، سنرى كيفية ربط Stepper Motor بـ ARM7-LPC2148 وكيفية التحكم في سرعته. إذا كنت جديدًا على ARM7 ، فابدأ بالتعرف على ARM7-LPC2148 وأدوات البرمجة الخاصة به.
السائر المحركات
المحرك السائر هو محرك DC بدون فرش ، يمكن تدويره بزوايا صغيرة ، وتسمى هذه الزوايا بالخطوات. يمكننا تدوير محرك السائر خطوة بخطوة عن طريق إعطاء نبضات رقمية لمساميرها المحركات السائر غير مكلفة ولها تصميم متين. يمكن التحكم في سرعة المحرك عن طريق تغيير تردد النبضات الرقمية.
يتوفر نوعان من محركات السائر بناءً على نوع لف الجزء الثابت: UNIPOLAR و BIPOLAR. نحن هنا نستخدم محرك متدرج UNIPOLAR وهو المحرك المتدرج الأكثر استخدامًا . لتدوير محرك السائر ، نحتاج إلى تنشيط ملفات المحرك السائر بالتسلسل. بناءً على عملية الدوران يتم تصنيفها إلى وضعين:
- وضع الخطوة الكاملة: (تسلسل من 4 خطوات)
- خطوة واحدة على خطوة (خطوة موجية)
- مرحلتين عند الخطو
- وضع نصف الخطوة (تسلسل من 8 خطوات)
لمعرفة المزيد عن محرك السائر وتشغيله ، اتبع الرابط.
تدوير محرك متدرج باستخدام ARM7-LPC2148
هنا سوف نستخدم FULL STEP: ONE PHASE ON أو WAVE STEPPING mode لتدوير المحرك السائر باستخدام ARM7-LPC2148
في هذه الطريقة سنقوم بتنشيط ملف واحد فقط (دبوس واحد من LPC2148) في كل مرة. هذا إذا تم تنشيط الملف الأول A لفترة قصيرة ، فسيقوم العمود بتغيير موضعه ثم يتم تنشيط الملف B في نفس الوقت وسيغير العمود موضعه مرة أخرى. مثل هذا ، يتم تنشيط الملف C ثم الملف D لتحريك العمود أكثر. هذا يجعل عمود المحرك السائر يدور خطوة بخطوة عن طريق تنشيط ملف واحد في كل مرة.
بهذه الطريقة نقوم بتدوير العمود خطوة بخطوة عن طريق تنشيط الملف في تسلسل. هذا يسمى تسلسل أربع خطوات لأنه يأخذ أربع خطوات
يمكنك تدوير محرك متدرج باستخدام طريقة HALF STEP (طريقة 8 تسلسل) وفقًا للقيم الواردة أدناه.
خطوة |
ملف أ |
ملف ب |
لفائف ج |
ملف D |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
المكونات مطلوبة
المعدات:
- ARM7-LPC2148
- ULN2003 محرك سائق IC
- LED - 4
- STEPPER MOTOR (28BYJ-48)
- لوحة الخبز
- توصيل الأسلاك
البرمجيات:
- Keil uVision5
- أداة ماجيك فلاسيك
محرك متدرج (28BYJ-48)
28BYJ-48 محرك متدرج معروض بالفعل في الصورة أعلاه. إنه محرك متدرج أحادي القطب يتطلب إمداد 5 فولت. يحتوي المحرك على ترتيب أحادي القطب 4 لفائف ويتم تصنيف كل ملف لـ + 5 فولت ومن ثم فمن السهل نسبيًا التحكم فيه باستخدام أي وحدات تحكم دقيقة مثل Arduino و Raspberry Pi و STM32 و ARM وما إلى ذلك.
لكننا نحتاج إلى محرك IC مثل ULN2003 لقيادته ، لأن المحركات السائر تستهلك تيارًا عاليًا وقد تلحق الضرر بالميكروكونترولر.
يتم توفير مواصفات 28BYJ-48 في ورقة البيانات أدناه:
تحقق أيضًا من التفاعل مع Stepper Motor مع وحدات التحكم الدقيقة الأخرى:
- ربط محرك متدرج مع Arduino Uno
- تحكم في محرك متدرج مع Raspberry Pi
- محرك متدرج يتفاعل مع متحكم 8051
- ربط محرك متدرج مع متحكم PIC
- ربط محرك متدرج مع MSP430G2
يمكن أيضًا التحكم في محرك السائر بدون أي متحكم ، انظر دائرة سائق محرك متدرج.
ULN2003 محرك متدرج
ستعمل معظم محركات السائر فقط بمساعدة وحدة السائق. هذا لأن وحدة التحكم (في حالتنا LPC2148) لن تكون قادرة على توفير تيار كافٍ من دبابيس الإدخال / الإخراج الخاصة بها لتشغيل المحرك. لذلك سوف نستخدم وحدة خارجية مثل وحدة ULN2003 كسائق محرك متدرج.
في هذا المشروع ، سوف نستخدم محرك ULN2003 IC. ويرد أدناه مخطط دبوس IC:
الدبابيس (IN1 إلى IN7) هي دبابيس إدخال لتوصيل خرج متحكم و OUT1 إلى OUT7 هي دبابيس إخراج مقابلة لتوصيل مدخلات محركات السائر. يتم إعطاء COM جهد مصدر موجب مطلوب لأجهزة الإخراج ومصدر إدخال الطاقة الخارجية.
مخطط الرسم البياني
يرد أدناه مخطط الدائرة لربط محرك متدرج مع ARM-7 LPC2148
ARM7-LPC2148 مع ULN2003 محرك IC
تعتبر دبابيس GPIO الخاصة بـ LPC2148 (P0.7 إلى P0.10) بمثابة دبابيس إخراج متصلة بدبابيس الإدخال (IN1-IN4) الخاصة بـ ULN2003 IC.
دبابيس LPC2148 |
دبابيس ULN2003 IC |
P0.7 |
في 1 |
P0.8 |
في 2 |
ص 0.9 |
في 3 |
ص 10 |
IN4 |
5 فولت |
COM |
GND |
GND |
اتصالات ULN2003 IC مع محرك متدرج (28BYJ-48)
تتصل دبابيس الإخراج (OUT1-OUT4) الخاصة بـ ULN2003 IC بدبابيس محركات السائر (الأزرق والوردي والأصفر والبرتقالي).
ULN2003 IC PINS |
دبابيس من STEPPER MOTOR |
خارج 1 |
أزرق |
خارج 2 |
زهري |
خارج 3 |
الأصفر |
خارج 4 |
البرتقالي |
COM |
أحمر (+5 فولت) |
المصابيح مع IN1 إلى IN4 من ULN2003
أربعة دبابيس أنود LED (LED1 ، LED2 ، LED4 ، LED 4) متصلة بالمسامير IN1 و IN2 و IN3 و IN4 من ULN2003 على التوالي ويتم توصيل كاثود مصابيح LED بـ GND والذي يشير إلى النبضات من LPC2148. يمكننا ملاحظة نمط النبضات المقدمة. يظهر النمط في فيديو العرض التوضيحي المرفق في النهاية.
برمجة ARM7-LPC2148 لمحرك متدرج
لبرمجة ARM7-LPC2148 نحتاج إلى أداة keil uVision & Flash Magic. نحن نستخدم كابل USB لبرمجة ARM7 Stick عبر منفذ micro USB. نكتب رمزًا باستخدام Keil وننشئ ملفًا سداسيًا ثم يتم وميض ملف HEX إلى ARM7 باستخدام Flash Magic. لمعرفة المزيد حول تثبيت keil uVision و Flash Magic وكيفية استخدامهما ، اتبع الرابط Getting Started with ARM7 LPC2148 Microcontroller وبرمجته باستخدام Keil uVision.
تم تقديم الكود الكامل للتحكم في Stepper Motor باستخدام ARM 7 في نهاية هذا البرنامج التعليمي ، ونوضح هنا أجزاء قليلة منه.
1. لاستخدام طريقة FULL STEP-ONE PHASE ON ، نحتاج إلى تضمين الأمر أدناه. لذلك نستخدم السطر التالي في البرنامج
حرف بدون علامة في اتجاه عقارب الساعة = {0x1،0x2،0x4،0x8} ؛ // أوامر للدوران في اتجاه عقارب الساعة بدون إشارة char عكس اتجاه عقارب الساعة = {0x8،0x4،0x2،0x1}؛ // أوامر للدوران عكس اتجاه عقارب الساعة
2. يتم استخدام الأسطر التالية لتهيئة دبابيس PORT0 كإخراج وضبطها على LOW
PINSEL0 = 0x00000000 ؛ // إعداد دبابيس PORT0 IO0DIR - = 0x00000780 ؛ // إعداد المسامير P0.7 ، P0.8 ، P0.9 ، P0.10 مثل OUTPUT IO0CLR = 0x00000780 ؛ // إعداد P0.7 ، P0.8 ، P0.9 ، P0.10 دبابيس OUTPUT كـ LOW
3. اضبط دبابيس PORT (P0.7 إلى P0.10) HIGH وفقًا لأوامر اتجاه عقارب الساعة باستخدام حلقة for مع تأخير
لـ (int j = 0 ؛ j
نفس الشيء بالنسبة للحكيم ضد عقارب الساعة
لـ (int z = 0 ؛ z
4. قم بتغيير وقت التأخير لتغيير سرعة دوران محرك السائر
تأخير (0x10000) ؛ // قم بتغيير هذه القيمة لتغيير سرعة الدوران (0x10000) - السرعة الكاملة (0x50000) - يحصل ببطء (0x90000) - يصبح أبطأ من السابق. لذلك من خلال زيادة التأخير ، نخفض سرعة الدوران.
5. يمكن تغيير عدد الخطوات لدورة كاملة واحدة باستخدام الكود أدناه
عدد int no_of_steps = 550 ؛ // قم بتغيير هذه القيمة لعدد الخطوات المطلوبة للتناوب (550 يعطي دورانًا كاملًا)
بالنسبة لمحرك السائر الخاص بي ، حصلت على 550 خطوة للدوران الكامل و 225 لنصف الدوران. لذا قم بتغييره وفقًا لمتطلباتك.
6. يتم استخدام هذه الوظيفة لإنشاء وقت تأخير.
تأخير باطل (قيمة int غير موقعة) // وظيفة لإنشاء تأخير { unsigned int z؛ لـ (z = 0 ؛ z
كود كامل مع الفيديو التوضيحي أدناه.