- المكونات مطلوبة
- الاستعداد للطباعة ثلاثية الأبعاد ARM الروبوتية
- مخطط الرسم البياني
- الخطوات المتبعة في برمجة LPC2148 للذراع الآلي
- شرح الترميز
- اختيار محرك سيرفو للتدوير باستخدام أزرار الضغط
- عمل اختيار ووضع الذراع الروبوتية
تعتبر الأذرع الروبوتية واحدة من الإبداعات الهندسية الرائعة ومن الرائع دائمًا مشاهدة هذه الأشياء وهي تميل وتدور لإنجاز الأشياء المعقدة تمامًا مثل الذراع البشرية. يمكن العثور على هذه الأذرع الروبوتية بشكل شائع في الصناعات في خط التجميع التي تؤدي أعمالًا ميكانيكية مكثفة مثل اللحام والحفر والطلاء وما إلى ذلك ، كما يتم تطوير أذرع روبوتية متقدمة مؤخرًا بدقة عالية لإجراء عمليات جراحية معقدة. حتى في بناء هذا اسمحوا تعليمي بسيط في الذراع الروبوتية باستخدام ARM7-LPC2148 متحكم لاختيار ووضع كائن اليدوية السيطرة على الجهد قليلة.
سنستخدم في هذا البرنامج التعليمي ARM آليًا مطبوعًا ثلاثي الأبعاد تم إنشاؤه باتباع الإجراء في الكون. يستخدم ARM 4 محركات مؤازرة لحركة ARM الآلية. إذا لم يكن لديك طابعة ، فيمكنك أيضًا بناء ذراعك باستخدام ورق مقوى بسيط كما صممناه لمشروع Arduino Robotic Arm الخاص بنا. للحصول على الإلهام ، يمكنك أيضًا الرجوع إلى الذراع الروبوتية للتسجيل والتشغيل التي أنشأناها مسبقًا باستخدام Arduino.
الآن دعونا نجهز الأشياء لمشروعنا
المكونات مطلوبة
- 3D طابعة الروبوتية ARM
- ARM7-LPC2148
- محرك سيرفو SG-90 (4)
- 10 كيلو الجهد (4)
- زر ضغط (4)
- ال اي دي (4)
- 5V (1A) محول طاقة تيار مستمر
- المقاومات (10 ك (4) ، 2.2 ك (4))
- اللوح
- توصيل الأسلاك
الاستعداد للطباعة ثلاثية الأبعاد ARM الروبوتية
تم إنشاء الذراع الروبوتية المطبوعة ثلاثية الأبعاد المستخدمة في هذا البرنامج التعليمي باتباع التصميم المقدم من EEZYbotARM والمتوفر في Thingiverse. الإجراء الكامل لصنع الذراع الروبوتية المطبوعة ثلاثية الأبعاد وتفاصيل التجميع مع الفيديو موجودة في رابط الكون الأشياء ، الذي تمت مشاركته أعلاه.
هذه صورة ذراعي الآلية المطبوعة ثلاثية الأبعاد بعد تجميعها مع 4 محركات مؤازرة.
مخطط الرسم البياني
توضح الصورة التالية توصيلات الدائرة للذراع الآلي القائم على ARM.
توصيلات الدائرة للمشروع بسيطة. تأكد من تشغيل محركات سيرفو بمحول طاقة منفصل بجهد 5 فولت. بالنسبة لمقاييس الجهد وأزرار الضغط ، يمكننا استخدام 3.3 فولت المتوفرة من المتحكم الدقيق LPC2148.
نحن هنا نستخدم 4 دبابيس ADC من LPC2148 مع 4 مقاييس فرق الجهد. وأيضًا 4 دبابيس PWM لـ LPC2148 متصلة بدبابيس PWM لمحرك سيرفو. لقد قمنا أيضًا بتوصيل 4 أزرار ضغط لتحديد المحرك الذي سيتم تشغيله. لذلك ، بعد الضغط على الزر ، يتنوع مقياس الجهد المحترم لتغيير موضع محرك سيرفو.
يتم سحب الأزرار الانضغاطية بأحد طرفيها المتصل بـ GPIO الخاص بـ LPC2148 عبر المقاوم من 10 كيلو وطرف آخر متصل بـ 3.3 فولت. يتم أيضًا توصيل 4 مصابيح LED للإشارة إلى محرك سيرفو الذي تم تحديده لتغيير الوضع.
توصيلات الدائرة بين 4 محركات مؤازرة و LPC2148:
LPC2148 | أجهزة السيارات |
ص 0.1 | SERVO1 (PWM- برتقالي) |
P0.7 | SERVO2 (PWM- برتقالي) |
P0.8 | SERVO3 (PWM- برتقالي) |
ص 0.21 | SERVO4 (PWM- برتقالي) |
توصيلات الدائرة بين 4 مقاييس الجهد و LPC2148:
LPC2148 | مقياس الجهد مركز الدبوس الأيسر - 0V GND من LPC2148 الدبوس الأيمن - 3.3V من LPC2148 |
ص 0.25 | مقياس الجهد 1 |
ص 0.28 | مقياس الجهد 2 |
ص 29 | مقياس الجهد 3 |
ص 0.30 | مقياس الجهد 4 |
توصيلات الدوائر لـ 4 مصابيح LED مع LPC2148:
LPC2148 | أنود LED (كاثود كل مصابيح LED هو GND) |
ص 1.28 | LED1 (الأنود) |
ص 1.29 | LED2 (الأنود) |
ص 1.30 | LED3 (الأنود) |
ص 1.31 | LED4 (الأنود) |
توصيلات الدوائر من 4 أزرار ضغط مع LPC2148:
LPC2148 | زر ضغط (مع المقاوم المنسدل 10 كيلو) |
ص 1.17 | زر الضغط 1 |
ص 1.18 | زر الضغط 2 |
ص 1.19 | زر الضغط 3 |
ص1.20 | زر الضغط 4 |
الخطوات المتبعة في برمجة LPC2148 للذراع الآلي
قبل البرمجة لهذا الذراع الروبوتية ، نحتاج إلى معرفة كيفية إنشاء PWM في LPC2148 واستخدام ADC في ARM7-LPC2148. لذلك ، راجع مشاريعنا السابقة على Interfacing Servo motor مع LPC2148 وكيفية استخدام ADC في LPC2148.
تحويل ADC باستخدام LPC2148
نظرًا لأننا بحاجة إلى توفير قيم ADC لتحديد قيمة دورة العمل لتوليد خرج PWM للتحكم في موضع محرك سيرفو. نحن بحاجة إلى إيجاد قيم ADC لمقياس الجهد. نظرًا لأن لدينا أربعة مقاييس جهد للتحكم في أربعة محركات مؤازرة ، فنحن بحاجة إلى 4 قنوات ADC من LPC2148. هنا في هذا البرنامج التعليمي ، نستخدم دبابيس ADC (P0.25 ، P0.28 ، P0.29 ، P0.30) لقنوات ADC البالغة 4،1،2،3 الموجودة على التوالي في LPC2148.
توليد إشارات PWM لمحرك سيرفو باستخدام LPC2148
حيث نحتاج إلى توليد إشارات PWM للتحكم في موضع محرك سيرفو. نحن بحاجة إلى ضبط دورة عمل PWM. لدينا أربعة محركات مؤازرة متصلة بالذراع الآلي لذلك نحتاج إلى 4 قنوات PWM من LPC2148. هنا في هذا البرنامج التعليمي ، نستخدم دبابيس PWM (P0.1 ، P0.7 ، P0.8 ، P0.21) لقنوات PWM من 3،2،4،5 على التوالي موجودة في LPC2148.
برمجة وتفليش ملف سداسي عشري إلى LPC2148
لبرنامج ARM7-LPC2148 نحتاج كايل uVision ووميض كود HEX هناك حاجة إلى أداة LPC2148 فلاش ماجيك. يتم استخدام كبل USB هنا لبرمجة ARM7 Stick عبر منفذ micro USB. نكتب رمزًا باستخدام Keil وننشئ ملفًا سداسيًا ثم يتم وميض ملف HEX إلى ARM7 باستخدام Flash Magic. لمعرفة المزيد حول تثبيت keil uVision و Flash Magic وكيفية استخدامهما ، اتبع الرابط Getting Started with ARM7 LPC2148 Microcontroller وبرمجته باستخدام Keil uVision.
شرح الترميز
يتم تقديم البرنامج الكامل لمشروع الذراع الآلية هذا في نهاية البرنامج التعليمي. الآن دعونا نرى البرمجة بالتفصيل.
تكوين منفذ LPC2148 لاستخدام GPIO و PWM و ADC:
استخدام سجل PINSEL1 لتمكين قنوات ADC- ADC0.4، ADC0.1، ADC0.2، ADC0.3 للدبابيس P0.25، P0.28، P0.29، P0.30. وأيضًا بالنسبة لـ PWM5 للدبوس P0.21 (1 << 10).
#define AD04 (1 << 18) // حدد وظيفة AD0.4 لـ P0.25 # تعريف AD01 (1 << 24) // حدد وظيفة AD0.1 لـ P0.28 # تعريف AD02 (1 << 26) / / حدد وظيفة AD0.2 لـ P0.29 #define AD03 (1 << 28) // حدد وظيفة AD0.3 لـ P0.30 PINSEL1 - = AD04 - AD01 - AD02 - AD03 - (1 << 10) ؛
استخدام سجل PINSEL0 لتمكين قنوات PWM3 ، PWM2 ، PWM4 للدبابيس P0.1 ، P0.7 ، P0.8 من LPC2148.
PINSEL0 = 0x000A800A ؛
استخدام سجل PINSEL2 لتمكين وظيفة دبوس GPIO لجميع المسامير في PORT1 المستخدمة لتوصيل LED وزر الضغط.
PINSEL2 = 0x00000000 ؛
لجعل دبابيس LED كدبابيس Output و Pushbutton كإدخال ، يتم استخدام سجل IODIR1. (0 لـ INPUT & 1 لـ OUTPUT)
IODIR1 = ((0 << 17) - (0 << 18) - (0 << 19) - (0 << 20) - (1 << 28) - (1 << 29) - (1 << 30)) - (1 << 31)) ؛
بينما يتم تعريف أرقام الدبوس على أنها
#define SwitchPinNumber1 17 // (متصل بـ P1.17) #define SwitchPinNumber2 18 // (متصل بـ P1.18) #define SwitchPinNumber3 19 // (متصل بـ P1.19) #define SwitchPinNumber4 20 // (متصل بـ P1. 20) #define LedPinNumber1 28 // (متصل بـ P1.28) #define LedPinNumber2 29 // (متصل بـ P1.29) #define LedPinNumber3 30 // (متصل بـ P1.30) #define LedPinNumber4 31 // (متصل بـ ص 1.31)
تكوين إعداد تحويل ADC
بعد ذلك يتم تعيين وضع تحويل ADC والساعة الخاصة بـ ADC باستخدام سجل AD0CR_setup.
AD0CR_setup طويل بدون توقيع = (CLKDIV << 8) - BURST_MODE_OFF - PowerUP ؛ // إعداد وضع ADC
بينما يتم تعريف CLCKDIV و Burst Mode و PowerUP على أنها
#define CLKDIV (15-1) #define BURST_MODE_OFF (0 << 16) // 1 للتشغيل و 0 للإيقاف #define PowerUP (1 << 21)
ضبط الساعة لتحويل ADC (CLKDIV)
يستخدم هذا لإنتاج الساعة لـ ADC. ساعة ADC 4 ميجا هرتز (ADC_CLOCK = PCLK / CLKDIV) حيث يتم استخدام "CLKDIV-1" بالفعل ، في حالتنا PCLK = 60 ميجا هرتز
وضع الاندفاع (بت -16): يتم استخدام هذا البت لتحويل الانفجار. إذا تم تعيين هذا البت ، فستقوم وحدة ADC بالتحويل لجميع القنوات التي تم تحديدها (SET) في بتات SEL. تعيين 0 في هذا البت سيعطل تحويل BURST.
وضع خفض الطاقة (بت -21): يستخدم هذا لتشغيل أو إيقاف تشغيل ADC. يؤدي الإعداد (1) في هذا البت إلى إخراج ADC من وضع خفض الطاقة وتشغيله. سيؤدي مسح هذا الشيء إلى إيقاف تشغيل ADC.
تكوين إعداد تحويل PWM
قم أولاً بإعادة تعيين عداد PWM وتعطيله باستخدام سجل PWMTCR وإعداد PWM Timer Prescale Register بقيمة مسبقة المقياس.
PWMTCR = 0x02 ؛ PWMPR = 0x1D ؛
قم بعد ذلك بتعيين الحد الأقصى لعدد التهم في دورة واحدة. يتم ذلك في Match Register 0 (PWMMR0). حيث لدينا 20000 كموجة PWM تبلغ 20 مللي ثانية
PWMMR0 = 20000 ،
بعد ذلك قم بتعيين قيمة دورة العمل في سجلات المطابقة ، نستخدم PWMMR4 و PWMMR2 و PWMMR3 و PWMMR5. نحن هنا نضع القيم الأولية لـ 0 مللي ثانية (Toff)
PWMMR4 = 0 ، PWMMR2 = 0 ، PWMMR3 = 0 ، PWMMR5 = 0 ،
بعد ذلك ، قم بتعيين PWM Match Control Register لإحداث إعادة تعيين للعداد عند حدوث تسجيل المباراة.
PWMMCR = 0x00000002 ؛ // إعادة تعيين على MR0 match
بعد ذلك ، PWM latch تمكين التسجيل لتمكين استخدام قيمة المطابقة (PWMLER)
PWMLER = 0x7C ؛ // تمكين المزلاج لـ PWM2 و PWM4 و PWM4 و PWM5
إعادة تعيين عداد المؤقت باستخدام قليلا في PWM Timer Control Register (PWMTCR) كما أنه يتيح PWM.
PWMTCR = 0x09 ؛ // تمكين PWM والعداد
بعد ذلك ، قم بتمكين مخرجات PWM واضبط PWM في وضع التحكم أحادي الحافة في سجل التحكم PWM (PWMPCR).
PWMPCR = 0x7C00 ؛ // تمكين PWM2 و PWM4 و PWM4 و PWM5 ، PWM ذات حافة واحدة يتم التحكم فيها
اختيار محرك سيرفو للتدوير باستخدام أزرار الضغط
لدينا أربعة أزرار ضغط تُستخدم لتدوير أربعة محركات مؤازرة مختلفة. من خلال تحديد زر ضغط واحد وتغيير مقياس الجهد المقابل ، تحدد قيمة ADC دورة العمل ويغير محرك سيرفو المقابل موضعه. للحصول على حالة مفتاح زر الضغط
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01 ؛
لذلك ، بناءً على قيمة التبديل التي تكون عالية ، يتم تحويل ADC إلى أماكن ثم بعد التحويل الناجح لقيمة ADC (من 0 إلى 1023) ، يتم تعيينها من حيث (0 إلى 2045) ومن ثم كتابة قيمة دورة العمل إلى (PWMMRx) دبوس PWM متصل بمحرك سيرفو. وأيضًا ، يتم تشغيل مؤشر LED عاليًا للإشارة إلى المفتاح الذي يتم الضغط عليه. فيما يلي مثال على زر الضغط الأول
إذا (switchStatus1 == 1) { IOPIN1 = (1 <
عمل اختيار ووضع الذراع الروبوتية
بعد تحميل الكود إلى LPC2148 ، اضغط على أي مفتاح وقم بتغيير مقياس الجهد المقابل لتغيير موضع الذراع الآلية.
يتحكم كل مفتاح ومقياس جهد في كل حركة مؤازرة هي حركة أساسية يسارًا أو يمينًا ، حركة لأعلى أو لأسفل ، للأمام أو للخلف ثم القابض لإمساك الحركة وتحريرها. ويرد أدناه رمز كامل مع فيديو عمل مفصل.