Isi kandungan:

Kaunter Filamen Pencetak 3D Pintar: 5 Langkah (dengan Gambar)
Kaunter Filamen Pencetak 3D Pintar: 5 Langkah (dengan Gambar)

Video: Kaunter Filamen Pencetak 3D Pintar: 5 Langkah (dengan Gambar)

Video: Kaunter Filamen Pencetak 3D Pintar: 5 Langkah (dengan Gambar)
Video: Printer 3D Murah Cuma 2 Jutaan di Indonesia KINGROON KP3S 2024, Jun
Anonim
Kaunter Filamen Pencetak 3D Pintar
Kaunter Filamen Pencetak 3D Pintar

Mengapa bersusah payah mengira filamen? Beberapa sebab:

Cetakan yang berjaya memerlukan extruder yang dikalibrasi dengan betul: apabila gcode memberitahu extruder untuk memindahkan filamen 2mm, ia perlu bergerak tepat 2mm. Perkara-perkara buruk berlaku jika ia terlalu banyak mengekstrusi atau tidak diekstrusi. Kaunter yang dikalibrasi dengan baik dapat membuat seorang extruder jujur

Slicers mengira berapa jumlah filamen yang akan diambil oleh cetakan tertentu (dalam panjang dan berat) dan saya ingin memeriksa nilai tersebut

Mengukur pergerakan filamen juga memberitahu saya bila percetakan telah dimulakan dan kapan ia berhenti

Saya memerlukan sesuatu untuk menutup ruang yang ditinggalkan dengan penyingkiran logo gergasi jelek di bahagian depan pencetak saya

Ia sejuk

Saya terinspirasi oleh instruksional ini, yang menggunakan tetikus PS / 2 lama sebagai penghitung filamen untuk Pencetak 3D. Bukan hanya menambahkan fitur yang berguna pada pencetak 3D, ia juga menggunakan semula peranti lama yang akan berakhir di tempat pembuangan sampah. Tetapi projek itu dibina di antara muka PS / 2 tetikus, yang nampaknya tidak semestinya rumit. Oleh itu, saya mengambil ini sebagai peluang untuk mempelajari satu-satunya komponen penting: rotary encoder.

Bekalan

Pengekod putar

Papan dev berasaskan ESP32

Paparan OLED I2C (unit dua warna kelihatan sangat sejuk)

Tombol tekan sekejap kecil

Galas de-greated 608ZZ

Dua cincin o dari kedai perkakasan (~ 33mm ID x ~ 1.5mm diameter profil - lihat komen)

Dua skru penoreh sendiri 2.5mm untuk kandang

Dua skru, mur, dan pencuci 4mm untuk memasang pelekap ke pencetak anda

Sekumpulan wayar

Pencetak 3D dan beberapa filamen

Langkah 1: Pilih Pengekod Putar

Pilih Pengekod Rotary
Pilih Pengekod Rotary
Pilih Pengekod Rotary
Pilih Pengekod Rotary

Pengekod putar menterjemahkan pergerakan putaran menjadi denyutan elektrik. Semua tikus tua menggunakan mereka untuk mengukur pergerakan bola bergulir, dan tikus optik yang lebih moden (ha ha) masih menggunakannya untuk roda tatal, itulah yang saya gunakan dan gunakan untuk percubaan awal. Malangnya, saya tidak menawarkan titik pemasangan yang jelas dan penyelesaiannya kurang baik.

Sekiranya ia perlu dilakukan, ia perlu dilakukan secara berlebihan. Oleh itu, saya membeli pengekod 360 nadi per revolusi yang besar dan mesra dan membina projek saya di sekitarnya. Yang saya pilih ialah Signswise Incremental Optical Rotary Encoder, jenis LPD3806-360BM-G5-24C. Tetapi pengekod yang baik akan berlaku.

Langkah 2: Tambahkan Pulley dan Idler

Tambah Pulley dan Idler
Tambah Pulley dan Idler

Pergerakan linear filamen diterjemahkan menjadi pergerakan putaran pengekod oleh takal. Dan filamen dipegang pada takal oleh pemalas.

Pulley mempunyai dua alur, masing-masing memegang cincin o yang diregangkan sehingga tidak ada tergelincir, Pemalas mempunyai alur v tunggal untuk memastikan filamen berpusat pada takal pengekod. Ini terletak pada bantalan 608ZZ yang saya letakkan di sekelilingnya, dan dipasang pada spring berputar yang dicetak tepat di badan utama projek saya. (Fail STL dilampirkan di bawah.)

Ini memerlukan sedikit percubaan dan kesilapan, tetapi reka bentuk saya harus menampung pelbagai sudut dan jari-jari spool, yang memungkinkan filamen untuk bersantai dari mana-mana bahagian kili, dari awal hingga akhir cetakan. Dan spring yang dicetak memudahkan masuk atau keluar filamen ketika menukar kili.

Langkah 3: Pengekodan

Image
Image

Untuk hanya mengira filamen, papan dev dengan dua input digital akan dilakukan. Pengekod yang saya pilih mempunyai empat pin: Vcc, ground, dan dua pin encoder. Berikut adalah penulisan yang sangat bagus yang menerangkan bagaimana pengekod berputar berfungsi dan bagaimana menghubungkannya dengan Arduino. (Juga: artikel ini mengenai pengekod 3-pin.)

Pengiraan asasnya mudah: dua input - diatur untuk menarik dalaman sehingga perintang luaran tidak perlu disolder ke Vcc - dan satu mengganggu. Saya juga menambah butang zero / reset, memerlukan satu lagi input dan mengganggu:

batal setUpPins () {

pinMode (ENCODER_PIN_1, INPUT_PULLUP); pinMode (ENCODER_PIN_2, INPUT_PULLUP); pinMode (ZERO_BTN_PIN, INPUT_PULLUP); attachInterrupt (ENCODER_PIN_1, encoderPinDidChange, TUKAR); attachInterrupt (ZERO_BTN_PIN, zeroButtonPressed, CHANGE); } batal IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {kedudukan + = 1; } lain {kedudukan - = 1; }} batal IRAM_ATTR zeroButtonPressed () {// kendalikan zero & reset}

Tetapi saya mahukan lebih daripada sekadar kaunter bodoh. Dengan ESP32 (atau ESP8266) dan WiFi terbina dalamnya, saya sebenarnya dapat melakukan sesuatu dengan data yang saya kumpulkan. Dengan menggunakan beberapa kod waktu tamat yang ringkas (dijelaskan di bawah), saya dapat menentukan kapan percetakan bermula dan berakhir, dan menghantar peristiwa tersebut sebagai pemberitahuan ke telefon saya. Pada masa akan datang, saya mungkin menambahkan sensor kehabisan dan memberi tahu diri saya (dan menjeda pencetak saya) apabila perhatian saya diperlukan.

Kod penuh terdapat di Github.

Beberapa nota pada kod:

Untuk menyesuaikannya dengan bangunan anda, yang anda perlukan hanyalah resolusi (encoderPPR) - dalam denyutan per revolusi, yang biasanya dua kali ganda dari spesifikasi yang dinyatakan - dan radius takal (wheelRadius). Nilai-nilai ini, ditambah ssid dan kata laluan wifi anda dan pin khusus yang disambungkan ke butang, pengekod, dan skrin OLED, semuanya masuk dalam config.h

Butang sifar juga berfungsi sebagai set semula - tahan untuk reboot papan, yang berguna untuk menyahpepijat

Gangguan sangat kuat - kadang-kadang terlalu kuat. Satu ketukan butang sifar boleh menyebabkan fungsi zeroButtonPressed () dipanggil 10-20 kali, jadi saya menambahkan beberapa logik debounce. Pengekod optik saya tidak memerlukannya, tetapi YMMV

Walaupun gangguan mengurus input secara tidak serentak, loop () rutin menangani pembukuan. EncoderState - enum yang dapat memberi makan, menarik balik, atau berhenti - dikemas kini dengan perubahan kedudukan pengekod. Waktu tamat kemudian menentukan bila pencetak telah memulakan dan menyimpulkan pencetakan. Tetapi bahagian yang sukar adalah bahawa pencetak 3D sering memulakan dan menghentikan pergerakan, jadi apa yang paling berkesan adalah menentukan peristiwa "cetak lengkap" yang akan terus berhenti selama sekurang-kurangnya 5 saat. Sebarang gerakan mencetuskan pemasa kedua yang menentukan peristiwa "percetakan dimulakan" hanya jika tidak ada peristiwa "cetak selesai" berlaku dalam jangka masa 15 saat. Dalam praktiknya, ini berfungsi dengan lancar

Jadi kod gelung utama () dapat berjalan tanpa beban, kod debounce berjalan dalam gelung tugas RTOS. Begitu juga, permintaan http untuk menghantar pemberitahuan segerak dan oleh itu berlatarbelakangkan. Oleh itu, animasi berjalan dengan lancar dan pengiraan tidak akan berhenti

Terdapat banyak kod tambahan dalam contoh saya untuk (A) mewujudkan dan mengekalkan sambungan rangkaian dengan WiFi dan mDNS, (B) mengambil masa dari pelayan NTC sehingga saya dapat mencatat masa mula dan akhir pemberitahuan saya dan memaparkan jam yang sangat menarik pada OLED saya, dan (C) mengendalikan kemas kini OTA jadi saya tidak perlu menghubungkan papan saya secara fizikal ke Mac saya untuk kemas kini kod. Buat masa ini, semuanya ada dalam satu fail C ++ monolitik, hanya kerana saya tidak meluangkan masa untuk menyusunnya dengan lebih baik

Saya menggunakan aplikasi Prowl iOS yang indah (dan percuma) untuk menghantar pemberitahuan push ke telefon saya dengan tidak lebih daripada kaedah HTTP Get

Untuk mengembangkan kod dan menyalakan papan, saya menggunakan PlatformIO spektakuler yang berjalan pada Visual Studio Code, keduanya percuma

Untuk projek saya, saya menggunakan perpustakaan ini: u8g2 oleh Oliver, berlaluMillis oleh Paul Stoffregen, dan HTTPClient oleh Markus Sattler, yang disertakan dengan platform Espressif ESP32. Yang lain sama ada dilengkapi dengan perpustakaan Arduino atau platform ESP32 di PlatformIO

Akhirnya, saya membuat enam bitmap sederhana takal utama saya pada sudut yang berbeza, jadi saya dapat menunjukkan animasi roda berputar kecil yang kemas di OLED di belakang kaunter. Ia bergerak ke arah yang sesuai dengan pengekod, walaupun jauh lebih pantas untuk kesan yang lebih dramatik

Langkah 4: Pendawaian

Pendawaian
Pendawaian

Saya merancang ini supaya pendawaian mudah mati, kebanyakannya penutup saya mungkin kecil, tetapi juga penyahpepijatan akan menjadi tepat. Perhatikan keadaan sempit di kotak kecil saya.:)

Keperluan pertama ialah voltan bekalan 5V pengekod putar saya. Dari pelbagai papan dev ESP32 yang saya ada di simpanan saya, hanya beberapa yang dibekalkan 5V benar pada pin Vcc ketika dikuasakan oleh USB. (Yang lain berukuran 4.5-4.8V, yang, sekiranya matematik anda buruk, lebih rendah daripada 5V.) Papan yang saya gunakan adalah Wemos Lolin32.

Seterusnya, datanglah dua pin isyarat pengekod putar. Oleh kerana saya menggunakan gangguan, perhatian utama adalah bahawa pin yang saya gunakan tidak mengganggu apa-apa. Dokumen ESP32 menyatakan bahawa ADC2 tidak dapat digunakan pada masa yang sama dengan WiFi, jadi malangnya itu bermaksud saya tidak dapat menggunakan pin GPIO ADC2: 0, 2, 4, 12, 13, 14, 15, 25, 26, atau 27. Saya memilih 16 dan 17.

Petua profesional: jika, setelah menyatukan semua ini, pengekod anda nampaknya mengira ke belakang, anda hanya boleh menukar dua penugasan pin di config.h.

Akhirnya, sambungkan wayar tanah pengekod putar ke… gendang drum… pin ground.

Seterusnya, butang sifar / tetapan semula disambungkan antara ground dan pin percuma yang lain (saya memilih GPIO 18).

Butang yang saya gunakan adalah suis sekejap kecil yang saya selamatkan dari tetikus komputer yang disebutkan di atas, tetapi butang apa pun yang anda miliki akan berlaku. Anda dapat melihatnya bersandar di dudukan kecil yang saya buat tepat di atas papan.

Akhirnya, OLED, jika belum disambungkan ke papan anda, hanya memerlukan empat pin: 3V3, ground, jam i2c, dan data i2c. Pada papan dev saya, jam dan data masing-masing adalah 22 dan 21.

Langkah 5: Cetak Bahagian

Cetak Bahagian
Cetak Bahagian

Saya merancang tujuh bahagian untuk binaan ini:

Takal, yang dipasang terus pada batang pengekod putar

Pemalas, yang sesuai dengan galas 608ZZ (lepaskan pelindung dan degrease dengan WD40 sehingga berputar dengan bebas)

Pemegangnya, di mana kedua-dua weel dan encoder dipasang - perhatikan spring putaran untuk pemalas

Pendakap untuk menstabilkan pemegangnya. Foto dalam langkah ini menunjukkan bagaimana pendakap dipasang pada pemegangnya

Kandang (bawah) untuk menahan papan dev ESP32 saya, dengan ruang untuk kabel USB di sisi dan satu lagi di atas untuk penyambung yang saya tambahkan ke wayar pengekod saya. Yang ini dirancang agar sesuai dengan Wemos Lolin32, jadi anda mungkin perlu sedikit mengubah reka bentuk ini agar sesuai dengan papan yang berlainan

Kandang (atas) untuk menahan skrin OLED, lingkaran lain untuk butang zero / reset

Pemegang butang disesuaikan untuk suis kecil yang saya ada, yang dirancang untuk berehat di antara dua rak di dalam kandang bawah. Saya menggunakan besi pematerian untuk "melekatkan" suis ke pemegangnya; lihat langkah sebelumnya untuk foto

Semuanya dirancang untuk dicetak tanpa sokongan. PLA biasa dalam warna pilihan anda adalah semua yang anda perlukan.

Gabungkan semuanya, pasangkan ke pencetak anda (mungkin diperlukan kreativiti di sini), dan anda boleh pergi.

Disyorkan: