Tartalomjegyzék:

Intelligens 3D nyomtatószál számláló: 5 lépés (képekkel)
Intelligens 3D nyomtatószál számláló: 5 lépés (képekkel)

Videó: Intelligens 3D nyomtatószál számláló: 5 lépés (képekkel)

Videó: Intelligens 3D nyomtatószál számláló: 5 lépés (képekkel)
Videó: Сравнение: Самые Умные Животные 2024, Június
Anonim
Intelligens 3D nyomtatószál számláló
Intelligens 3D nyomtatószál számláló

Miért kell számolni az izzószállal? Néhány ok:

A sikeres nyomtatáshoz megfelelően kalibrált extruderre van szükség: amikor a gcode azt mondja az extrudernek, hogy mozgassa az izzószálat 2 mm-rel, akkor pontosan 2 mm-t kell mozognia. Rossz dolgok történnek, ha túl- vagy alul-extrudálnak. Egy jól kalibrált számláló becsületessé teheti az extrudert

A szeletelők hozzávetőlegesen hozzávetőlegesen mennyit vesznek el egy adott nyomatból (hosszban és súlyban egyaránt), és szeretném ellenőrizni ezeket az értékeket

Az izzószál mozgásának mérése is tudassa velem, mikor kezdődött a nyomtatás, és mikor állt le

Szükségem volt valamire, hogy lefedje azt a helyet, amelyet a nyomtató elején lévő csúnya óriás logó eltávolítása hagyott

Ez jó

Engem ez az oktatóanyag inspirált, amely egy régi PS/2 egeret reprezentált egy 3D nyomtató szálainak számlálójaként. Ez nemcsak hasznos funkciót adott hozzá a 3D nyomtatóhoz, hanem egy régi eszközt is újrahasznosított, amely egyébként hulladéklerakóba került volna. De ez a projekt az egér PS/2 interfésze köré épült, ami szükségtelenül nehézkesnek tűnt. Úgyhogy ezt a lehetőséget ragadtam meg, hogy megismerjem az egyetlen lényeges összetevőt: a forgó kódolót.

Kellékek

Forgó kódoló

ESP32 alapú fejlesztőtábla

I2C OLED kijelző (a kétszínű egység különösen jól néz ki)

Apró pillanatnyi nyomógomb

Zsírtalanított 608ZZ csapágy

Két O -gyűrű a hardverboltból (~ 33 mm azonosító x ~ 1,5 mm profilátmérő - lásd a megjegyzéseket)

Két 2,5 mm-es önmetsző csavar a házhoz

Két 4 mm -es csavar, anya és alátét a tartó rögzítéséhez a nyomtatóhoz

Egy csomó vezeték

3D nyomtató és néhány szál

1. lépés: Válasszon forgó kódolót

Válasszon forgó kódolót
Válasszon forgó kódolót
Válasszon forgó kódolót
Válasszon forgó kódolót

A forgó jeladók a forgó mozgást elektromos impulzusokká alakítják. Valamennyi régi iskolai egerek a gördülő golyó mozgásának mérésére használta őket, a korszerűbb (ha ha) optikai egerek pedig továbbra is a görgetőkerékhez használták, amit én helyeztem el és használtam a kezdeti kísérletekhez. Sajnos az enyém nem nyújtott nyilvánvaló rögzítési pontokat, és a felbontása gyenge volt.

Ha érdemes csinálni, akkor érdemes túlcsinálni. Tehát vettem egy nagy, barátságos, 360 impulzusenkénti fordulatszám-kódolót, és köré építettem a projektemet. Az általam választott LPD3806-360BM-G5-24C típusú Signswise növekményes optikai forgó kódoló volt. De minden tisztességes kódoló megteszi.

2. lépés: Adjon hozzá egy szíjtárcsát és alaplapátot

Adjon hozzá szíjtárcsát és üresjáratot
Adjon hozzá szíjtárcsát és üresjáratot

Az izzószál lineáris mozgását a szíjtárcsa forgómozgássá alakítja át. Az izzószálat pedig egy üresjárat tartja a szíjtárcsa ellen.

A szíjtárcsa két horonnyal rendelkezik, amelyek mindegyike kifeszített O-gyűrűt tart, így nincs csúszás, Az üresjárat egyetlen v-horonnyal rendelkezik, hogy az izzószálat az enkóder-tárcsa közepén tartsa. Egy 608ZZ -es csapágyon ül, amelyet körbefektettem, és egy spirálrugóra van felszerelve, amely közvetlenül a projektem törzsébe van nyomtatva. (STL fájlok alább csatolva.)

Ez némi próbálkozást és hibát igényelt, hogy helyes legyen, de a tervezésemnek számos szöget és orsó sugarat kell alkalmaznia, lehetővé téve, hogy az izzószál letekeredjen az orsó bármely részéről, egészen a nyomtatás elejétől a végéig. A nyomtatott rugó pedig megkönnyíti az izzószál be- vagy kihajtását orsócsere során.

3. lépés: Kódolás

Image
Image

Az izzószálak számlálásához bármelyik két digitális bemenettel rendelkező fejlesztői kártya megfelel. Az általam választott kódolónak négy csapja van: Vcc, földelt és két kódolócsap. Íme egy nagyon szép írás, amely elmagyarázza a forgó kódolók működését és az Arduino-val való illesztést. (Továbbá: ez a cikk a 3 tűs kódolókról.)

Az alapvető számlálás egyszerű: két bemenet - belsőleg felhúzva, így a külső ellenállásokat nem kell Vcc -hez forrasztani - és egy megszakítás. Hozzáadtam egy nulla/reset gombot is, amely további bemenetet és megszakítást igényel:

void 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)) {pozíció += 1; } else {pozíció -= 1; }} void IRAM_ATTR zeroButtonPressed () {// nulla kezelése és visszaállítás}

De többet akartam, mint egy buta számlálót. Az ESP32 (vagy ESP8266) és a beépített WiFi segítségével valóban tudok valamit kezdeni az általam gyűjtött adatokkal. Néhány egyszerű időtúllépési kód használatával (az alábbiakban ismertetjük) meg tudom határozni, hogy mikor kezdődik és mikor fejeződik be a nyomtatás, és értesítésként elküldhetem ezeket az eseményeket a telefonomra. A jövőben hozzáadhatok egy kifogyás-érzékelőt, és értesíthetem magam (és szüneteltethetem a nyomtatót), ha szükség van a figyelmemre.

A teljes kód a Githubon található.

Néhány megjegyzés a kódról:

Ahhoz, hogy ezt testre szabhassa, csak a felbontásra (encoderPPR) van szükség - impulzusonként fordulatonként, ami jellemzően kétszerese a megadott specifikációnak - és a szíjtárcsa sugarára (wheelRadius). Ezek az értékek, valamint a wifi SSID -je és jelszava, valamint a gombhoz, kódolóhoz és OLED -képernyőhöz csatlakoztatott speciális érintkezők mind a config.h

A nulla gomb visszaállításként is szolgál - tartsa lenyomva a tábla újraindításához, ami hasznos a hibakereséshez

A megszakítások erősek - néha túl erősek. A nulla gomb egyetlen érintése miatt a zeroButtonPressed () függvény 10-20 alkalommal hívható meg, ezért hozzáadtam némi visszalépési logikát. Az optikai kódolómnak nem kellett, de az YMMV -nek

Míg a megszakítók aszinkron módon gondoskodnak a bemenetekről, a loop () rutin kezeli a könyvelést. Az encoderState - egy enum, amely táplálható, visszahúzható vagy leállítható - frissül a kódoló helyzetének változásával. Az időtúllépések meghatározzák, hogy a nyomtató mikor kezdte el és fejezte be a nyomtatást. A trükkös rész azonban az, hogy a 3D nyomtatók gyakran elindítják és leállítják a mozgást, így a legjobban az volt a meghatározva, hogy a "nyomtatás kész" esemény legalább 5 másodpercig folyamatosan leáll. Bármilyen mozgás elindít egy második időzítőt, amely csak akkor határozza meg a "nyomtatás megkezdése" eseményt, ha 15 másodpercen belül nem történik "nyomtatás kész" esemény. A gyakorlatban ez úszósan működik

Tehát a fő hurok () kód tehermentesen futhat, a visszakapcsolási kód pedig RTOS feladatkörben. Hasonlóképpen, az értesítések küldésére vonatkozó http -kérések szinkronban vannak, és ezért háttérrel rendelkeznek. Így az animációk zökkenőmentesen futnak, és a számlálás soha nem áll le

Példámban van egy csomó további kód, amellyel (A) hálózati kapcsolatot létesíthet és tarthat fenn WiFi-vel és mDNS-sel, (B) lekérheti az időt egy NTC-szerverről, így időbélyegzővel láthatom el a kezdő és a végső értesítéseket, és megjeleníthetem az óvatlan órát az OLED -en, és (C) kezeli az OTA frissítéseket, így nem kell fizikailag csatlakoztatnom a lapomat a Mac -hez a kódfrissítésekhez. Jelenleg minden egy monolitikus C ++ fájlban van, csak azért, mert nem szántam rá az időt a jobb megszervezésére

A csodálatos (és ingyenes) Prowl iOS alkalmazást használva küldtem push értesítéseket a telefonomra, csak HTTP Get módszerekkel

A kód kifejlesztéséhez és a tábla villogásához a látványos, Visual Studio Code -on futó PlatformIO -t használtam, mindkettőt ingyen

A projektemhez ezeket a könyvtárakat használtam: Oliver u8g2, Paulstoffregen elapsedMillis és Markus Sattler HTTPClient, amely az Espressif ESP32 platformhoz tartozik. Minden más az Arduino könyvtárhoz vagy a PlatformIO ESP32 platformjához tartozik

Végül elkészítettem hat egyszerű bitképet a főtárcsámról különböző szögekből, így mutathattam egy ügyes kis forgó kerék animációt a pult mögötti OLED -en. A kódolóval a megfelelő irányba mozog, bár sokkal gyorsabb a drámaibb hatás érdekében

4. lépés: huzalozás

Vezeték
Vezeték

Ezt úgy terveztem, hogy a kábelezés hirtelen egyszerű legyen, főleg így a házam kicsi lehet, de a hibakeresés is egyenes. Jegyezze meg a szűk körülményeket a kis dobozomban.:)

Az első követelmény a forgó kódolóm 5 V -os tápfeszültsége volt. A különböző ESP32 fejlesztői táblák közül, amelyek a tárolómban voltak, csak néhány szállított valódi 5 V -os feszültséget a Vcc tűn, ha USB -ről táplálják. (A többiek 4,5-4,8 V-ot mértek, ami rossz matek esetén alacsonyabb, mint 5 V.) Az általam használt tábla Wemos Lolin32 volt.

Ezután jöjjön a két forgó jeladó jelzőcsapja. Mivel megszakításokat használok, a fő gond az, hogy az általam használt csapok ne zavarjanak semmit. Az ESP32 dokumentumok szerint az ADC2 nem használható a WiFi -vel egyidejűleg, így sajnos azt jelenti, hogy nem használhatom az ADC2 GPIO csapokat: 0, 2, 4, 12, 13, 14, 15, 25, 26, vagy 27. A 16 -ot és a 17 -et választottam.

Profi tipp: ha mindezek összeszedése után úgy tűnik, hogy a kódoló visszafelé számol, akkor egyszerűen kicserélheti a két tű hozzárendelést a config.h -ban.

Végül csatlakoztassa a forgó jeladó földelő vezetékét a… dobhengerhez… a földelőcsaphoz.

Ezután a nulla/reset nyomógomb csatlakozik a föld és egy másik szabad tű közé (a GPIO 18 -at választottam).

A gomb, amelyet használtam, egy apró pillanatkapcsoló volt, amelyet a fent említett számítógépes egérből mentettem ki, de minden gomb, amely körül van, megteszi. Láthatod, hogy pihen egy kis tartóban, amelyet közvetlenül a tábla felett készítettem.

Végül az OLED -hez, ha még nincs csatlakoztatva az alaplaphoz, mindössze négy érintkezőre van szükség: 3V3, föld, i2c óra és i2c adatok. A fejlesztői táblán az óra és az adatok 22, illetve 21.

5. lépés: Nyomtassa ki az alkatrészeket

Nyomtassa ki az alkatrészeket
Nyomtassa ki az alkatrészeket

Hét alkatrészt terveztem ehhez a konstrukcióhoz:

A szíjtárcsa, amely közvetlenül a forgó jeladó tengelyére szerelhető

Az alapjárat, amely 608ZZ csapágy fölé illeszkedik (távolítsa el a lemezeket és zsírtalanítsa WD40 -el, hogy szabadon forogjon)

A tartó, amelyre a két heveder és az enkóder rögzíthető - jegyezze meg az alapjárat spirálrugóját

Konzol a tartó stabilizálásához. Ebben a lépésben a fénykép azt mutatja, hogyan rögzül a tartó a tartóhoz

A ház (alul) az ESP32 fejlesztőkártyám tartásához, az USB -kábel helyével az oldalán, a másikkal pedig a csatlakozóhoz, amelyet hozzáadtam a kódoló vezetékeimhez. Ezt úgy tervezték, hogy illeszkedjen a Wemos Lolin32 -hez, ezért előfordulhat, hogy kissé módosítania kell ezt a kialakítást, hogy illeszkedjen egy másik táblához

A ház (felül) az OLED képernyő tartásához, egy másik spirál a nulla / visszaállítás gombhoz

Egy gombtartó, amelyet a nálam lévő apró kapcsolóhoz szabtak, és amelyet úgy terveztek, hogy az alsó házban lévő két polc között pihenjen. Forrasztópáka segítségével "ragasztottam" a kapcsolót a tartóhoz; lásd a fénykép előző lépését

Mindent úgy terveztek, hogy alátámasztás nélkül nyomtasson. A normál PLA a választott színben minden, amire szüksége van.

Tegye össze az egészet, csatlakoztassa a nyomtatóhoz (itt némi kreativitás szükséges), és már indulhat is.

Ajánlott: