İçindekiler:
- Gereçler
- Adım 1: Bir Döner Kodlayıcı Seçin
- Adım 2: Bir Kasnak ve Avara Ekleyin
- Adım 3: Kodlama
- Adım 4: Kablolama
- Adım 5: Parçaları Yazdırın
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Neden filamenti saymakla uğraşıyorsun? Birkaç neden:
Başarılı baskılar, uygun şekilde kalibre edilmiş bir ekstrüder gerektirir: gcode ekstrüdere filamenti 2 mm hareket ettirmesini söylediğinde, tam olarak 2 mm hareket etmesi gerekir. Aşırı sıkılırsa veya az sıkılırsa kötü şeyler olur. İyi kalibre edilmiş bir sayaç, bir ekstrüderi dürüst tutabilir
Dilimleyiciler, belirli bir baskının ne kadar toplam filament alacağını (hem uzunluk hem de ağırlık olarak) tahmin eder ve bu değerleri kontrol etmek istiyorum
Filamentin hareketini ölçmek, baskının ne zaman başladığını ve ne zaman durduğunu da bana bildirir
Yazıcımın önündeki çirkin dev logonun kaldırılmasıyla kalan boşluğu kapatacak bir şeye ihtiyacım vardı
Serin
Eski bir PS/2 fareyi bir 3D Yazıcı için bir filament sayacı olarak yeniden kullanan bu talimattan ilham aldım. Sadece bir 3D yazıcıya faydalı bir özellik eklemekle kalmadı, aksi takdirde çöplükte bitecek olan eski bir cihazı yeniden tasarladı. Ancak bu proje, farenin gereksiz yere hantal görünen PS/2 arabirimi etrafında inşa edildi. Bu yüzden bunu tek temel bileşen hakkında bilgi edinme fırsatı olarak değerlendirdim: döner kodlayıcı.
Gereçler
Döner kodlayıcı
ESP32 tabanlı geliştirme kartı
I2C OLED ekran (iki renkli ünite özellikle harika görünüyor)
Küçük anlık buton
Yağdan arındırılmış 608ZZ yatak
Hırdavatçıdan iki o-ring (~33mm ID x ~1.5mm profil çapı - yorumlara bakın)
Muhafaza için iki adet 2,5 mm kendinden diş açan vida
Bağlantıyı yazıcınıza takmak için iki adet 4 mm vida, somun ve pul
demet tel
3D Yazıcı ve biraz filament
Adım 1: Bir Döner Kodlayıcı Seçin
Döner kodlayıcılar, dönme hareketini elektrik darbelerine çevirir. Tüm eski okul fareleri onları yuvarlanan topun hareketini ölçmek için kullandı ve daha modern (ha ha) optik fareler hala onları kaydırma tekerleği için kullanıyordu, ki bu benim ilk deney için kullandığım şeydi. Ne yazık ki, benimki bariz bir bağlama noktası sunmadı ve çözünürlüğü zayıftı.
Yapmaya değerse, aşırı yapmaya değer. Bu yüzden büyük, dost canlısı, 360 darbeli devir başına kodlayıcı satın aldım ve projemi bunun üzerine kurdum. Seçtiğim, LPD3806-360BM-G5-24C tipi bir Signswise Artımlı Optik Döner Kodlayıcı idi. Ancak herhangi bir iyi kodlayıcı yapacaktır.
Adım 2: Bir Kasnak ve Avara Ekleyin
Filamentin doğrusal hareketi, bir kasnak tarafından kodlayıcının dönme hareketine çevrilir. Ve filament bir avara tarafından kasnağa karşı tutulur.
Kasnağın iki oluğu vardır, her biri gerilmiş bir o-ringi tutar, böylece kayma olmaz, Avara, filamenti kodlayıcı kasnağı üzerinde merkezde tutmak için tek bir v-oluğuna sahiptir. Yerleştirdiğim bir 608ZZ yatağın üzerine oturuyor ve bu, projemin ana gövdesinde basılmış bir spiral yay üzerine monte edilmiş. (STL dosyaları aşağıda eklenmiştir.)
Bu, doğru olması için biraz deneme yanılma gerektirdi, ancak tasarımım, filamentin bir baskının başından sonuna kadar makaranın herhangi bir kısmından gevşemesine izin vererek çeşitli açıları ve makara yarıçaplarını barındırmalı. Ve baskılı yay, bobinleri değiştirirken filamenti içeri veya dışarı çıkarmayı kolaylaştırır.
Adım 3: Kodlama
Sadece filamenti saymak için, iki dijital girişe sahip herhangi bir geliştirme kartı yeterli olacaktır. Seçtiğim kodlayıcının dört pimi var: Vcc, toprak ve iki kodlayıcı pimi. İşte döner kodlayıcıların nasıl çalıştığını ve bunların Arduino ile nasıl arayüzleneceğini açıklayan gerçekten güzel bir yazı. (Ayrıca: 3 pinli kodlayıcılarla ilgili bu makale.)
Temel sayma basittir: iki giriş - harici dirençlerin Vcc'ye lehimlenmesine gerek kalmaması için dahili olarak yukarı çekilecek şekilde ayarlanmıştır - ve bir kesme. Ayrıca bir tane daha giriş ve kesinti gerektiren bir sıfır/sıfırlama düğmesi ekledim:
geçersiz 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); } void IRAM_ATTR encoderPinDidChange() { if (digitalRead(ENCODER_PIN_1) == digitalRead(ENCODER_PIN_2)) { pozisyon += 1; } başka { konum -= 1; } } void IRAM_ATTR zeroButtonPressed() { // sıfırı işleme ve sıfırlama }
Ama ben aptal bir sayaçtan fazlasını istiyordum. Bir ESP32 (veya ESP8266) ve yerleşik WiFi ile, topladığım verilerle gerçekten bir şeyler yapabilirim. Basit bir zaman aşımı kodu kullanarak (aşağıda açıklanmıştır), yazdırmanın ne zaman başlayıp ne zaman biteceğini belirleyebilir ve bu olayları bildirim olarak telefonuma gönderebilirim. Gelecekte, bir tükenme sensörü ekleyebilir ve ilgilenmem gerektiğinde kendimi bilgilendirebilirim (ve yazıcımı duraklatabilirim).
Kodun tamamı Github'da.
Kodla ilgili birkaç not:
Bunu yapınıza göre özelleştirmek için tek ihtiyacınız olan çözünürlük (kodlayıcıPPR) - devir başına darbelerde, ki bu genellikle belirtilen spesifikasyonun iki katıdır - ve kasnağın yarıçapı (tekerlek Yarıçapı). Bu değerlerin yanı sıra kablosuz ağınızın ssid ve şifresi ile düğmeye, kodlayıcıya ve OLED ekranına bağlı belirli pinlerin tümü config.h dosyasına girer
Sıfır düğmesi aynı zamanda sıfırlama işlevi görür - hata ayıklama için yararlı olan kartı yeniden başlatmak için basılı tutun
Kesintiler güçlüdür - bazen çok güçlüdür. Sıfır düğmesine tek bir dokunuş, zeroButtonPressed() işlevinin 10-20 kez çağrılmasına neden olabilir, bu yüzden biraz geri dönme mantığı ekledim. Optik kodlayıcımın buna ihtiyacı yoktu, ama YMMV
Kesintiler girdilerle eşzamansız olarak ilgilenirken, loop() yordamı defter tutmayı yönetir. Beslenebilen, geri çekilebilen veya durdurulabilen bir numaralandırma olan encoderState, kodlayıcının konumundaki değişiklikle güncellenir. Zaman aşımları, yazıcının ne zaman yazdırmaya başladığını ve ne zaman bitirdiğini belirler. Ancak işin zor yanı, 3D yazıcıların sıklıkla hareketi başlatması ve durdurmasıdır, bu nedenle en iyi sonuç, en az 5 saniye boyunca sürekli olarak durdurulan "baskı tamamlandı" olayını tanımlamaktı. Herhangi bir hareket, yalnızca 15 saniyelik bir zaman çerçevesinde hiçbir "yazdırma tamamlandı" olayı meydana gelmezse, "yazdırma başladı" olayını tanımlayan ikinci bir zamanlayıcıyı tetikler. Uygulamada, bu yüzerek çalışır
Böylece ana döngü() kodu engellenmeden çalışabilir, geri dönme kodu bir RTOS görev döngüsünde çalışır. Benzer şekilde, bildirim göndermeye yönelik http istekleri eşzamanlıdır ve bu nedenle arka plandadır. Böylece animasyonlar sorunsuz çalışır ve sayım hiç durmaz
Örneğimde (A) WiFi ve mDNS ile bir ağ bağlantısı kurmak ve sürdürmek, (B) zamanı bir NTC sunucusundan almak için bir sürü ek kod var, böylece başlangıç ve bitiş bildirimlerime zaman damgası vurabilir ve neşeli bir saat görüntüleyebilirim OLED'imde ve (C) OTA güncellemelerini yönetiyor, böylece kod güncellemeleri için panomu fiziksel olarak Mac'ime bağlamam gerekmiyor. Şu anda hepsi tek bir C++ dosyasında, çünkü onu daha iyi organize etmek için zaman ayırmadım
Harika (ve ücretsiz) Prowl iOS uygulamasını, HTTP Get yöntemlerinden başka bir şey olmadan telefonuma push bildirimleri göndermek için kullandım
Kodu geliştirmek ve kartı flash etmek için, her ikisi de ücretsiz olan Visual Studio Code üzerinde çalışan muhteşem PlatformIO'yu kullandım
Projem için şu kütüphaneleri kullandım: Oliver'dan u8g2, Paul Stoffregen'den elapsedMillis ve Espressif ESP32 platformuyla birlikte gelen Markus Sattler'dan HTTPClient. Diğer her şey ya Arduino kütüphanesi ya da PlatformIO'daki ESP32 platformu ile birlikte gelir
Son olarak, ana kasnağımın farklı açılardan altı basit bitmap'ini oluşturdum, böylece tezgahın arkasındaki OLED'de küçük, düzgün bir çıkrık animasyonu gösterebildim. Daha dramatik bir etki için çok daha hızlı olmasına rağmen, kodlayıcı ile uygun yönde hareket eder
Adım 4: Kablolama
Bunu, kablolamanın son derece basit olması için tasarladım, çoğunlukla kasam küçük olabilir, ancak aynı zamanda hata ayıklama da kolay olurdu. Küçük kutumdaki sıkışık koşullara dikkat edin.:)
İlk gereksinim, döner kodlayıcımın 5V besleme voltajıydı. Depomda bulunan çeşitli ESP32 geliştirme kartlarından yalnızca birkaçı, USB ile çalıştırıldığında Vcc pininde gerçek 5V sağladı. (Diğerleri 4.5-4.8V ölçtü, bu da matematiğinizin kötü olması durumunda 5V'tan düşük.) Kullandığım tahta bir Wemos Lolin32 idi.
Ardından, iki döner kodlayıcı sinyal pimi gelir. Kesintiler kullandığım için asıl endişe, kullandığım pinlerin hiçbir şeye müdahale etmemesidir. ESP32 belgeleri, ADC2'nin WiFi ile aynı anda kullanılamayacağını belirtir, bu nedenle maalesef ADC2 GPIO pinlerinden hiçbirini kullanamayacağım anlamına gelir: 0, 2, 4, 12, 13, 14, 15, 25, 26 veya 27. 16 ve 17'yi seçtim.
Profesyonel ipucu: Tüm bunları bir araya getirdikten sonra kodlayıcınız geriye doğru sayıyor gibi görünüyorsa, iki pin atamasını config.h'de değiştirebilirsiniz.
Son olarak, döner kodlayıcı topraklama kablosunu… tambur rulosu… topraklama pimine bağlayın.
Ardından, sıfır/sıfırlama düğmesi toprak ile başka bir serbest pin arasına bağlanır (GPIO 18'i seçtim).
Kullandığım düğme, yukarıda bahsedilen bilgisayar faresinden kurtardığım küçük bir anlık anahtardı, ancak etraftaki herhangi bir düğme işinizi görecektir. Tahtanın hemen üzerinde onun için yaptığım küçük bir binekte durduğunu görebilirsiniz.
Son olarak, OLED, kartınıza bağlı değilse, yalnızca dört pime ihtiyaç duyar: 3V3, toprak, i2c saati ve i2c verileri. Geliştirme panomda saat ve veriler sırasıyla 22 ve 21'dir.
Adım 5: Parçaları Yazdırın
Bu yapı için yedi parça tasarladım:
Doğrudan döner kodlayıcının miline monte edilen kasnak
608ZZ yatağın üzerine oturan avara (serbestçe dönmesi için koruyucuları çıkarın ve WD40 ile yağdan arındırın)
İki çarkın ve kodlayıcının monte edildiği tutucu - avara için spiral yayı not edin
Tutucuyu sabitlemek için bir braket. Bu adımdaki fotoğraf, braketin tutucuya nasıl takıldığını gösterir
ESP32 dev kartımı tutan muhafaza (altta), yan tarafta USB kablosu için bir boşluk ve kodlayıcı kablolarıma eklediğim konektör için üstte bir boşluk var. Bu, Wemos Lolin32'ye uyacak şekilde tasarlanmıştır, bu nedenle bu tasarımı farklı bir tahtaya sığdırmak için biraz değiştirmeniz gerekebilir
OLED ekranını tutmak için muhafaza (üstte), sıfırlama / sıfırlama düğmesi için başka bir spiral
Alt muhafazanın içindeki iki raf arasında duracak şekilde tasarlanmış, sahip olduğum küçük anahtar için özelleştirilmiş bir düğme tutucu. Anahtarı tutucuya "yapıştırmak" için bir havya kullandım; bir fotoğraf için önceki adıma bakın
Her şey desteksiz basılmak üzere tasarlanmıştır. Tek ihtiyacınız olan, seçtiğiniz renkteki normal PLA.
Hepsini bir araya getirin, yazıcınıza takın (burada biraz yaratıcılık gerekebilir) ve hazırsınız.
Önerilen:
Akıllı Masa LED Işık - Arduino ile Akıllı Aydınlatma - Neopiksel Çalışma Alanı: 10 Adım (Resimlerle)
Akıllı Masa LED Işık | Arduino ile Akıllı Aydınlatma | Neopixels Çalışma Alanı: Artık evde çok fazla zaman geçirdiğimiz, sanal olarak çalıştığımız ve çalıştığımız bir gün, öyleyse neden çalışma alanımızı özel ve akıllı bir aydınlatma sistemi Arduino ve Ws2812b LED'leri ile büyütmeyelim. Burada size Smart'ınızı nasıl oluşturacağınızı gösteriyorum. Masa LED Işık o
Kullanılmayan Akıllı Telefonu Akıllı Ekrana Dönüştürün: 6 Adım (Resimlerle)
Kullanılmayan bir Akıllı Telefonu Akıllı Ekrana Dönüştürün: Deze öğreticisi, Hollanda'da çok iyi. Kullanılmayan (eski) bir akıllı telefonunuz var mı? Bu kolay adım adım öğreticiyi izleyerek Google E-Tablolar ve biraz kağıt kalem kullanarak akıllı bir ekrana dönüştürün. Bitirdiğinizde
Iot Akıllı Enerji Sayacı: 6 Adım
Iot Akıllı Enerji Sayacı: Cihaz tarafından tüketilen güç, akım, watt saat ve birim enerjiyi takip edebilen iot tabanlı akıllı enerji sayacıdır.Çalışma videosunu buradan izleyebilirsiniz
Akıllı Elektrik Sayacı: 3 Adım
Akıllı Elektrik Sayacı: Hemen hemen tüm Dijital Elektrik sayaçlarının (akıllı olsun ya da olmasın) her belirli bir miktarda enerji kullanıldığında yanıp sönen bir ışığı vardır - genellikle her Watt-saat için bir kez (Genellikle 1000 imp/kWh olarak etiketlenir). bunu basit bir Light Depen ile tespit edin
Akıllı Telefonla ESP8266 Tabanlı Sonoff Temel Akıllı Anahtar Nasıl Kontrol Edilir: 4 Adım (Resimlerle)
Akıllı Telefonla ESP8266 Tabanlı Sonoff Temel Akıllı Anahtar Nasıl Kontrol Edilir: Sonoff, ITEAD tarafından geliştirilen Akıllı Ev için bir cihaz hattıdır. Bu hattaki en esnek ve ucuz cihazlardan biri Sonoff Basic. Harika bir çip olan ESP8266'yı temel alan Wi-Fi özellikli bir anahtardır. Bu makale, Cl'nin nasıl kurulacağını açıklar