يحتوي هذا المقال على روابط تسويق بالعمولة مُعلَّمة بعلامة *. بصفتي شريكًا في برنامج Amazon Associates، أربح من عمليات الشراء المؤهلة، دون أي تكلفة إضافية عليك. يساعد ذلك على إبقاء الشروحات مجانية.
ملخص سريع
ابنِ ذراعًا روبوتية بست درجات حرية (6-DOF) من أجزاء مطبوعة بتقنية 3D ولوحة Arduino Mega. تستخدم الذراع ثلاثة محركات سيرفو MG996R وثلاثة محركات سيرفو SG90 ولوحة قيادة السيرفو PCA9685. وتتحكم في الذراع ست مقاومات متغيرة (Potentiometer)، واحدة لكل سيرفو. يتضمن المقال قائمة القطع وإعدادات الطباعة وخطوات التجميع ومخطط التوصيل وبرنامج Arduino (Sketch) كاملًا.
تعني 6-DOF (ست درجات حرية) أن للذراع ستة مفاصل، يحرّك كلًّا منها محرك سيرفو خاص به. تحرّك ثلاثة محركات سيرفو MG996R دوران القاعدة والكتف والمرفق. وتحرّك ثلاثة محركات سيرفو صغيرة SG90 ميل المعصم (Pitch) ودوران المعصم (Roll) والقابض. فالميل يحرّك القابض إلى الأعلى والأسفل؛ والدوران يلفّه حول محور آخر وصلة في الذراع. وبالمعنى الدقيق لا يُعدّ القابض درجة حرية، لكن أذرع الهواة تحسبه عادةً. ويشرح دليل التحكم بمحرك السيرفو الذي كتبته كيف تعمل هذه المحركات.
يتبع كل سيرفو مقاومته المتغيرة الخاصة به بقيمة 10 kΩ، وهي مقاومة دوّارة يتغير جهد خرجها كلما أدرت محورها. يحصل السيرفو على زاويته المستهدفة من إشارة PWM (تعديل عرض النبضة): نبضة تتكرر مرات كثيرة في الثانية، ويحدد طولها الزاوية. تولّد لوحة PCA9685 إشارات PWM الست كلها. ويرسل إليها Arduino الأوامر عبر I2C، وهو ناقل لا يحتاج إلا إلى سلكين: SDA للبيانات وSCL لإشارة الساعة. فيديو البناء أدناه.
قائمة المواد
البنود من 1 إلى 12 هي الأجزاء المطبوعة. وتحمل ملفات STL الخاصة بها في حزمة التنزيل أسماء مشابهة، مثل base_link.stl للجزء Base_1 وgripper_link.stl للجزء Link.
| البند | الكمية | الجزء | الوصف |
|---|---|---|---|
| 1 | 1 | Base_1 | لوح القاعدة (ثابت) |
| 2 | 1 | base_link_upper1 | المنصة العلوية (دوّارة) |
| 3 | 1 | arm_link_1 | الوصلة الأولى في الذراع |
| 4 | 1 | arm_link_2 | الوصلة الثانية في الذراع |
| 5 | 1 | arm_link_3 | الوصلة الثالثة في الذراع |
| 6 | 1 | gripper_base | قاعدة القابض |
| 7 | 1 | Gripper_2 | إصبع القابض |
| 8 | 1 | Gear_right | ترس القابض (الأيمن) |
| 9 | 1 | Gear_left | ترس القابض (الأيسر) |
| 10 | 1 | القابض | إصبع القابض الثاني |
| 11 | 4 | الوصلة | أجزاء وصلات القابض |
| 12 | 2 | فاصل | فواصل مفصل القابض |
| 13 | 3 | محرك سيرفو MG996R | سيرفو عالي العزم، إصدار 180° (القاعدة، الكتف، المرفق) |
| 14 | 3 | محرك سيرفو مصغّر SG90 | سيرفو مصغّر (المعصم، القابض) |
| 15 | 16 | ANSI B18.6.4 No.2-32 3/8″ | برغي برأس مقبب عريض (Truss)، No.2-32 |
| 16 | 2 | ANSI B18.6.4 No.2-32 1/4″ | برغي برأس مقبب عريض (Truss)، No.2-32 |
| 17 | 3 | DIN 7985 M1.6×2-Z | برغي برأس صليبي M1.6×2 |
| 18 | 7 | ISO 4762 M3x16 (AS 1420) | برغي برأس سداسي التجويف (ألن) M3×16 |
| 19 | 12 | ISO 4032 M3 (AS 1112) | صامولة سداسية M3 |
| 20 | 2 | ANSI B18.6.4 No.2-32 1/2″ | برغي برأس مقبب عريض (Truss)، No.2-32 |
| 21 | 3 | ذراع سيرفو MG996R (Horn) | الذراع (Horn) المرفقة مع MG996R |
| 22 | 3 | DIN 7985 M3x6-Z | برغي برأس صليبي M3×6 |
| 23 | 3 | ذراع سيرفو SG90 (Horn) | ذراع (Horn) لسيرفو SG90 |
| 24 | 12 | ANSI B18.6.4 No.3-28 1/2″ | برغي برأس مقبب عريض (Truss)، No.3-28 |
| 25 | 1 | محمل كروي 6806ZZ (30x42x7) | محمل كروي ذو أخدود عميق (30×42×7 mm) |
| 26 | 1 | Arduino Mega | وحدة التحكم الرئيسية (يشرح قسم التوصيلات سبب عدم استخدام Uno) |
| 27 | 1 | لوحة قيادة السيرفو PCA9685 | وحدة قيادة PWM بـ 16 قناة (I2C) |
| 28 | 6 | مقاومة متغيرة (Potentiometer) بقيمة 10 kΩ | واحدة لكل سيرفو |
| 29 | 1 | لوحة التجارب (Breadboard) | قاعدة توصيل للمقاومات المتغيرة |
| 30 | 1 | مزود طاقة 5 V 10 A | مصدر تغذية محركات السيرفو |
| 31 | 1 | أسلاك توصيل Jumper (ذكر-أنثى) | من Arduino إلى PCA9685 |
| 32 | 1 | أسلاك توصيل Jumper (ذكر-ذكر) | من لوحة التجارب إلى Arduino |
| 33 | 1 | لوح خشبي | منصة تثبيت الذراع |
تصميم الأجزاء في Autodesk Inventor
صُمّمت جميع الأجزاء في Autodesk Inventor وصُدّرت ملفاتٍ بصيغة STL. وSTL هي صيغة النماذج ثلاثية الأبعاد (3D) التي يقرؤها برنامج التقطيع (Slicer)؛ وبرنامج التقطيع هو البرنامج الذي يحوّل النموذج إلى تعليمات للطابعة. وInventor برنامج CAD (التصميم بمساعدة الحاسوب) بارامتري: يُخزَّن كل بُعد كقيمة يمكنك تغييرها لاحقًا، ويُظهر عرض التجميع ما إذا كانت الأجزاء تتلاءم قبل أن تطبعها. إذا كنت جديدًا على Inventor أو على الطباعة ثلاثية الأبعاد (3D)، فابدأ بقراءة مقالي مقدمة في الطباعة ثلاثية الأبعاد والتصميم ثلاثي الأبعاد (3D) باستخدام Inventor.
تتحدد مقاسات الأجزاء وفق نوعي السيرفو. يحرّك MG996R (بعزم توقف يبلغ نحو 9 إلى 11 kg·cm حسب الجهد) القاعدة والكتف والمرفق، حيث يكون الحمل في أعلى مستوياته. وعزم التوقف هو العزم الذي يتوقف عنده السيرفو عن الدوران؛ ويعني 1 kg·cm أنه يحمل 1 kg على ذراع رافعة تبعد 1 cm عن المحور. أما SG90 (نحو 1.8 kg·cm) فصغير وخفيف، لذا يحرّك المعصم والقابض، حيث يكون الحمل في أدنى مستوياته.
صمّمت عند كل مفصل حافة أسطوانية تُبقي الدوران متمركزًا، فيدور المفصل في دائرة منتظمة. أما تجاويف السيرفو ومقعد المحمل فمقاساتها مصممة للتركيب بالضغط (Press Fit): كل فتحة أضيق قليلًا من القطعة، فتدفع القطعة إلى الداخل ويثبّتها الاحتكاك. كما تُثبَّت محركات السيرفو بالبراغي أثناء التجميع. توقّع أن تحتاج إلى صنفرة خفيفة بعد الطباعة. يُظهر الرسم الفني أدناه جميع أبعاد الأجزاء والمقاطع وطريقة تركيب الأجزاء معًا. استخدمه للتحقق من دقة الطباعة.

