بناء سفينة هوائية باستخدام الاردوينو
في هذا الدرس سوف نتعلم كيف نبني سفينة هوائية صغيرة (امكانيات محدودة) باستخدام المتحكم الالكتروني الاردوينو Arduino , في الحقيقة ان هذه السفينة صممت فقط لتطير بضعة امتار فوق سطح الارض مثل المنطاد , لكن يعتبر هذا المشروع رائع لان تكلفته بين متناول ايدي الجميع ويتم طرحه لاول مرة على شبكة الانترنت مجانًا , بشكل عام سوف تتعلم كيف تختار المحركات ووحدات الطاقة والمتحكمات المختلفة اضافة الى ذلك سوف نقوم في شرح تفصيلي للكودات المستخدمة حتى تستطيع الالمام الكامل بالمعرفة والحسابات التي نطرحها في موقعنا وسوف نشرح جميه المكونات المستخدمة في هذا المشروع ونرجو الحرص والحذر من الغاز الذي سوف نستخدمه في بناء المشروع. هذا المشروع هو من احد مشاريع التخرج من الجامعة الهاشمية – الاردن. ومن اعداد طلبة كلية الهندسة الميكانيكية والذين تخرجو في عام 2019م ولي الإذن في اعداد ونشر هذا المشروع للجمهور في كل مكان.
ما هي السفينة الهوائية؟
السفينة الهوائية هي من الطائرات التي صنعها الانسان قديمًا ولكنها اخف من الهواء فهي تكون مملوءة في غاز خفيف جدا مثل الهيليوم او غازات اخرى وذلك ليكون كثافته اقل من الهواء وبالتالي يرفع المركبة للاعلى مثل قطعة الخشب على الماء لقد درسنا تفاصيل السفينة الهوائية في درس التصنيفات العامة للطائرات وذكرنا من احد مشكلات هذه الطائرة هي سهولة الانجراف مع الريح لذلك قمنا في حل هذا المشكلة باستخدام محركات كهربائية يمكننا التحكم بها لضبط مسار رحلة الطائرة (السفينة الهوائية).
اساسيات العمل
حسنًا لبناء السفينة الهوائية يلزمك قليلا من المعرفة عن المكونات. ان الادوات والمحركات لا تعني شيئ اذا كنت لا تعرف كيف تتعامل معهم لذلك نضع لكم المواضيع التالية والتي يمكنك النقر عليها للاطلاع عليها قبل البدء في تفصيل المكونات وتجميعها بشكل صحيح:
- قياس المسافة باستخدام حساس الالترا سونيك.
- محرك التيار المستمر بلا فرش.
- محرك التيار المستمر بلا فرش والاردوينو.
- محرك السيرفو.
- محرك السيرفو والاردوينو.
- متحكم السرعة الالكتروني (ESC).
- مروحة الطائرات.
- بطارية ليبو.
- شاحن بطارية ليبو.
بعد قرائتك المواضيع اعلاه سوف تصبح قادرًا على التعامل والفهم الكامل للمكونات التي سوف نستخدمها , الآن دعونا نشرح لكم ماذا سوف نصنع في هذا المشروع. سوف نقوم بعمل سفينة هوائية سوف نستخدم جسم مملوء بكمية معينة من غاز الهيليوم مصنوع من مادة خفيفة وهي (Biaxial oriented polypropylene) سبب اختيار هذه المادة هو انها خفيفة جدًا هي نفس المادة التي تستخدم لصناعة اوراق التغليف للمواد الغذائية وسوف نستخدم محركين تيار مستمر بلا فرش لربطهم مع الاردوينو اونو Arduino Uno R3 وذلك باستخدام متحكمات السرعة الالكترونية ESC.
اضافة الى ذلك سوف نستخدم حساس الموجات فوق الصوتية (الالترا سونيك) ليقوم بقراءة مسافة السفينة الهوائية وبناءا على المسافة سوف يرسل المعلومات للاردوينو ويتحكم في سرعة محركات التيار المستمر بلا فرش عندما تصل السفينة الى مسافة معينة سوف نحافظ على هذه المسافة مستقرة. عموما سوف نستخدم المسافة 2 متر , ونقصد بهذا ان اقصى ارتفاع للسفينة سوف يكون 2 متر , عندما تنخفض السفينة سوف ترتفع تلقائيا وعندما تزيد عن 2 متر سوف تنخفض مرة اخرى. لبناء هذا المشروع سوف تحتاج الى المكونات الكهربائية التالية:
المكون | العدد |
اردينو اونو آر 3 – Arduino UNO R3 | 1 |
محرك تيار مستمر بلا فرش | 2 |
وحدة التحكم في السرعة الالكترونية | 2 |
بطارية ليبو | 1 |
محرك السيرفو | 1 |
الأسلاك والموصلات | 30 |
حساس الامواج فوق الصوتية Ultrasonic sensor HC-SR04 | 1 |
الهيكل
يمكنك استخدام الهيكل الذي سوف تملؤه بغاز الهيليوم من اي مادة خفيفة الوزن وتسمح في تخزين غاز الهيليوم نحن في هذه التجربة استخدمنا (Biaxial oriented polypropylene) وسبب اختيارنا لهذه المادة انها متوفرة وخفيفة الوزن ولكن يجب حمايتها من الثقوب وسبب اختيار غاز الهيليوم هو وزنه الخفيف ويمكن ايجاده من المحلات التجارية بسهولة. عموما الصور التالية توضح الهيكل الذي سوف تبنيه:
الشكل العام للسفينة
أبعاد هذا الهيكل مدروسة بشكل دقيق , حتى تستطيع السفينة الارتفاع للأعلى مع الوزن الكلي الذي يمثل المكونات الكهربائية سوف تحتاج الى بناؤها بالأبعاد التالية :
- الطول : يجب ان يكون اقل طول 2.5 متر.
- القطر : يجب ان يكون القطر على اقل تقدير 0.4 متر.
هل هذه الابعاد اجبارية؟ في الحقيقة نعم ولا , هذه القيم هي اقل قيم يمكنك استخدامها لرفع السفينة الى مسافات جيدة ولكن بشكل عام اذا كنت تريد رفع السفينة الى مسافات اعلى سوف تحتاج الى استخدام هيكل من مواد اكثر قوة وسوف تحتاج الى زيادة في الطول والقطر.
الصور التالية توضح صور الهيكل من زوايا رؤية مختلفة:
الؤوية من الجن
قاعدة المحركات
بالتأكيد من الصورة اعلاه لاحظت وجود مكون في اسفل السفينة كما يظهر في الصورة ادناه , تستخدم قاعدة المحركات لتبيثت محركات التيار المستمبر بلا فرش ايضا تركيب جميع المكونات الكهربائية مثل بطارية ليبو والاردوينو ووحدات التحكم في السرعة الالكترونية.
كما تلاحظ من الصورة اعلاه توضع المكونات الكهربائية في الداخل وعلى الاطراف يتم تثبيت المحركات. يكون التصميم بحيث تكون هذه القاعدة في اسفل السفينة حتى تتمكن من توليد قوة رفع لرفع السفينة للأعلى وطول القاعدة يبلغ 80 سم اي ان المسافة بين المحركين 80 سم. اما المكون الاخير في هذا الهيكل هو الزعانف fins والتي تكون موجودة في اطراف الهيكل فهي عامل اضافي لاستقرار وثبات السفينة في الجو كما تظهر في الشكل التالي:
المواصفات الكهربائية
كما قلنا سوف نستخدم الاردوينو اونو بسبب تعدد المخارج والمداخل الرقمية وخصوصا المداخل والمخارج التي تعمل بنظام تضمين عرض النبصة PWM والتي سوف نستخدمها مع وحدة التحكم في السرعة الالكترونية ESC اما محرك التيار المستمر بلا فرش سوف نعتمد في تصميمنا على الموديل A2212/137 والذي ثابت الجهد له يساوي 1000KV.
بحيث سوف يكون تيار وحدة التحكم في السرعة الالكترونية ESC مساويًا ل 40 أمبير. اذا الآن لقد اصبح لديك المعرفة الكافية عن الهيكل واجزاؤه وخصائص المحركات الكهربائية وقطعى ال ESC التي سوف نحتاجها بقي علينا ان نختار المكون الأخير وهو بطارية ليبو , في هذا المشروع سوف تستخدم بطارية ليبو 1 خلية 1S والتي تعادل 3.7 فولت وسعتها 3000 ملي امبير او 3 أمبير. والقطع موضحة ادناه:
الرسم التخطيطي
حسنا بعد تجميعك للهيكل وتعبئته في غاز الهيليوم يجب ان لا تضغط الغاز , فقط افتح اسطوانة الغاز وعندما يمتلئ الهيكل بالغاز تتوقف عن التزويد بالغاز نقصد هنا لا تستخدم مضخات لضغط الغاز داخل الهيكل وإلا سوف ينفجر الهيكل. لان الهيكل الذي استخدمناه هو خفيف نسبيًا. بعد تصميمك للهيكل وتجهيز القطع الالكترونية سوف تقوم بتوصيل المكونات مع بعضها البعض بحيث تكون توصيلات البطارية والمحركات ووحدات التحكم في السرعة الالكترونية وحساس الموجات فوق الصوتية – الالتر سونيك Ultra sonic مع الاردوينو Arduino UNO R3 كما يلي:
الكود
تأكد من أن توصيلاتك صحيحة تماما ، ثم قم بتوصيل الاردوينو بجهاز الكمبيوتر باستخدام USB ويفضل توصيل البطارية باستخدام مفتاح توصيل. ثم قم بتحميل هذا الكود إلى لوحة الاردوينو أو أي لوحة تملكها:
- #include <Servo.h> //Use the Servo librarey for generating PWM
- const int trigPin = 5;
- const int echoPin = 6;
- // defines variables
- long duration;
- int distance;
- Servo ESC1; //name the servo object, here ESC1
- Servo ESC2; //name the servo object, here ESC2
- Servo servo;
- void setup()
- {
- pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
- pinMode(echoPin, INPUT); // Sets the echoPin as an Input
- ESC1.attach(9,1000,2000); //Generate PWM in pin 9 of Arduino
- ESC2.attach(10,1000,2000); //Generate PWM in pin 10 of Arduino
- servo.attach(11); //Generate PWM in pin 11 of Arduino
- Serial.begin(9600); // Starts the serial communication
- }
- void loop()
- {
- // Clears the trigPin
- digitalWrite(trigPin, LOW);
- delayMicroseconds(3);
- // Sets the trigPin on HIGH state for 10 micro seconds
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- // Reads the echoPin, returns the sound wave travel time in microseconds
- duration = pulseIn(echoPin, HIGH);
- // Calculating the distance
- distance= duration*0.034/2;
- // Prints the distance on the Serial Monitor
- Serial.print("Distance: ");
- Serial.println(distance);
- int throttle = distance; //Read the distance from Ultrasonic
- throttle = map(throttle, 100, 0, 1000, 2000);
- ESC1.writeMicroseconds(throttle);
- ESC2.writeMicroseconds(throttle);
- if (distance >= 100) {
- servo.write(90);}
- else{
- servo.write(0);}
- }
- #include <Servo.h> //Use the Servo librarey for generating PWM
- const int trigPin = 5;
- const int echoPin = 6;
- // defines variables
- long duration;
- int distance;
- Servo ESC1; //name the servo object, here ESC1
- Servo ESC2; //name the servo object, here ESC2
- Servo servo;
- {
- pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
- pinMode(echoPin, INPUT); // Sets the echoPin as an Input
- ESC1.attach(9,1000,2000); //Generate PWM in pin 9 of Arduino
- ESC2.attach(10,1000,2000); //Generate PWM in pin 10 of Arduino
- servo.attach(11); //Generate PWM in pin 11 of Arduino
- Serial.begin(9600); // Starts the serial communication
- }
- {
- // Clears the trigPin
- digitalWrite(trigPin, LOW);
- delayMicroseconds(3);
- // Sets the trigPin on HIGH state for 10 micro seconds
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- // Reads the echoPin, returns the sound wave travel time in microseconds
- duration = pulseIn(echoPin, HIGH);
- // Calculating the distance
- distance= duration*0.034/2;
- // Prints the distance on the Serial Monitor
- Serial.print("Distance: ");
- Serial.println(distance);
- int throttle = distance; //Read the distance from Ultrasonic
- throttle = map(throttle, 100, 0, 1000, 2000);
- ESC1.writeMicroseconds(throttle);
- ESC2.writeMicroseconds(throttle);
- if (distance >= 100) {
- servo.write(90);}
- else{
- servo.write(0);}
- }
شرح الكود:
تعريف مكتبة السيرفو لنتمكن من التحكم في المحركات الثلاثة (2 محركات تيار مستمر بلا فرش ومحرك السيرفو)
تعريف اطراف حساس الموجات فوق الصوتية – الالتر سونيك Ultra sonic
تعريف متغيرات للمحركات حساس الامواج فوق الصوتية
داخل ال void setup() نقوم بعدة امور لضبط المحركات والشاشة التسلسلية Serial monitor (اختيارية) بحيث نعرف الادخال والاخراج للحساس وتعريف قيمة النبضات وتهئية PWM:
وأخيرًا داخل void loop() نقوم بالعمليات الاخيرة من البرمجة لاعداد الحساس والمحركات حسب القيم المحددة من ورقة البيانات وعمل map لمحركات التيار المستمر بلا فرش:
وهكذا انتهينا من بناء السفينة الهوائية يمكنك التعديل على البرنامج لتغير المسافات والسرعات او اضافة المزيد من المحركات وعمل اضافات كما تشاء. في الدرس القادم سوف نقوم بربط السفينة الهوائية مع جهاز الهاتف للتحكم فيها يدويًا واضافة حساس الجيروسكوب لضبط اتزان السفينة وتوصيل محرك السيرفو لتوجيه السفينة.
وشكرا لكم
0 تعليقات