- محرك DC بدون قلب للسيارات RC
- المواد المطلوبة
- عصا التحكم RF لسيارة RC باستخدام Arduino
- مخطط حلبة سيارة Arduino RC
- تصنيع ثنائي الفينيل متعدد الكلور لسيارة اردوينو RC
- تجميع ثنائي الفينيل متعدد الكلور
- عجلات الطباعة ثلاثية الأبعاد وحامل المحرك
- برمجة اردوينو
- عمل Arduino RC Car
دائمًا ما تكون سيارات RC ممتعة للعب بها ، فأنا شخصياً من أشد المعجبين بهذه السيارات التي يتم التحكم فيها عن بُعد ولعبت معها (ما زلت أفعلها) على نطاق واسع. توفر معظم هذه السيارات اليوم عزم دوران ضخمًا للتعامل مع التضاريس الوعرة ، ولكن هناك شيء ما كان دائمًا متأخرًا ، سرعته !!.. لذلك ، في هذا المشروع ، سنقوم ببناء نوع مختلف تمامًا من سيارات RC باستخدام Arduino ، الرئيسي الهدف من هذه السيارة هو تحقيق أقصى سرعة ، لذلك قررت تجربة محرك DC عديم النوى لسيارة RC. تُستخدم هذه المحركات عادةً في الطائرات بدون طيار ويتم تصنيفها بـ 39000 دورة في الدقيقة والتي يجب أن تكون أكثر من كافية لإخماد عطش سرعتنا. سيتم تشغيل السيارة ببطارية ليثيوم صغيرة ويمكن التحكم فيها عن بُعد باستخدام وحدة nRF24L01 RF. بدلاً من ذلك ، إذا كنت تبحث عن شيء بسيط ، فيمكنك أيضًا التحقق من مشاريع Simple RF Robot و Raspberry Pi Bluetooth Car.
محرك DC بدون قلب للسيارات RC
يظهر محرك DC عديم النوى المستخدم في هذا المشروع في الصورة أدناه. يمكنك العثور عليها بسهولة لأنها تستخدم على نطاق واسع في الطائرات بدون طيار الصغيرة. ما عليك سوى البحث عن 8520 Magnetic Micro Coreless Motor وستجدها.
الآن ، هناك عيوب معينة لاستخدام محركات التيار المستمر لسيارة RC. أول شيء هو أنها توفر عزم دوران منخفض جدًا ، وبالتالي يجب أن تكون سيارتنا RC خفيفة الوزن قدر الإمكان. هذا هو السبب في أنني قررت بناء السيارة بأكملها فوق PCB باستخدام مكونات SMD وتقليل حجم اللوحة قدر الإمكان. المشكلة الثانية هي سرعتها العالية ، 39000 دورة في الدقيقة (RPM) من الصعب التعامل معها ، لذلك نحن بحاجة إلى دائرة للتحكم في السرعة على جانب Arduino ، والتي قمنا ببنائها باستخدام MOSFET. الأمر الثالث هو أن هذه المحركات سيتم تشغيلها بواسطة بطارية ليثيوم بوليمر مفردة بجهد تشغيل يتراوح بين 3.6 فولت إلى 4.2 فولت ، لذلك علينا تصميم دائرتنا للعمل على 3.3 فولت. هذا هو السبب في أننا استخدمنا 3.3V Arduino Pro miniكعقل سيارة RC الخاصة بنا. بعد حل هذه المشكلات ، دعنا نلقي نظرة على المواد المطلوبة لبناء هذا المشروع.
المواد المطلوبة
- 3.3 فولت اردوينو برو ميني
- اردوينو نانو
- NRF24L01 - 2 قطعة
- وحدة جويستيك
- SI2302 موسفيت
- 1N5819 ديود
- المحركات BLDC Coreless
- AMS1117-3.3 فولت
- بطارية ليثيوم بوليمر
- المقاومات والمكثفات
- توصيل الأسلاك
عصا التحكم RF لسيارة RC باستخدام Arduino
كما ذكرنا سابقًا ، سيتم التحكم في سيارة RC عن بُعد باستخدام عصا التحكم RF. سيتم أيضًا تصميم عصا التحكم هذه باستخدام Arduino جنبًا إلى جنب مع وحدة nRF24L01 RF ، كما استخدمنا وحدة جويستيك للتحكم في RC في الاتجاه المطلوب. إذا كنت جديدًا تمامًا على هاتين الوحدتين ، فيمكنك التفكير في قراءة مقالات Interfacing Arduino مع nRF24L01 و Interfacing Joystick مع مقالات Arduino لمعرفة كيفية عملها وكيفية استخدامها. لبناء عصا التحكم عن بعد Arduino RF ، يمكنك اتباع مخطط الدائرة أدناه.
يمكن تشغيل دائرة عصا التحكم RF باستخدام منفذ USB للوحة nano. تعمل الوحدة النمطية nRF24L01 على 3.3 فولت فقط ، ومن ثم استخدمنا دبوس 3.3 فولت في Arduino. لقد قمت ببناء الدائرة على لوح التجارب ويبدو أدناه ، يمكنك أيضًا إنشاء ثنائي الفينيل متعدد الكلور لهذا إذا لزم الأمر.
و الرمز اردوينو لدائرة RF المقود بسيط جدا، لدينا لقراءة قيمة X وقيمة Y من وجهة نظرنا المقود وإرسالها إلى السيارة RC من خلال NRF24L01. يمكن العثور على البرنامج الكامل لهذه الدائرة في أسفل هذه الصفحة. لن ندخل في شرح ذلك لأننا ناقشناه بالفعل في رابط مشروع الربط المشترك أعلاه.
مخطط حلبة سيارة Arduino RC
يظهر أدناه مخطط الدائرة الكاملة لسيارتنا Arduino التي يتم التحكم فيها عن بعد. يتضمن مخطط الدائرة أيضًا خيارًا لإضافة وحدتي TCRT5000 IR إلى سيارتنا. تم التخطيط لهذا لتمكين سيارة RC الخاصة بنا من العمل كخط يتبع الروبوت بحيث يمكنه العمل بمفرده دون التحكم به خارجيًا. ومع ذلك ، من أجل هذا المشروع ، لن نركز عليه ، ترقبوا برنامج تعليمي آخر للمشروع سنحاول فيه بناء "أسرع روبوت يتبع الخط". لقد جمعت كلتا الدائرتين على ثنائي الفينيل متعدد الكلور واحد لتسهيل البناء ، يمكنك تجاهل مستشعر الأشعة تحت الحمراء وقسم Op-amp لهذا المشروع.
سيتم تشغيل سيارة RC بواسطة بطارية Lipo المتصلة بالمحطة P1. و AMS117-3.3V يستخدم لتنظيم 3.3V لدينا NRF24L01 والمؤيدة لدينا مصغرة متنها. يمكننا أيضًا تشغيل لوحة Arduino مباشرة على الدبوس الخام ولكن منظم الجهد 3.3V الموجود على pro mini لن يكون قادرًا على توفير تيار كافٍ لوحدات RF الخاصة بنا ، وبالتالي استخدمنا منظم جهد خارجي.
لقيادة محركنا BLDC ، استخدمنا وحدتي MOSFET SI2302. من المهم التأكد من أن هذه الدوائر MOSFETS يمكن تشغيلها بواسطة 3.3 فولت. إذا لم تتمكن من العثور على نفس رقم الجزء بالضبط ، يمكنك البحث عن وحدات MOSFET المكافئة بخصائص النقل أدناه
يمكن أن تستهلك المحركات ذروة تيار يصل إلى 7A (تم اختبار المستمر ليكون 3A مع الحمل) ، وبالتالي يجب أن يكون تيار تصريف MOSFET 7A أو أكثر ويجب أن يتم تشغيله بالكامل عند 3.3 فولت. كما ترون هنا ، يمكن أن توفر MOSFET التي اخترناها 10 أمبير حتى عند 2.25 فولت ، لذا فهي خيار مثالي.
تصنيع ثنائي الفينيل متعدد الكلور لسيارة اردوينو RC
الجزء الممتع في بناء هذا المشروع هو تطوير PCB. لا تشكل لوحة الدوائر المطبوعة هنا الدائرة فحسب ، بل تعمل أيضًا كهيكل لسيارتنا ، لذلك قمنا بتخطيط سيارة تبحث عن شكل لها مع خيارات لتركيب محركاتنا بسهولة. يمكنك أيضًا محاولة تصميم ثنائي الفينيل متعدد الكلور الخاص بك باستخدام الدائرة أعلاه أو يمكنك استخدام تصميم ثنائي الفينيل متعدد الكلور الخاص بي الذي يبدو كالتالي بعد الانتهاء.
كما ترون ، لقد صممت لوحة الدوائر المطبوعة لتركيب البطارية والمحرك والمكونات الأخرى بسهولة. يمكنك تنزيل ملف Gerber من أجل PCB هذا من الرابط. بمجرد أن تصبح جاهزًا مع ملف جربر ، حان الوقت لتلفيقه. للحصول على PCBs الخاص بك بسهولة عن طريق PCBGOGO اتبع الخطوات أدناه
الخطوة 1: ادخل إلى www.pcbgogo.com ، واشترك إذا كانت هذه هي المرة الأولى لك. بعد ذلك ، في علامة التبويب PCB Prototype ، أدخل أبعاد PCB وعدد الطبقات وعدد PCB الذي تحتاجه. يبلغ حجم PCB الخاص بي 80 سم × 80 سم ، لذا تبدو علامة التبويب كما يلي.
الخطوة 2: تابع بالنقر فوق الزر Quote Now . سيتم نقلك إلى صفحة حيث يتم تعيين عدد قليل من المعلمات الإضافية إذا لزم الأمر مثل تباعد المسار المستخدم وما إلى ذلك. ولكن في الغالب ستعمل القيم الافتراضية بشكل جيد. الشيء الوحيد الذي يتعين علينا التفكير فيه هنا هو السعر والوقت. كما ترى ، فإن مدة البناء هي 2-3 أيام فقط وتكلف 5 دولارات فقط لجهاز PSB الخاص بنا. يمكنك بعد ذلك تحديد طريقة الشحن المفضلة بناءً على متطلباتك.
الخطوة 3: الخطوة الأخيرة هي تحميل ملف Gerber ومتابعة الدفع. للتأكد من أن العملية سلسة ، يتحقق PCBGOGO مما إذا كان ملف Gerber الخاص بك صالحًا قبل متابعة الدفع. بهذه الطريقة يمكنك التأكد من أن ثنائي الفينيل متعدد الكلور الخاص بك سهل التصنيع وسيصل إليك كما هو ملتزم
تجميع ثنائي الفينيل متعدد الكلور
بعد أن تم طلب اللوحة ، وصلت إلي بعد بضعة أيام على الرغم من أن البريد السريع في صندوق معبأ جيدًا ومثل دائمًا كانت جودة PCB رائعة. أشارككم بعض الصور من اللوحات أدناه لكي تحكموا عليها.
قمت بتشغيل قضيب اللحام الخاص بي وبدأت في تجميع اللوحة. نظرًا لأن بصمات الأقدام والوسادات والفتحات والشاشة الحريرية مثالية للشكل والحجم المناسبين ، لم أواجه أي مشكلة في تجميع اللوحة. كانت اللوحة جاهزة في غضون 10 دقائق فقط من وقت تفريغ الصندوق.
يتم عرض بعض الصور للوحة بعد اللحام أدناه.
عجلات الطباعة ثلاثية الأبعاد وحامل المحرك
كما قد تكون لاحظت في الصورة أعلاه ، نحتاج إلى تركيب محرك ثلاثي الأبعاد وعجلات للروبوت. إذا كنت قد استخدمت ملف PCB Gerber الذي تمت مشاركته أعلاه ، فيمكنك أيضًا استخدام نموذج ثلاثي الأبعاد عن طريق تنزيله من رابط هذا الشيء.
لقد استخدمت Cura لتقطيع نماذجي وطباعتها باستخدام Tevo Terantuala بدون دعم و 0٪ حشو لتقليل الوزن. يمكنك تغيير الإعداد بما يناسب طابعتنا. نظرًا لأن المحركات تدور بسرعة كبيرة ، فقد وجدت صعوبة في تصميم عجلة تتلاءم بشكل محكم مع عمود المحرك. ومن ثم قررت استخدام شفرات الطائرات بدون طيار داخل العجلة كما ترون أدناه
لقد وجدت أن هذا أكثر موثوقية وقوة ، ومع ذلك ، قم بتجربة تصميمات مختلفة للعجلات واسمحوا لي أن أعرف في قسم التعليقات ما الذي يناسبك.
برمجة اردوينو
يمكن العثور على البرنامج الكامل (كلاً من Arduino nano و pro mini) لهذا المشروع في أسفل هذه الصفحة. شرح برنامج RC الخاص بك كما يلي
نبدأ البرنامج بتضمين ملف الرأس المطلوب. لاحظ أن الوحدة النمطية nRF24l01 تتطلب إضافة مكتبة إلى Arduino IDE الخاص بك ، يمكنك تنزيل مكتبة RF24 من Github باستخدام هذا الرابط. بصرف النظر عن ذلك ، لقد حددنا بالفعل الحد الأدنى للسرعة والحد الأقصى للسرعة لروبوتنا. النطاق الأدنى والحد الأقصى من 0 إلى 1024 على التوالي.
#define min_speed 200 # تعريف max_speed 800 # تتضمن
ثم داخل وظيفة الإعداد ، نقوم بتهيئة وحدة nRF24L01 الخاصة بنا. لقد استخدمنا 115 نطاقًا نظرًا لأنها ليست مزدحمة وقمنا بتعيين الوحدة للعمل بطاقة منخفضة ، يمكنك أيضًا اللعب بهذه الإعدادات.
إعداد باطل () {Serial.begin (9600) ؛ myRadio.begin () ، myRadio.setChannel (115) ، // 115 نطاقًا فوق WIFI إشارات myRadio.setPALevel (RF24_PA_MIN) ؛ // MIN power low rage myRadio.setDataRate (RF24_250KBPS) ؛ // السرعة الدنيا}
بعد ذلك في وظيفة الحلقة الرئيسية ، سنقوم فقط بتنفيذ وظيفة ReadData التي سنقرأ بها باستمرار القيمة المرسلة من وحدة التحكم في الإرسال. لاحظ أن عنوان الأنبوب المذكور في البرنامج يجب أن يكون هو نفسه المذكور في برنامج جهاز الإرسال. لقد قمنا أيضًا بطباعة القيمة التي نتلقاها لأغراض التصحيح. بمجرد قراءة القيمة بنجاح ، سنقوم بتنفيذ وظيفة Control Car للتحكم في سيارة RC الخاصة بنا بناءً على القيمة المستلمة من
وحدة Rf.
ReadData () باطل {myRadio.openReadingPipe (1، 0xF0F0F0F0AA) ؛ // أي أنبوب يجب قراءته ، 40 بت عنوان myRadio.startListening () ؛ // Stop Transminting وابدأ Reveicing if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data، sizeof (data))؛ } Serial.print ("\ n تم الاستلام:")؛ Serial.println (data.msg) ؛ وردت = data.msg ؛ Control_Car () ، }}
داخل وظيفة Control Car ، سنتحكم في المحركات المتصلة بدبابيس PWM باستخدام وظيفة الكتابة التناظرية. في برنامج الإرسال الخاص بنا ، قمنا بتحويل القيم التناظرية من A0 و A1 pin من Nano إلى 1 إلى 10 ، و 11 إلى 20 ، و 21 إلى 30 ، و 31 إلى 40 للتحكم في السيارة في الأمام والخلف واليسار واليمين على التوالي. يستخدم البرنامج أدناه للتحكم في الروبوت في اتجاه أمامي
إذا (تم الاستلام> = 1 && مستلم <= 10) // نقل للأمام {int PWM_Value = الخريطة (تم الاستلام ، 1 ، 10 ، min_speed ، max_speed) ؛ analogWrite (R_MR ، PWM_Value) ؛ analogWrite (L_MR ، PWM_Value) ؛ }
وبالمثل ، يمكننا أيضًا كتابة ثلاث وظائف أخرى للتحكم في الاتجاه المعاكس واليسار واليمين كما هو موضح أدناه.
إذا (تم الاستلام> = 11 && مستلم <= 20) // استراحة {int PWM_Value = خريطة (مستلمة ، 11 ، 20 ، min_speed ، max_speed) ؛ analogWrite (R_MR ، 0) ؛ analogWrite (L_MR ، 0) ؛ } إذا (تم الاستلام> = 21 && استقبل <= 30) // انعطف يسارًا {int PWM_Value = map (مستلم ، 21 ، 30 ، min_speed ، max_speed) ؛ analogWrite (R_MR ، PWM_Value) ؛ analogWrite (L_MR ، 0) ؛ } إذا (تم الاستلام> = 31 && استقبل <= 40) // انعطف يمينًا {int PWM_Value = map (مستلم ، 31 ، 40 ، min_speed ، max_speed) ؛ analogWrite (R_MR ، 0) ؛ analogWrite (L_MR ، PWM_Value) ؛ }
عمل Arduino RC Car
بعد الانتهاء من الكود ، قم بتحميله على اللوحة المصغرة الخاصة بك. قم بإزالة البطارية ولوحك من خلال وحدة FTDI للاختبار. قم بتشغيل الكود الخاص بك ، وافتح البطارية التسلسلية وستحصل على القيمة من وحدة جويستيك لجهاز الإرسال. قم بتوصيل بطاريتك ويجب أن تبدأ محركاتك أيضًا في الدوران.
يمكن العثور على العمل الكامل للمشروع في الفيديو المرتبط أسفل هذه الصفحة. إذا كان لديك أي أسئلة اتركها في قسم التعليقات. يمكنك أيضًا استخدام منتدياتنا للحصول على إجابات سريعة لأسئلتك الفنية الأخرى.