طباعة الأجزاء بالطابعة ثلاثية الأبعاد (3D)
افتح ملفات STL من حزمة التنزيل في برنامج التقطيع (Slicer). قطّعت الأجزاء في Cura وطبعتها على طابعتي Anycubic i3 Mega. استخدم هذه الإعدادات:
- المادة: خيط طباعة (Filament) من PLA. خيط الطباعة هو السلك البلاستيكي الملفوف على بكرة الذي تصهره الطابعة؛ وPLA بلاستيك شائع في الطباعة ثلاثية الأبعاد (3D)، سهل الطباعة ويُظهر التفاصيل الدقيقة بوضوح.
- ارتفاع الطبقة: 0.2 mm، وهو سُمك كل طبقة مطبوعة.
- نسبة الملء (Infill): 40% على الأقل للقاعدة ووصلات الذراع. نسبة الملء هي الحشو الداخلي للقطعة المطبوعة؛ و40% تعني أن 40% من داخلها مصمت. استخدمتُ في لوحة الطباعة الظاهرة في لقطة شاشة Cura أدناه نسبة 30% بنمط Cubic؛ أما 40% فتعطي أجزاءً أكثر صلابة.
- الجدران: سُمك جدار 1.2 mm، أي ثلاثة خطوط محيطية مع الفوهة القياسية 0.4 mm. والجدران هي الخطوط المحيطية المصمتة لكل طبقة.
- الدعامات: مفعّلة. الدعامات هياكل مؤقتة تُطبع تحت الأجزاء البارزة (Overhangs، وهي المقاطع التي تبرز فوق فراغ)، ثم تُزيلها بعد الطباعة. اطبع وصلات الذراع وهي مستلقية على سرير الطباعة.
بالنسبة إلى لوحة الطباعة في لقطة الشاشة أدناه، قدّر Cura مدة الطباعة بـ 1 يوم و12 ساعة و43 دقيقة واستهلاكًا قدره 280 g من خيط الطباعة. بعد الطباعة، أزل الدعامات، وصنفر أسطح التلامس (الأوجه التي يلتقي عندها جزءان)، وجرّب تركيب كل سيرفو في تجويفه.


تجميع الذراع
ابنِ الذراع من القاعدة صعودًا، بالترتيب الوارد أدناه. يُحرَّك كل مفصل عبر ذراع السيرفو (Horn)، وهي قطعة بلاستيكية صغيرة تُركَّب على محور خرج السيرفو وتنقل حركته. قبل تركيب ذراع السيرفو على محوره، حرّك ذلك السيرفو إلى وضعه الأوسط (نحو 90°). استخدم جهاز اختبار السيرفو (Servo Tester، وهو جهاز صغير يحرّك السيرفو إلى زاوية محددة)، أو وصّل الدائرة أولًا وأدر المقاومة المتغيرة الخاصة به إلى المنتصف. ثم ركّب ذراع السيرفو بحيث يقف المفصل في منتصف مداه.
بعد كل خطوة، أدر المفصل الجديد ببطء باليد وتأكد من عدم وجود احتكاك أو انحشار. لا تُجبر أي مفصل على تجاوز نقطة توقفه (End Stop، أي حد دورانه)؛ فتروس SG90 بلاستيكية. عندما اكتملت ذراعي، حرّكت كل مفصل باليد مرة أخرى قبل توصيل أي أسلاك.

الخطوة 1: تجميع القاعدة
- تثبيت محرك السيرفو: ركّب أول سيرفو MG996R في حامل القاعدة باستخدام البراغي المرفقة مع السيرفو، أو ببراغي ذاتية التسنين (Self-tapping) برأس صليبي M3×12. البراغي ذاتية التسنين تحفر أسنانها اللولبية بنفسها في البلاستيك. هذا السيرفو يدير القاعدة.
- إضافة المحمل الكروي (6806ZZ، 30×42×7 mm): اضغط المحمل الكروي ذا الأخدود العميق (Deep-groove، وهو النوع الشائع من المحامل الكروية) في مقعده داخل المنصة العلوية الدوّارة. ادفعه بشكل مستقيم حتى لا يميل في مقعده. الأرقام الثلاثة هي القطر الداخلي والقطر الخارجي والعرض بالمليمتر؛ وتعني ZZ أن للمحمل غطاءً معدنيًا على الجانبين. يقع المحمل بين لوحة القاعدة الثابتة والمنصة العلوية الدوّارة. أضفته إلى التصميم لتدور المنصة بحرية ولا تميل على محور السيرفو.
- تركيب ذراع السيرفو: ثبّت ذراع السيرفو على المنصة العلوية الدوّارة ببراغي ذاتية التسنين M2×12. أحكم شدّها جيدًا: فذراع السيرفو هذه تنقل كامل عزم دوران سيرفو القاعدة إلى الذراع التي فوقها.



الخطوة 2: تثبيت أذرع السيرفو على وصلات الذراع
ثبّت كل ذراع سيرفو على وصلة الذراع الخاصة بها ببرغيين. ذراع السيرفو غير المحاذية تسبب انحشارًا وحركة غير منتظمة، لذا تحقق من تطابق الثقوب قبل الشد. بالنسبة إلى محركات SG90، قصصت طرفي أذرع السيرفو البلاستيكية لتتلاءم مع التجاويف التي صممتها في الأجزاء المطبوعة.

الخطوة 3: تثبيت محركات السيرفو على وصلات الذراع
ضع كل سيرفو في تجويفه بحيث يقع محور الخرج على محور المفصل، كما في الصورة أدناه. ثبّته ببرغيين واضغط على السيرفو برفق: يجب ألا يتزحزح أو يهتز.

الخطوة 4: ربط وصلات الذراع
اربط مجموعات الوصلات والسيرفو معًا. ضع ذراع السيرفو المثبتة على إحدى الوصلات بحيث تدخل في نقطة التثبيت في الوصلة التالية، ثم ثبّتها بالبراغي. اشدد البراغي بالتساوي حتى يتحرك المفصل دون ارتخاء.

الخطوة 5: تجميع القابض
يستخدم القابض سيرفو صغيرًا SG90 وزوجًا من التروس المطبوعة بتقنية 3D لفتح الأصابع وإغلاقها. اجمعه بهذا الترتيب:
- ركّب SG90 في gripper_base.
- ركّب قطعة الترس الأولى على ذراع السيرفو SG90، ثم قطعة الترس المقابلة على الجانب الآخر بحيث يتعشّق الترسان.
- اربط أجزاء Link الأربعة بقطعتي Spacer، ثم أضف جزء الإصبع الأخير. استخدم براغي M3×20 لمفاصل القابض.
- اشدد البراغي وتحقق من أن الإصبعين ينفتحان وينغلقان بالتساوي دون انحشار.
- ثبّت القابض المكتمل على آخر وصلة في الذراع.

الخطوة 6: تثبيت الذراع على لوح خشبي
ثبّت الذراع المجمّعة على لوح خشبي مستوٍ ببراغي ذاتية التسنين M3×12. يمنع اللوح الذراع من الانقلاب أثناء الحركات السريعة، ويحمل لوحة التجارب (Breadboard) ومزود الطاقة.

لماذا تستخدم الذراع لوحة قيادة السيرفو PCA9685
يستطيع Arduino تشغيل محركات السيرفو مباشرة باستخدام مكتبة Servo. على Uno، تستخدم هذه المكتبة المؤقت العتادي Timer1، وهو أحد العدادات الداخلية في الشريحة. وهذا يعطّل الدالة analogWrite()، وهي دالة خرج PWM، على الطرفين 9 و10. كما تتعارض المكتبة مع مكتبات أخرى تحتاج إلى المؤقت نفسه. أما PCA9685 فتولّد النبضات على شريحتها الخاصة، فلا يرسل Arduino سوى الموضع الجديد عبر I2C. وتحتوي اللوحة الواحدة على 16 قناة، فتبقى عشر قنوات حرة مع ستة محركات سيرفو.
مرجع أطراف PCA9685 (Pinout)
- GND: أرضي مشترك مع Arduino.
- OE (Output Enable، تمكين الخرج): يعمل بالمستوى المنخفض (Active Low)، أي أن المخارج تكون مفعّلة ما دام هذا الطرف منخفضًا. تسحبه اللوحة إلى المستوى المنخفض، لذا اتركه غير موصول.
- SCL: خط الساعة في I2C.
- SDA: خط البيانات في I2C.
- VCC: تغذية المنطق، من 3.3 إلى 5 V. يغذي هذا الطرف شريحة PCA9685 فقط، لا محركات السيرفو.
- V+: خط تغذية السيرفو، حتى 6 V. وصّل مزود الطاقة الخارجي هنا عبر طرف التوصيل اللولبي المستقطب (Screw Terminal)، وهو موصل يثبّت كل سلك ببرغي وله جانب ثابت للموجب وآخر للسالب.
لكل قناة رأس توصيل من 3 أطراف (ثلاثة أطراف معدنية لـ PWM وV+ وGND) يقبل قابس السيرفو القياسي مباشرة.

توصيل Arduino بلوحة قيادة السيرفو
استخدم Arduino Mega في هذا المشروع؛ في الفيديو استخدمت لوحة متوافقة مع Mega. على Uno، يمثّل الطرفان A4 وA5 أيضًا خطّي I2C، أي SDA وSCL، لذا لا يمكنهما قراءة المقاومات المتغيرة أثناء توصيل PCA9685. أما على Mega، فإن SDA وSCL هما الطرفان 20 و21، وتبقى الأطراف من A0 إلى A5 حرة للمقاومات المتغيرة الست.
- من PCA9685 إلى Arduino: وصّل VCC بـ 5 V، وGND بـ GND، وSDA بالطرف 20، وSCL بالطرف 21. استخدم أسلاك توصيل (Jumper) من نوع ذكر-أنثى، وهي كابلات قصيرة بدبوس في أحد طرفيها ومقبس في الطرف الآخر. يربط سلك GND الأرضيّين معًا، وهذا ما تحتاجه إشارات I2C كمرجع مشترك.
- من محركات السيرفو إلى PCA9685: وصّل محركات السيرفو بـ PCA9685 بهذا الترتيب: القناة 0 للقاعدة، و1 للكتف، و2 للمرفق، و3 و4 لمحركي سيرفو المعصم، و5 للقابض. تتحكم المقاومة المتغيرة الموصولة بـ A0 في القناة 0، وA1 في القناة 1، وهكذا. اجعل السلك البني أو الأسود للسيرفو في صف الأطراف المعلَّم GND على اللوحة؛ أما سلك الإشارة البرتقالي أو الأصفر فيذهب إلى صف PWM.
- من المقاومات المتغيرة إلى Arduino: وصّل الطرفين الخارجيين لكل مقاومة متغيرة بـ 5 V وGND على لوحة التجارب (Breadboard)، وهي لوحة بنقاط تلامس نابضية لبناء الدوائر دون لحام. ثم وصّل الطرف الأوسط (الماسح Wiper، الذي يلتقط الجهد بين الطرفين الخارجيين) بالأطراف من A0 إلى A5 بأسلاك توصيل من نوع ذكر-ذكر.
- مزود طاقة السيرفو: وصّل مزود الطاقة 5 V 10 A بطرفي التوصيل اللولبيين V+ وGND في PCA9685. إذا كان مزودك من النوع المفتوح (Open-frame) بأطراف لولبية لجهد الشبكة (L وN والأرضي)، فهذه الأطراف تحمل جهد الشبكة الكهربائية. غطِّها، واترك توصيلات جهد الشبكة لشخص مؤهل. يتدفق تيار السيرفو من المزود عبر PCA9685، لا عبر Arduino. لا تغذِّ محركات السيرفو من طرف 5 V في Arduino؛ فهو لا يستطيع توفير تيار كافٍ. يمكن أن يسحب MG996R ما يصل إلى نحو 2.5 A عند التوقف (Stall)، ويسحب SG90 ما يصل إلى نحو 0.65 A. وقد تسحب المحركات الستة معًا ما يصل إلى 3 × 2.5 A + 3 × 0.65 A = 9.45 A، لذلك يبلغ تصنيف المزود 5 V 10 A. غذِّ Arduino عبر كابل USB أو عبر مقبس DC الخاص به.
يرسم المخطط مصدري الطاقة كليهما على شكل بطاريات. أما في بنائي، فقد عملت PCA9685 بمزود طاقة بدلًا من بطاريات AAA الأربع.

برمجة التحكم في السيرفو
يقرأ برنامج Arduino (ويُسمّى Sketch) الجهد على كل طرف تماثلي، ويحوّله إلى عرض نبضة للسيرفو، ثم يرسله إلى PCA9685.
كيف يعمل الكود
- تهيئة المكتبة: يتضمن البرنامج المكتبة Wire.h لـ I2C والمكتبة Adafruit_PWMServoDriver.h لـ PCA9685. وفي الدالة setup()، التي تعمل مرة واحدة عند بدء تشغيل اللوحة، يستدعي pwm.begin() ويضبط تردد PWM على 60 Hz. تنص مواصفات محركات سيرفو الهواة على تردد 50 Hz (نبضة واحدة كل 20 ms)، لكن معظمها يعمل أيضًا بتردد 60 Hz. إذا غيّرته إلى 50 Hz، فأعد حساب القيمتين 125 و575 أدناه.
- قراءة المقاومات المتغيرة: داخل الدالة loop()، التي تتكرر باستمرار بعد setup()، تُرجع الاستدعاءات من analogRead(A0) إلى analogRead(A5) قيمة بين 0 و1023. وتتبع هذه القيمة الجهدَ على الماسح (Wiper)، الذي يتغير كلما أدرت المقاومة المتغيرة.
- التحويل إلى نبضة سيرفو: الـ Tick (وحدة العدّ) هو خطوة واحدة من الخطوات الـ 4096 في كل دورة PWM. عند 60 Hz تبلغ مدة الدورة 16.7 ms، فتكون مدة الـ Tick الواحد نحو 4.07 µs. تحوّل الدالة map() المدى من 0 إلى 1023 إلى ما بين 125 و575 Tick (نحو 0.5 ms إلى 2.3 ms)، وهو ما يقابل مدى الدوران الكامل للسيرفو.
- ضبط خرج PWM: ترسل pwm.setPWM(channel, 0, ticks) النبضة المحسوبة إلى قناة PCA9685 المقابلة. المعامل الثاني (0) هو الـ Tick الذي تبدأ عنده النبضة، والثالث هو الـ Tick الذي تنتهي عنده، ضمن الدورة المؤلفة من 4096 خطوة.
- تأخير الحلقة: يقيّد تأخير مقداره 20 ms الحلقة بحد أقصى قدره 50 تحديثًا في الثانية، حتى لا يُغرَق ناقل I2C بالأوامر.
قبل الرفع، ثبّت مكتبة Adafruit PWM Servo Driver Library عبر Sketch > Include Library > Manage Libraries في Arduino IDE، وهو البرنامج الذي تكتب فيه برامج Arduino وترفعها إلى اللوحة. تأتي Wire.h مضمّنة مع Arduino IDE. اختر لوحتك ومنفذ COM (المنفذ التسلسلي الذي تظهر به اللوحة على حاسوبك عبر USB)، ثم انقر Upload. على حاسوبي، ظهرت اللوحة باسم COM7.
برنامج Arduino (Sketch): الكود المصدري الكامل
/**
* Author: Omar Draidrya
* Date: 2024/05/05
* Controls 6 servos via PCA9685 with potentiometer input.
*/
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // Default address 0x40
void setup() {
Serial.begin(9600); // Init serial for debugging
pwm.begin(); // Init PCA9685
pwm.setPWMFreq(60); // 60 Hz for servos
}
void loop() {
// Servo 0
int potValue0 = analogRead(A0); // Read A0
int servoPos0 = map(potValue0, 0, 1023, 125, 575); // Map to pulse range
pwm.setPWM(0, 0, servoPos0); // Set servo 0
// Servo 1
int potValue1 = analogRead(A1); // Read A1
int servoPos1 = map(potValue1, 0, 1023, 125, 575); // Map to pulse range
pwm.setPWM(1, 0, servoPos1); // Set servo 1
// Servo 2
int potValue2 = analogRead(A2); // Read A2
int servoPos2 = map(potValue2, 0, 1023, 125, 575); // Map to pulse range
pwm.setPWM(2, 0, servoPos2); // Set servo 2
// Servo 3
int potValue3 = analogRead(A3); // Read A3
int servoPos3 = map(potValue3, 0, 1023, 125, 575); // Map to pulse range
pwm.setPWM(3, 0, servoPos3); // Set servo 3
// Servo 4
int potValue4 = analogRead(A4); // Read A4
int servoPos4 = map(potValue4, 0, 1023, 125, 575); // Map to pulse range
pwm.setPWM(4, 0, servoPos4); // Set servo 4
// Servo 5
int potValue5 = analogRead(A5); // Read A5
int servoPos5 = map(potValue5, 0, 1023, 125, 575); // Map to pulse range
pwm.setPWM(5, 0, servoPos5); // Set servo 5
delay(20); // Small delay for smooth updates
}
معايرة الذراع واختبارها
رفعت البرنامج أولًا ثم وصّلت مزود طاقة السيرفو بعد ذلك. قبل تشغيل مزود طاقة السيرفو، أدر كل مقاومة متغيرة إلى المنتصف. فعند التشغيل، يتحرك كل سيرفو مباشرة إلى الموضع الذي تحدده مقاومته المتغيرة. ثم أدر كل مقاومة متغيرة ببطء؛ ويجب أن يتبعها المفصل المقابل. إذا تحرك مفصل في الاتجاه الخاطئ، فبدّل السلكين الخارجيين لتلك المقاومة المتغيرة لعكس الاتجاه.
اضبط قيمتي map() (125 و575) بدقة لكل سيرفو. تحتاج بعض محركات السيرفو إلى قيم Tick دنيا وقصوى مختلفة قليلًا حتى يتوقف أزيزها عند نقاط التوقف الميكانيكية. اختبر الذراع بجسم خفيف. في اختباري الأول، التقطت الذراع مجسّمًا صغيرًا لبرج إيفل ووضعته على لوح. وفي اختبار ثانٍ، نقلت بعض المجسمات الصغيرة الأخرى بالطريقة نفسها.
ماذا تفعل بعد ذلك
- الحركيات العكسية (Inverse Kinematics): حساب زوايا المفاصل انطلاقًا من موضع مستهدف للقابض.
- التحكم اللاسلكي باستخدام وحدة بلوتوث، كما فعلتُ في ترقية الذراع الروبوتية للتحكم بها عبر البلوتوث.
- تسجيل سلسلة من الحركات وإعادة تشغيلها.
تنزيل ملفات الطباعة ثلاثية الأبعاد (STL)
ملفات STL متاحة في متجر OmArTronics. أما الكود ومخطط التوصيل وقائمة القطع فموجودة في هذه الصفحة.
مقارنة بين كل أذرعي الروبوتية: كيف تبني ذراعًا روبوتية بست محاور في المنزل يشرح ماذا يعني ست محاور، ويضع التصاميم الأربعة في جدول واحد، ويخبرك أيها تبني أولًا.

هل يمكنك أن تخبرني كيف أوصّل المقاومة المتغيرة بلوحة التجارب
أعمل على بناء روبوت ذكاء اصطناعي وأريد استخدام ذراعك الروبوتية فيه. أريد تركيبها عموديًا على الجهة الأمامية. لاحظت في صور سابقة وجود نابض شدّ يصل القاعدة الدوّارة بأول قطعة في الذراع، لكنه غير مذكور في قائمة القطع ولا في تعليمات البناء. أرغب في إعادة النابض إلى التصميم لأن الذراع ستُركَّب عموديًا على روبوتي. هل يمكنك تزويدي بمواصفات النابض؟ هذه الذراع الروبوتية في رأيي من أفضل الأذرع من نوعها تصميمًا وتوثيقًا على الإنترنت.
شكرًا جزيلًا! يسعدني أن التصميم أعجبك
نعم، يصل نابض الشدّ هذا القاعدة الدوّارة بأول جزء من الذراع ليساعد على دعم مفصل الكتف، خاصةً عند تركيب الذراع عموديًا.
يبلغ طول النابض نحو 2 cm (في وضع السكون) وقطره 9 mm.
في الحقيقة أعدت استخدامه من حامل مصباح مكتبي قديم، لكن يمكنك أن تجد نوابض شدّ مماثلة بسهولة على الإنترنت أو في متاجر العدد والأدوات.
إنه اختياري، لكنه يساعد فعلًا على موازنة الذراع وتخفيف الحمل عن السيرفو.
مرحبًا! أردت أن أسأل عن وظيفة نقاط التثبيت الموجودة على القاعدة وعلى الوصلة الأولى، هل هي لنابض؟ إنها موجودة في النموذج، لكن صور التجميع لا تظهر فيها هذه الميزة، ولم يُشر إليها في المقال. شكرًا لك! هذا تصميم جميل
نعم، هذه النقاط مخصصة لنابض. النابض اختياري — فهو يساعد مفصل الكتف على حمل جزء من وزن الذراع.

أُضيفت هذه الميزة في إصدار لاحق من التصميم.
يمكنك أيضًا استخدام شريط مطاطي، لكنني شخصيًا أفضّل النابض.
يبلغ طول النابض الذي استخدمته نحو 2 cm (في وضع السكون) وقطره 9 mm.
في الحقيقة أخذته من حامل مصباح مكتبي قديم، لكن يمكنك بسهولة أن تجد نوابض مماثلة على الإنترنت أو في متاجر العدد والأدوات.
مرحبًا،
لديّ محامل بمقاس مختلف (60mm)، ولديّ مقاسان مختلفان من محركات السيرفو
2x MS24 بعزم 20kg للقاعدة، و3x MG996R لبقية المفاصل والقابض.
باختصار، أريد أن أطوّر تصميمك الرائع جدًا وأرسله إلى النادي الرياضي ليبني عضلاته 🙂
هل هناك طريقة لتتكرم بإرسال ملفات STEP، وبالطبع إذا نشرتُ نتائجي فسأذكرك بصفتك مصمم الذراع
شكرًا مقدمًا
مرحبًا Jeremy، شكرًا جزيلًا، إليك إصدارًا جديدًا مع ملفات STEP ودليل البناء والمزيد: https://omartronics.com/product/omarm-zero-6dof-esp32-robotic-arm/