Isi kandungan:
- Bekalan
- Langkah 1: Pilih Pengekod Putar
- Langkah 2: Tambahkan Pulley dan Idler
- Langkah 3: Pengekodan
- Langkah 4: Pendawaian
- Langkah 5: Cetak Bahagian
Video: Kaunter Filamen Pencetak 3D Pintar: 5 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
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
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
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
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
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
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:
Buat Robot Menari Tanpa Pencetak 3d dan Arduino / #kreativiti pintar: 11 Langkah (dengan Gambar)
Buat Robot Menari Tanpa Pencetak 3d dan Arduino / # smartcreativity: Hai rakan-rakan, dalam tutorial ini saya akan menunjukkan kepada anda bagaimana membuat robot menari di rumah tanpa pencetak 3D dan tanpa Arduino. Robot ini mampu menari, mengimbangkan auto, menghasilkan muzik dan berjalan. Dan reka bentuk Robot juga kelihatan begitu hebat
Pencetak Alexa - Pencetak Resit Berbasikal: 7 Langkah (dengan Gambar)
Pencetak Alexa | Pencetak Resit Berbasikal: Saya peminat mengitar semula teknologi lama dan menjadikannya berguna lagi. Beberapa ketika yang lalu, saya telah membeli pencetak resit terma yang lama dan murah, dan saya mahukan kaedah yang berguna untuk tujuan semula. Kemudian, semasa cuti, saya dihadiahkan Amazon Echo Dot, dan salah satu prestasi
Sensor Filamen DIY untuk pencetak 3D: 6 Langkah
Sensor Filamen DIY untuk pencetak 3D: Dalam projek ini, saya menunjukkan bagaimana anda boleh membuat sensor filamen untuk pencetak 3d yang digunakan untuk mematikan kuasa ketika pencetak 3d keluar dari filamen. Dengan cara ini, bahagian filamen kecil tidak akan tersekat di dalam alat penyemperit. Sensor juga boleh disambungkan
Jam Filamen Gaya LED "Charlotte's Web": 10 Langkah (dengan Gambar)
Jam Filamen Gaya LED "Charlotte's Web": Sejak mula-mula saya melihat bola lampu filamen LED, saya berfikir bahawa filamen mestilah baik untuk sesuatu, tetapi saya mengambil masa sehingga penjualan kedai alat elektronik tempatan ditutup untuk saya untuk membeli beberapa mentol dengan tujuan untuk menghancurkan
The Dispenser Filamen Robotik untuk Arduino: 8 Langkah (dengan Gambar)
The Robotic Filament Dispenser for Arduino: Mengapa filament printer bermotor3D filamen - biasanya hampir kuat - ditarik oleh extruder semasa gulungan diletakkan berdekatan dengan pencetak, bebas berpusing. Saya telah melihat perbezaan yang ketara dalam tingkah laku material bergantung pada tahap penggunaan