Obsah:

Čítač vláken Smart 3D tiskárny: 5 kroků (s obrázky)
Čítač vláken Smart 3D tiskárny: 5 kroků (s obrázky)

Video: Čítač vláken Smart 3D tiskárny: 5 kroků (s obrázky)

Video: Čítač vláken Smart 3D tiskárny: 5 kroků (s obrázky)
Video: The Internet of Things by James Whittaker of Microsoft 2024, Listopad
Anonim
Inteligentní čítač vláken 3D tiskárny
Inteligentní čítač vláken 3D tiskárny

Proč se trápit s počítáním vlákna? Několik důvodů:

Úspěšné výtisky vyžadují správně kalibrovaný extruder: když gcode říká extruderu, aby posunul vlákno o 2 mm, musí se pohybovat přesně o 2 mm. Špatné věci se stávají, pokud je vytlačují nebo nevytlačují. Dobře kalibrovaný počítač může udržet extrudér poctivý

Kráječe přibližují, kolik celkového vlákna daný tisk zabere (jak v délce, tak v hmotnosti) a rád bych tyto hodnoty zkontroloval

Měření pohybu vlákna mi také dalo vědět, kdy tisk začal a kdy se zastavil

Potřeboval jsem něco, co by zakrylo prostor, který zbyl po odstranění ošklivého obřího loga na přední straně mé tiskárny

To je super

Inspiroval jsem se tímto návodem, který repurponoval starou myš PS/2 jako čítač vláken pro 3D tiskárnu. Nejenže přidalo užitečnou funkci 3D tiskárně, ale také upravilo staré zařízení, které by jinak skončilo na skládce. Ale tento projekt byl postaven na rozhraní PS/2 myši, které se zdálo zbytečně těžkopádné. Vzal jsem to tedy jako příležitost dozvědět se o jediné podstatné součásti: rotačním kodéru.

Zásoby

Rotační kodér

Deska pro vývoj na bázi ESP32

I2C OLED displej (dvoubarevná jednotka vypadá obzvlášť cool)

Drobné chvilkové tlačítko

Odmaštěné ložisko 608ZZ

Dva o -kroužky z železářství (~ 33 mm ID x ~ 1,5 mm průměr profilu - viz komentáře)

Dva 2,5 mm samořezné šrouby pro skříň

Dva 4mm šrouby, matice a podložky k připevnění držáku k tiskárně

Svazek drátů

3D tiskárna a nějaké vlákno

Krok 1: Vyberte rotační kodér

Vyberte rotační kodér
Vyberte rotační kodér
Vyberte rotační kodér
Vyberte rotační kodér

Rotační kodéry převádějí rotační pohyb na elektrické impulsy. Všechny myši ze staré školy je používaly k měření pohybu valící se koule a modernější (ha ha) optické myši je stále používaly pro rolovací kolečko, což jsem měl kolem a používal jsem pro počáteční experimenty. Můj bohužel nenabídl žádné zjevné připojovací body a jeho rozlišení bylo špatné.

Pokud to stojí za to, stojí to za to. Tak jsem si koupil velký, přátelský, 360-pulzní kodér na otáčku a postavil kolem toho svůj projekt. Ten, který jsem vybral, byl přírůstkový optický rotační kodér Signswise, typ LPD3806-360BM-G5-24C. Ale každý slušný kodér to udělá.

Krok 2: Přidejte kladku a napínací kladku

Přidejte kladku a napínací kladku
Přidejte kladku a napínací kladku

Lineární pohyb vlákna se převádí na rotační pohyb kodéru kladkou. A vlákno drží napínací kladka proti kladce.

Kladka má dvě drážky, z nichž každá drží natažený o-kroužek, takže nedochází k uklouznutí, Napínací kladka má jedinou V drážku, která udržuje vlákno ve středu na kladce kodéru. Sedí na ložisku 608ZZ, které jsem položil, a to je namontováno na spirálové pružině vytištěné přímo v hlavním těle mého projektu. (Soubory STL jsou připojeny níže.)

Trvalo to trochu pokusu a omylu, než se dostal do pořádku, ale můj návrh by měl vyhovovat různým úhlům a poloměrům cívky, aby se vlákno odvíjelo z jakékoli části cívky, od začátku až do konce tisku. A potištěná pružina usnadňuje vysunutí nebo vysunutí vlákna při výměně cívek.

Krok 3: Kódování

Image
Image

Pro počítání vláken bude stačit jakákoli deska pro vývoj se dvěma digitálními vstupy. Kodér, který jsem vybral, má čtyři piny: Vcc, pozemní a dva piny kodéru. Zde je opravdu pěkný zápis, který vysvětluje, jak rotační kodéry fungují a jak je propojit s Arduinem. (Také: tento článek o 3kolíkových kodérech.)

Základní počítání je jednoduché: dva vstupy - nastaveny tak, aby interně vytahovaly, takže externí odpory nemusí být připájeny k Vcc - a jedno přerušení. Také jsem přidal tlačítko nula/reset, vyžadující ještě jeden vstup a přerušení:

zrušit 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)) {pozice += 1; } else {pozice -= 1; }} neplatné IRAM_ATTR zeroButtonPressed () {// zpracovat nulu a resetovat}

Ale chtěl jsem víc než jen hloupý pult. S ESP32 (nebo ESP8266) a jeho vestavěným WiFi mohu skutečně něco udělat s daty, která sbírám. Pomocí nějakého jednoduchého kódu časového limitu (vysvětleného níže) mohu určit, kdy tisk začíná a končí, a odeslat tyto události jako oznámení na můj telefon. V budoucnu možná přidám snímač vybití a upozorním (a pozastavím tiskárnu), když bude potřeba mé pozornosti.

Úplný kód je na Githubu.

Několik poznámek ke kódu:

Chcete -li to přizpůsobit svému sestavení, potřebujete pouze rozlišení (enkodérPPR) - v pulsech na otáčku, což je obvykle dvojnásobek uvedených specifikací - a poloměr kladky (wheelRadius). Tyto hodnoty, plus ssid a heslo vaší wifi a konkrétní piny připojené k tlačítku, kodéru a obrazovce OLED, všechny jdou v config.h

Tlačítko nuly slouží také jako reset - podržte jej a restartujte desku, což je užitečné pro ladění

Přerušení jsou silná - někdy příliš silná. Jediné klepnutí na tlačítko nula by mohlo způsobit vyvolání funkce zeroButtonPressed () 10–20krát, takže jsem přidal nějakou logiku odskoku. Můj optický kodér to nepotřeboval, ale YMMV

Zatímco se o vstupy starají asynchronně přerušení, rutina loop () zpracovává účetnictví. EnkodérState - výčet, který lze podávat, zasouvat nebo zastavovat - se aktualizuje se změnou polohy kodéru. Časové limity pak určí, kdy tiskárna zahájila a ukončila tisk. Ale ošemetné na tom je, že 3D tiskárny často spouští a zastavují pohyb, takže nejlépe fungovalo definování události „tisk dokončen“, která zůstávala nepřetržitě zastavena alespoň na 5 sekund. Jakýkoli pohyb spustí druhý časovač, který definuje událost „tisk zahájen“, pouze pokud v časovém rámci 15 sekund nedojde k žádné události „tisk dokončen“. V praxi to funguje jako plavání

Kód hlavní smyčky () tedy může běžet bez zatížení, kód pro odskakování běží ve smyčce úloh RTOS. Podobně jsou požadavky HTTP na odesílání oznámení synchronní, a proto na pozadí. Animace tedy běží hladce a počítání se nikdy nezastaví

V mém příkladu je spousta dalšího kódu pro (A) navázání a udržování síťového připojení pomocí WiFi a mDNS, (B) načítání času ze serveru NTC, abych mohl časově označit svá oznámení o zahájení a ukončení a zobrazit tak nadčasové hodiny na mém OLED a (C) zpracovávat aktualizace OTA, abych nemusel fyzicky připojovat desku k počítači Mac kvůli aktualizacím kódu. V tuto chvíli je vše v jednom monolitickém souboru C ++, jen proto, že jsem si neudělal čas na jeho lepší organizaci

Použil jsem úžasnou (a bezplatnou) aplikaci Prowl iOS k odesílání oznámení push na můj telefon s ničím jiným než metodami HTTP Get

K vývoji kódu a flashování desky jsem použil efektní PlatformIO běžící na Visual Studio Code, obojí zdarma

Pro svůj projekt jsem použil tyto knihovny: u8g2 od Olivera, elapsedMillis od Paula Stoffregena a HTTPClient od Markuse Sattlera, který je dodáván s platformou Espressif ESP32. Všechno ostatní přichází s knihovnou Arduino nebo platformou ESP32 v PlatformIO

Nakonec jsem vytvořil šest jednoduchých bitmap mé hlavní kladky v různých úhlech, abych mohl na OLED za pultem ukázat úhlednou malou animaci točícího se kola. S kodérem se pohybuje příslušným směrem, i když pro dramatičtější efekt mnohem rychleji

Krok 4: Zapojení

Elektrické vedení
Elektrické vedení

Navrhl jsem to tak, aby zapojení bylo jednoduché, většinou aby můj kryt mohl být malý, ale také aby ladění bylo přímé. Všimněte si stísněných podmínek v mé malé krabičce.:)

Prvním požadavkem bylo napájecí napětí 5V mého rotačního kodéru. Z různých desek pro vývojáře ESP32, které jsem měl ve své skrýši, dodávalo jen několik skutečných 5V na kolíku Vcc při napájení z USB. (Ostatní měřili 4,5–4,8 V, což je v případě, že je vaše matematika špatná, nižší než 5 V.) Deska, kterou jsem použil, byla Wemos Lolin32.

Dále přicházejí dva signální kolíky rotačního kodéru. Protože používám přerušení, hlavní starostí je, aby piny, které používám, ničemu nepřekážely. Dokumenty ESP32 uvádějí, že ADC2 nelze používat současně s WiFi, takže to bohužel znamená, že nemohu použít žádný z pinů GPC ADC2: 0, 2, 4, 12, 13, 14, 15, 25, 26 nebo 27. Vybral jsem 16 a 17.

Pro tip: pokud se vám po sčítání toho všeho zdá, že váš kodér počítá zpět, můžete jednoduše zaměnit dvě přiřazení pinů v config.h.

Nakonec připojte zemnící vodič rotačního kodéru k … válci bubnu … uzemňovacímu kolíku.

Dále se tlačítko nulování/resetování připojí mezi zem a další volný kolík (vybral jsem GPIO 18).

Tlačítko, které jsem použil, byl malý momentální přepínač, který jsem zachránil z výše zmíněné počítačové myši, ale každé tlačítko, které budete mít kolem, bude stačit. Můžete ho vidět odpočívat v malém držáku, který jsem pro něj vyrobil, přímo nad deskou.

Konečně, OLED, pokud již není připojen k vaší desce, potřebuje pouze čtyři piny: 3V3, pozemní, i2c hodiny a i2c data. Na mé desce pro vývoj jsou hodiny a data 22, respektive 21.

Krok 5: Vytiskněte součásti

Vytiskněte si díly
Vytiskněte si díly

Pro tuto sestavu jsem navrhl sedm částí:

Řemenice, která se montuje přímo na hřídel rotačního kodéru

Volnoběžné kolo, které pasuje na ložisko 608ZZ (odstraňte podložky a odmastěte WD40, aby se točilo volně)

Držák, na který jsou namontovány dva kotouče a kodér - všimněte si spirálové pružiny pro napínací kladku

Konzola pro stabilizaci držáku. Fotografie v tomto kroku ukazuje, jak se držák připevňuje k držáku

Skříň (dole), do které se vejde moje deska pro vývojáře ESP32, s prostorem pro kabel USB na straně a dalším nahoře pro konektor, který jsem přidal do vodičů kodéru. Tenhle je navržen tak, aby pasoval na Wemos Lolin32, takže možná budete muset tento design trochu upravit, aby se vešel na jinou desku

Kryt (nahoře) pro uložení obrazovky OLED, další spirála pro tlačítko nulování / resetování

Držák knoflíků přizpůsobený pro malý spínač, který jsem měl, navržený tak, aby spočíval mezi dvěma policemi uvnitř spodního krytu. Páječkou jsem „přilepil“vypínač k držáku; viz předchozí krok pro fotografii

Vše je navrženo tak, aby bylo možné tisknout bez podpěr. Vše, co potřebujete, je normální PLA ve zvolené barvě.

Dejte to všechno dohromady, připojte se k tiskárně (zde může být vyžadována určitá kreativita) a můžete vyrazit.

Doporučuje: