مــا نحــنُ إلا طُـــلاب عــلمِ نسعـــى لنشـــر الرحمـــة مــن خــلال العــلـــم ----- مطلوب مدرس - مدرب لديه خبره في الإلكترونيات التفاعلية و الأردوينو، راسلنا على رسائل الموقع
image

آلية العين المزدوجة بإستخدام الطباعة ثلاثية الأبعاد

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

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

القطع و الأدوات المطلوبة

  • خيط الطباعة و يفضل أن يكون نوع جيد حيث أن بعض القطع صغيرة وتحتاج إلى جودة عالية.
  • 6 محركات سيرفو صغيرة من النوع SG90
  • بعض البراغي بأقطار تتراوح من M2 إلى M3
  • لوحة الأردوينو
  • وحدة قيادة محركات السيرفو PCA9685 
  • مصدر طاقة 5 فولت 4 أمبير
  • وصلة female DC power jack
  • وحدة تحكم Joystick
  • مقاومة متغيرة 10 كيلو أوم
  • زر Momentary switch
  • مقاوم 10 كيلوأوم
  • أسلاك توصيل

طباعة الأجزاء

قد تكون الطباعة صعبة إلى حد ما بسبب الأجزاء الصغيرة، ولكن تتم طباعة غالبية الأجزاء بسرعة وسهولة دون إستخدام support. فقط تم إستخدام PLA لجميع الأجزاء بخلاف العينين (التي كانت ABS لأنها تبدو طبيعية أكثر قليلاً). هناك بعض الأجزاء الحساسة التي يجب البحث عنها أيضًا، ولكن إذا كنت تستخدم خيوط طباعة عالية الجودة وكنت سعيدًا بإعدادات الطباعة الخاصة بك، فيجب أن تكون على ما يرام. أخيرًا، الطباعة تمت بطبقة بارتفاع 0.2 مم وكان هذا أكثر من دقيق بدرجة كافية لهذا النموذج - وأظن أنه يمكنك التخلص من 0.3 مم حتى.

أنقر هنا لتحميل ملفات الطباعة

تجهيز الأجزاء المطبوعة

يمكن صنفرة العيون وتنعيمها بقدر ما تريد، ولكن قد يكون من الضروري إجراء القليل من الصنفرة في الجزء السفلي من النموذج حيث كانت الطابعة تطبع الجزء المتدلي. هذا فقط للتأكد من أن العين يمكن أن تدور بسلاسة داخل الجفون. الأجزاء الأخرى الوحيدة التي تم صقلها هي eye adaptor، فقط لأنها ملائمة بإحكام والطبقات القليلة السفلية في المطبوعات تميل دائمًا إلى أن تكون منتفخة قليلاً.

تم تصميم الأجزاء للطباعة بحيث تكون بعض الثقوب صغيرة الحجم بدرجة كافية ليتم تثبيتها مباشرة، في حين أن بعضها الآخر كبير الحجم بدرجة كافية بحيث يمر المسمار من خلالها بشكل مريح. إذا كانت الطابعة الخاصة بك تجعل الثقوب صغيرة الحجم ليتم تثبيتها أو تدويرها بسلاسة، فيمكنك استخدام مثقاب يدوي صغير لحفر بعض الثقوب لجعلها أكثر دقة، ويعد النقر على الخيوط خيارًا أيضًا (على الرغم من أن PLA عادة ما يمسك البراغي جيد إلى حد ما على أي حال).

تجميع الأجزاء

بمجرد طباعة جميع الأجزاء و تجهيزها، يمكنك تجميعها. توجد أيضًا جميع الصور المرجعية في الأعلى.

  • قم بتوصيل القاعدتين بمسامير M3 مقاس 10 مم/12 مم، هذه النقطة المحورية مخصصة للمحور y لحركة العين والجفون.

 

  • ضع محركات السيرفو في موضعها وقم بربطها باستخدام براغي M2 مقاس 4 أو 6 مم، وهذا بمثابة المشغل لحركة محور x

 

  • قم بتوصيل ذراع محور y بالقاعدة الفرعية باستخدام برغي M3 مقاس 4/5/6 مم، ثم قم بإرفاق ذراع محرك السيرفو في الفتحة الثالثة من المركز باستخدام برغي M2 مقاس 4 مم أو 6 مم. تحقق من الصور السابقة للتأكد من أن اتجاه كل شيء صحيح.

 

  • ابدأ في بناء مجموعة محور x عن طريق ربط الشوكات forks في محولات العين eye-adaptors بمسامير M3 مقاس 4/5/6 مم، ويجب أن تكون فتحات الشوكة كبيرة الحجم بحيث تعض البراغي في المحول، وتدخل إحداها بزاوية سيئة ولكن يجب أن تكون قادر على الحصول عليها.

 

  • قم بتوصيل الموصل ثلاثي النقاط بالجزء العلوي من الشوكات، وسوف يدخل المسمار M3 في الفتحة الصغيرة في مكون الشوكة. قم أيضًا بتوصيل ذراع السيرفو في الفتحة الأخيرة بمركز الموصل ثلاثي النقاط باستخدام مسمار M3 مقاس 5 مم (من المحتمل أن تحتاج الفتحة الموجودة على ذراع السيرفو إلى الحفر إلى 2.5 مم - 2.8 مم لقبول المسمار). أوصي بالتلاعب بالتجميع للتأكد من أن كل شيء يتحرك بشكل جيد دون احتكاك بانتظام أثناء قيامك ببنائه أيضًا.

 

  • قم بتوصيل الوصلة الوسطى للعين بمحولات العين باستخدام برغي M3 مقاس 8 مم، وتأكد من أن السطح المسطح للوصلة الوسطى متجه للأعلى والقسم المائل متجه للأسفل. يمكنك أيضًا توصيل العيون في هذه المرحلة.

 

  • قم بربط كل هذا في منتصف القاعدة الفرعية بمسامير M3 مقاس 8/12 مم.

 

  • قم بتحميل كتلة السيرفو باستخدام 5 محركات SG90، في الاتجاه الصحيح الموضح.

 

  • اكتشف الجفن الذي يستخدم الرسم، وقم بتوصيل الموصل ذي الصلة بمسمار M2 مقاس 4 مم أو 6 مم، ثم قم بتوصيل ذراع السيرفو بالطرف الآخر (استخدم الفتحة الأخيرة في السيرفو هورن - قد تحتاج إلى حفر هذا حتى 1.5 مم - 1.8 مم).

 

  • قم بتوصيل الجفون بالقاعدة، لكن لا تقلق بشأن توصيل أي سيرفو هورن حتى الآن.

توصيل الدارئرة الألكترونية

من خلال الرجوع إلى الرسم، قم بتحميل الكود الموجود بالأسفل على الاردوينو وقم بتوصيل كل شيء. راجع دليل Adafruit إذا كنت بحاجة إلى مساعدة في إعداد لوحة قيادة محركات السيرفو. يجب الآن تشغيل جميع المحركات وفي وضعها المحايد، لذا اغتنم هذه الفرصة لربط جميع أذرع المحركات بالمحركات مع توجيه العيون للأمام بشكل مستقيم في وضع محايد. يمكنك فقط توصيلها، ثم فصل الطاقة لتثبيتها بشكل صحيح. ذراع السيرفو ذات المحور y في وضع حرج لقبول المسمار، لكنه ثابت بدون المسمار على أي حال. إذا لم يكن الأمر كذلك، فقد يكون من المفيد إزالة إحدى معززات الجفن لتثبيتها. أوصي باختبار الحركة باستخدام عصا التحكم الخاصة بك في هذه المرحلة للتأكد من عدم وجود مشكلات.

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

الكود البرمجي

//  Nilheim Mechatronics Simplified Eye Mechanism Code
//  Make sure you have the Adafruit servo driver library installed >>>>> https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library
//  X-axis joystick pin: A1
//  Y-axis joystick pin: A0
//  Trim potentiometer pin: A2
//  Button pin: 2

 
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

#define SERVOMIN  140 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX  520 // this is the 'maximum' pulse length count (out of 4096)

// our servo # counter
uint8_t servonum = 0;

int xval;
int yval;

int lexpulse;
int rexpulse;

int leypulse;
int reypulse;

int uplidpulse;
int lolidpulse;
int altuplidpulse;
int altlolidpulse;

int trimval;

const int analogInPin = A0;
int sensorValue = 0;
int outputValue = 0;
int switchval = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("8 channel Servo test!");
  pinMode(analogInPin, INPUT);
  pinMode(2, INPUT);
 
  pwm.begin();
  
  pwm.setPWMFreq(60);  // Analog servos run at ~60 Hz updates

  delay(10);
}

// you can use this function if you'd like to set the pulse length in seconds
// e.g. setServoPulse(0, 0.001) is a ~1 millisecond pulse width. its not precise!
void setServoPulse(uint8_t n, double pulse) {
  double pulselength;
  
  pulselength = 1000000;   // 1,000,000 us per second
  pulselength /= 60;   // 60 Hz
  Serial.print(pulselength); Serial.println(" us per period"); 
  pulselength /= 4096;  // 12 bits of resolution
  Serial.print(pulselength); Serial.println(" us per bit"); 
  pulse *= 1000000;  // convert to us
  pulse /= pulselength;
  Serial.println(pulse);

}

void loop() {

  xval = analogRead(A1);
    lexpulse = map(xval, 0,1023, 220, 440);
    rexpulse = lexpulse;

    switchval = digitalRead(2);
    
    
  yval = analogRead(A0);
    leypulse = map(yval, 0,1023, 250, 500);
    reypulse = map(yval, 0,1023, 400, 280);

  trimval = analogRead(A2);
    trimval=map(trimval, 320, 580, -40, 40);
     uplidpulse = map(yval, 0, 1023, 400, 280);
        uplidpulse -= (trimval-40);
          uplidpulse = constrain(uplidpulse, 280, 400);
     altuplidpulse = 680-uplidpulse;

     lolidpulse = map(yval, 0, 1023, 410, 280);
       lolidpulse += (trimval/2);
         lolidpulse = constrain(lolidpulse, 280, 400);      
     altlolidpulse = 680-lolidpulse;
 
    
      pwm.setPWM(0, 0, lexpulse);
      pwm.setPWM(1, 0, leypulse);


      if (switchval == HIGH) {
      pwm.setPWM(2, 0, 400);
      pwm.setPWM(3, 0, 240);
      pwm.setPWM(4, 0, 240);
      pwm.setPWM(5, 0, 400);
      }
      else if (switchval == LOW) {
      pwm.setPWM(2, 0, uplidpulse);
      pwm.setPWM(3, 0, lolidpulse);
      pwm.setPWM(4, 0, altuplidpulse);
      pwm.setPWM(5, 0, altlolidpulse);
      }

 

          Serial.println(trimval);
      
  delay(5);

}

المصادر

  1. https://www.instructables.com/Simplified-3D-Printed-Animatronic-Dual-Eye-Mechani/

المخترع المجنـون

مدون و كاتب محتوى تكنولوجي و متخصص في علوم الإلكترونيات

التعليقات

سجل الدخول لتترك تعليق

نقوم بالتبرع بـ 5 % من قيمـة المنتجات للأعمال الخيرية

تـواصـل معنـا

الطائــف - المملكــة العربيــة السعــوديـة

المـوقـع مـوثـق من

المختــرع المجنــون © جميـــع الحقــوق محفوظــة