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

نموذج ثلاثي الأبعاد لقلب مطبوع من السيليكون

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

القطع و الأدوات

  • بعض البراغي من M1 إلى M3
  • لوحة التحكم في السيرفو من النوع PCA9685 16-channel
  • أردوينـو ميكرو Arduino Micro
  • ثلاثة محركات سيرفو من النوع  DS-843MG أو MG90s
  • مقاومـة متغيرة 10 كيلوأوم 10K Potentiometer
  • وصلة 5.5mm DC panel input
  • مصدر طاقة 5V power supply
  • أسلاك توصيل Jumper cables

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

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

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

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

قد يكون التجميع غير متقن تمامًا، لذا تحقق من الصور المرجعية أثناء التنقل للتأكد من أن الأجزاء يتم دمجها معًا بشكل صحيح. لاحظ أنه إذا كنت تستخدم محركات MG90s، فستحتاج إلى استخدام ملف Heart_Beater.ino arduino، بينما إذا كنت تستخدم محركات DS-843MG فالملف Heart_Beater_Inverted.ino.

  • أدخل المحركات الثلاثة في القاعدة. بدءًا من الزوج السفلي، قم بتمريرالأسلاك من خلال الفتحات الموجودة في المكون الأساسي (قد تحتاج إلى إزالة الموصل البلاستيكي الموجود في نهاية السلك) وربط السيرفو بمسامير M2 × 10 مم. إذا كنت تستخدم محركات DS-843MG، فاستخدم المحول البلاستيكي الصغير الذي سيسمح لك باستخدام براغي M2 في فتحات M3. تعد محركات السيرفو العلوية أكثر تعقيدًا بعض الشيء، حيث ستحتاج إلى إزالة قاعدة السيرفو حيث يبرز السلك من أجل ملاءمة السيرفو في مكانها. يمكن تثبيت القاعدة مرة أخرى بمجرد إدخال المحرك. يحتوي التصميم على مساحة لمسمار واحد فقط لتثبيت محركات السيرفوالعلوية، ولكن يجب أن يكون السيرفو محكمًا بدرجة كافية في القاعدة بحيث يكون آمنًا للغاية.

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

 

  • قم ببناء وصلة السيرفو العلوية. باستخدام ذراع السيرفو المزدوج، قم بالقطع مرة أخرى لترك فتحتين فقط في كل جانب، ثم قم بإرفاق "وصلة قصيرة" في الفتحات الخارجية ثم قم بربطها لأعلى من خلال الجزء السفلي، مع تركها مرة أخرى فضفاضة بدرجة كافية للتحرك بحرية، باستخدام برغيين M2 × 4 مم . يدخل اثنان آخران من هذه البراغي M2 x 4mm في الروابط القصيرة بالطريقة المعاكسة للاتصال بالمكون "المتأرجح" لاحقًا. يمكنك أيضًا توصيل مكون "الهزاز" بالجزء العلوي من القاعدة باستخدام برغي M3 × 20 مم.

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

 

  • قم بتجميع اللوحة الخلفية. يمكن ربط المقاومة المتغيرة ومدخل التيار المستمر في الفتحات الموجودة في الخلف، اعتمادًا على المقاومة المتغيرة التي تستخدمها فقد تحتاج لإستخدام Washer. يجب أن يحتوي مدخل التيار المستمر على أسلاك موجبة وسالبة من لوحة تشغيل السيرغو ملحومة بأطرافها الموجبة والسالبة. تحتاج المقاومة المتغيرة إلى سلكين موجبين وسلكين سالبين ملحومين وسلك واحد لمنفذ الإشارة. لقد استخدمتا كابلات توصيل ذات نهاية femal وقمنا بتجريد الطرف الآخر من أجل اللحام، مما جعل من السهل توصيلها بالاردوينو ولوحة القيادة. قم بتوصيل اللوحة الخلفية بالجزء الخلفي من القاعدة، مع الحرص على التأكد من عدم تشابك الأسلاك التي قمت بلحامها. يجب أن يكون دخل التيار المستمر على الجانب الأيمن، ويجب أن تكون أسلاك السيرفو العلوية مثبتة بشكل آمن بين دخل التيار المستمر و السيرفو نفسه. يمكن تأمين ذلك باستخدام 3 براغي M3 × 20 مم.

 

  • برمجة المتحكم الدقيق . يستخدم اردوينو مايكرو دالة step مع فاصل موجة جيبية وفترات القيمة المحددة لتحريك القلب بتوسع بطيء طبيعي وانكماش سريع، ويتم تحديد سرعة هذه الدورة بواسطة المقاومة المتغيرة. قم بتحميل البرنامج الموجود في الأسفل على arduino micro (لاحظ أن هناك إصدارًا مختلفًا اعتمادًا على المحركات التي تستخدمها!).

 

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

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

  • توصيل الألواح الجانبية. باستخدام براغي M2 × 6 مم، قم بتوصيل الألواح الجانبية بالنموذج.

البرنامج

//Nilheim Mechatronics Servo Heart Mechanism Code
//Make sure you have the Adafruit servo driver library installed >>>>> https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library
//Potentiometer Pin = A0


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

// called this way, it uses the default address 0x40
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
// you can also call it with a different address you want
//Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x41);
// you can also call it with a different address and I2C interface
//Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(&Wire, 0x40);

// Depending on your servo make, the pulse width min and max may vary, you 
// want these to be as small/large as possible without hitting the hard stop
// for max range. You'll have to tweak them as necessary to match the servos you
// have!
#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 sensorValue = 0;        // value read from the pot
int outputValue = 0;

int xval;
int timePeriod = 1000;
float y=0;
float t=0;
float d=330;


void setup() {
  Serial.begin(9600);
  Serial.println("8 channel Servo test!");
  pinMode(A0, 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);
 // pwm.setPWM(n, 0, pulse);
}

void loop() {
/*pwm.setPWM(0, 0, 330);
pwm.setPWM(1, 0, 330);
pwm.setPWM(2, 0, 380);

delay(50);*/
   
  float i;
  timePeriod = map(analogRead(sensorValue), 0, 1023, 2000, 300);

  for (i=0; i<(3*timePeriod/40); i++) {
    y=sin(i/(timePeriod/20));
    d = 430-(y*100);
    t=350+y*50;
    Serial.print(d);
    Serial.print("   ");
    Serial.print(t);
    pwm.setPWM(0, 0, d);
    pwm.setPWM(1, 0, d);
    pwm.setPWM(2, 0, t);
        Serial.println("  ");
    delay(10);
  }
//  i=0;
  for (i=0; i<(3*timePeriod/400); i++) {
    y=sin(i/(timePeriod/20));
    d=430;
    t=350;
    Serial.print(d);
    Serial.print("   ");
    Serial.print(t);
    pwm.setPWM(0, 0, d);
        pwm.setPWM(2, 0, t);
    Serial.println("  ");
    delay(10);

  }
  for (i=0; i<((7*timePeriod)/400); i++) {
    y=sin(i/(timePeriod/20));
    d=430;
    //t=350+y*50;
    Serial.print(d);
    Serial.print("   ");
    Serial.print(t);
    pwm.setPWM(1, 0, d);
    pwm.setPWM(2, 0, t
    );
                Serial.println("  ");
    delay(10);

  }

}

المصادر

  1. https://www.instructables.com/Silicone-Skin-3D-Printed-Realistic-Animatronic-Hea/
  2. http://www.nilheim.co.uk/latest-projects-and-blog/servo-based-heart

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

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

التعليقات

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

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

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

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

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

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