جدول المحتويات:

عداد خيوط الطابعة الذكية ثلاثية الأبعاد: 5 خطوات (بالصور)
عداد خيوط الطابعة الذكية ثلاثية الأبعاد: 5 خطوات (بالصور)

فيديو: عداد خيوط الطابعة الذكية ثلاثية الأبعاد: 5 خطوات (بالصور)

فيديو: عداد خيوط الطابعة الذكية ثلاثية الأبعاد: 5 خطوات (بالصور)
فيديو: اشتريت أول طابعة 3D بحياتي 😍 2024, يونيو
Anonim
عداد خيوط الطابعة الذكية ثلاثية الأبعاد
عداد خيوط الطابعة الذكية ثلاثية الأبعاد

لماذا تهتم بحساب الفتيل؟ عدة أسباب:

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

تقطع القواطع المقدار الإجمالي للفتيل الذي ستستغرقه طباعة معينة (من حيث الطول والوزن) وأود التحقق من هذه القيم

قياس حركة الفتيل يسمح لي أيضًا بمعرفة متى بدأت الطباعة ومتى توقفت

كنت بحاجة إلى شيء ما لتغطية المساحة التي خلفتها إزالة الشعار العملاق القبيح الموجود في مقدمة الطابعة

إنه رائع

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

اللوازم

التشفير الروتاري

مجلس التنمية القائم على ESP32

شاشة I2C OLED (تبدو الوحدة ثنائية اللون رائعة بشكل خاص)

زر ضغط مؤقت صغير

محمل 608ZZ منزوع الدهن

حلقتان من متجر الأجهزة (~ 33 مم معرف × ~ 1.5 مم قطر ملف التعريف - انظر التعليقات)

اثنان من البراغي 2.5 مم للحاوية

اثنان من البراغي 4 مم ، والصواميل ، والغسالات لتوصيل الحامل بالطابعة

حفنة من الأسلاك

طابعة ثلاثية الأبعاد وبعض الشعيرات

الخطوة 1: اختر أداة التشفير الدوارة

اختر جهاز تشفير دوار
اختر جهاز تشفير دوار
اختر جهاز تشفير دوار
اختر جهاز تشفير دوار

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

إذا كان الأمر يستحق القيام به ، فإن الأمر يستحق المبالغة فيه. لذلك اشتريت برنامج تشفير كبير وودود 360 نبضة لكل ثورة وقمت ببناء مشروعي حوله. الذي اخترته كان Signswise Incremental Optical Rotary Encoder ، اكتب LPD3806-360BM-G5-24C. لكن أي برنامج تشفير لائق سيفي بالغرض.

الخطوة 2: أضف بكرة ووحدة تباطؤ

أضف بكرة وعاطل
أضف بكرة وعاطل

تُترجم الحركة الخطية للخيوط إلى حركة دورانية لجهاز التشفير بواسطة بكرة. ويتم تثبيت الفتيل على البكرة بواسطة عامل تباطؤ.

تحتوي البكرة على أخاديد ، كل منهما يحمل حلقة دائرية ممتدة بحيث لا يكون هناك انزلاق ،

يحتوي جهاز التباطؤ على أخدود على شكل حرف V واحد لإبقاء الفتيل في المنتصف على بكرة جهاز التشفير. إنه يجلس على محمل 608ZZ كنت أضعه حوله ، وهو مثبت على زنبرك حلزوني مطبوع في الجزء الرئيسي من مشروعي. (ملفات STL المرفقة أدناه.)

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

الخطوة الثالثة: البرمجة

Image
Image

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

يعد العد الأساسي بسيطًا: مدخلين - تم ضبطهما للسحب داخليًا حتى لا تحتاج المقاومات الخارجية إلى أن تكون ملحومة بـ Vcc - ومقاطعة واحدة. أضفت أيضًا زر صفر / إعادة تعيين ، مما يتطلب إدخالًا إضافيًا ومقاطعة:

setUpPins باطلة () {

pinMode (ENCODER_PIN_1 ، INPUT_PULLUP) ، pinMode (ENCODER_PIN_2 ، INPUT_PULLUP) ، pinMode (ZERO_BTN_PIN، INPUT_PULLUP) ، attachInterrupt (ENCODER_PIN_1، encoderPinDidChange، CHANGE) ؛ attachInterrupt (ZERO_BTN_PIN، zeroButtonPressed، CHANGE) ؛ } برنامج IRAM_ATTR encoderPinDidChange باطل () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {position + = 1 ؛ } else {position - = 1 ؛ }} باطل IRAM_ATTR zeroButtonPressed () {// handle zero & reset}

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

الكود الكامل موجود على جيثب.

بعض الملاحظات على الكود:

لتخصيص هذا وفقًا لجهازك ، كل ما تحتاجه هو الدقة (encoderPPR) - في نبضات لكل ثورة ، والتي عادةً ما تكون ضعف المواصفات المذكورة - ونصف قطر البكرة (wheelRadius). هذه القيم ، بالإضافة إلى ssid وكلمة المرور لشبكة wifi الخاصة بك والدبابيس المحددة المتصلة بالزر ، والمشفّر ، وشاشة OLED ، كلها تدخل في config.h

يتضاعف زر الصفر أيضًا كإعادة تعيين - استمر في الضغط عليه لإعادة تشغيل اللوحة ، وهو أمر مفيد لتصحيح الأخطاء

المقاطعات قوية - أحيانًا قوية جدًا. قد تؤدي نقرة واحدة على زر الصفر إلى استدعاء وظيفة zeroButtonPressed () من 10 إلى 20 مرة ، لذلك أضفت بعض منطق debounce. لم يكن برنامج التشفير البصري الخاص بي بحاجة إليه ، ولكن YMMV

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

لذلك يمكن تشغيل رمز الحلقة الرئيسية () بدون أي قيود ، ويتم تشغيل رمز debounce في حلقة مهمة RTOS. وبالمثل ، فإن طلبات http لإرسال الإخطارات متزامنة وبالتالي تكون في الخلفية. وهكذا تعمل الرسوم المتحركة بسلاسة ولا يتوقف العد أبدًا

هناك مجموعة من التعليمات البرمجية الإضافية في المثال الخاص بي لـ (أ) إنشاء اتصال شبكة مع WiFi و mDNS والحفاظ عليه ، (ب) جلب الوقت من خادم NTC حتى أتمكن من ختم إشعارات البداية والنهاية الخاصة بي وعرض ساعة مرح على OLED الخاص بي ، و (C) يتعامل مع تحديثات OTA حتى لا أضطر إلى توصيل لوحي فعليًا بجهاز Mac للحصول على تحديثات التعليمات البرمجية. في الوقت الحالي ، كل شيء في ملف C ++ واحد متآلف ، فقط لأنني لم أستغرق وقتًا في تنظيمه بشكل أفضل

لقد استخدمت تطبيق Prowl iOS الرائع (والمجاني) لإرسال إشعارات الدفع إلى هاتفي بدون أي شيء أكثر من طرق HTTP Get

لتطوير الكود وفلاش اللوحة ، استخدمت PlatformIO المذهلة التي تعمل على Visual Studio Code ، وكلاهما مجاني

بالنسبة لمشروعي ، استخدمت هذه المكتبات: u8g2 بواسطة Oliver ، و elapsedMillis بواسطة Paul Stoffregen ، و HTTPClient بواسطة Markus Sattler ، والتي تأتي مع منصة Espressif ESP32. كل شيء آخر يأتي إما مع مكتبة Arduino أو منصة ESP32 في PlatformIO

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

الخطوة 4: الأسلاك

الأسلاك
الأسلاك

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

كان الشرط الأول هو جهد إمداد 5 فولت لجهاز التشفير الدوار الخاص بي. من بين لوحات تطوير ESP32 المختلفة التي أمتلكها في مخبئي ، لم يكن هناك سوى عدد قليل منها مزود بجهد 5 فولت حقيقي عند دبوس Vcc عند تشغيله بواسطة USB. (كانت مقاييس الآخرين 4.5-4.8 فولت ، والتي ، في حالة كانت الرياضيات الخاصة بك سيئة ، تكون أقل من 5 فولت.) اللوحة التي استخدمتها كانت Wemos Lolin32.

بعد ذلك ، تعال إلى دبابيس إشارة التشفير الدوارة. نظرًا لأنني أستخدم المقاطعات ، فإن الشاغل الرئيسي هو أن المسامير التي أستخدمها لا تتداخل مع أي شيء. تنص مستندات ESP32 على أنه لا يمكن استخدام ADC2 في نفس الوقت مع WiFi ، وهذا يعني للأسف أنه لا يمكنني استخدام أي من دبابيس ADC2 GPIO: 0 ، 2 ، 4 ، 12 ، 13 ، 14 ، 15 ، 25 ، 26 أو 27. اخترت 16 و 17.

نصيحة احترافية: إذا ، بعد تجميع كل هذا معًا ، يبدو أن برنامج التشفير الخاص بك يقوم بالعد التنازلي ، يمكنك فقط تبديل تعييني الدبوس في config.h.

أخيرًا ، قم بتوصيل السلك الأرضي لجهاز التشفير الدوار بـ … لفة الأسطوانة … الدبوس الأرضي.

بعد ذلك ، يتم توصيل زر الضغط صفر / إعادة الضبط بين الأرض ودبوس مجاني آخر (اخترت GPIO 18).

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

أخيرًا ، تحتاج OLED ، إذا لم تكن متصلة بالفعل بلوحك ، إلى أربعة دبابيس فقط: 3V3 ، والأرضي ، وساعة i2c ، وبيانات i2c. على لوحة التطوير الخاصة بي ، تكون الساعة والبيانات 22 و 21 على التوالي.

الخطوة 5: اطبع الأجزاء

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

لقد صممت سبعة أجزاء لهذا التصميم:

البكرة ، التي يتم تركيبها مباشرة على عمود التشفير الدوار

وحدة التباطؤ ، التي تناسب أكثر من محمل 608ZZ (قم بإزالة الشد وإزالة الشحوم باستخدام WD40 حتى يدور بحرية)

الحامل ، الذي يتم تركيب العلبتين وجهاز التشفير عليه - لاحظ الزنبرك اللولبي للتباطؤ

قوس لتثبيت الحامل. تُظهر الصورة في هذه الخطوة كيفية تثبيت الحامل على الحامل

العلبة (السفلية) للاحتفاظ بلوحة التطوير ESP32 ، مع مساحة لكابل USB على الجانب وأخرى في الأعلى للموصل الذي أضفته إلى أسلاك التشفير الخاصة بي. تم تصميم هذا الجهاز ليناسب Wemos Lolin32 ، لذلك قد تضطر إلى تعديل هذا التصميم قليلاً ليلائم لوحة مختلفة

العلبة (العلوية) للاحتفاظ بشاشة OLED ، حلزوني آخر لزر الصفر / إعادة الضبط

حامل زر مخصص للمفتاح الصغير الذي أمتلكه ، مصمم للراحة بين الرفين داخل العلبة السفلية. لقد استخدمت مكواة لحام من أجل "لصق" المفتاح بالحامل ؛ انظر الخطوة السابقة للصورة

تم تصميم كل شيء ليتم طباعته بدون دعم. كل ما تحتاجه هو PLA العادي باللون الذي تختاره.

ضعها جميعًا معًا ، وأرفقها بالطابعة (قد تكون هناك حاجة إلى بعض الإبداع هنا) ، وأنت على ما يرام.

موصى به: