Taula de continguts:

Comptador de filaments de la impressora 3D intel·ligent: 5 passos (amb imatges)
Comptador de filaments de la impressora 3D intel·ligent: 5 passos (amb imatges)

Vídeo: Comptador de filaments de la impressora 3D intel·ligent: 5 passos (amb imatges)

Vídeo: Comptador de filaments de la impressora 3D intel·ligent: 5 passos (amb imatges)
Vídeo: IMPRESORAS 3D: TODO lo que tienes que saber antes de comprar una 2024, De novembre
Anonim
Comptador de filaments de la impressora 3D intel·ligent
Comptador de filaments de la impressora 3D intel·ligent

Per què molestar-se a comptar els filaments? Alguns motius:

Les impressions amb èxit requereixen una extrusora calibrada correctament: quan el gcode indica a l’extrusora que mogui el filament 2 mm, ha de moure’s exactament 2 mm. Passen coses dolentes si s’extrudeix massa o s’extreu poc. Un comptador ben calibrat pot mantenir honest l’extrusora

Les talladores aproximen la quantitat de filament total que prendrà una determinada impressió (tant en longitud com en pes) i m'agradaria comprovar aquests valors

Mesurar el moviment del filament també em permet saber quan ha començat la impressió i quan s’ha aturat

Necessitava alguna cosa per cobrir l’espai que deixava l’eliminació del lletge gegant de la part frontal de la impressora

És genial

Em va inspirar aquest instructiu, que va reutilitzar un vell ratolí PS / 2 com a comptador de filaments per a una impressora 3D. No només va afegir una característica útil a una impressora 3D, sinó que va reutilitzar un dispositiu antic que d’altra manera hauria acabat en un abocador. Però aquest projecte es va construir al voltant de la interfície PS / 2 del ratolí, que semblava innecessàriament feixuga. Així que vaig aprofitar això per conèixer l’únic component essencial: el codificador rotatiu.

Subministraments

Codificador rotatiu

Taula de desenvolupament basada en ESP32

Pantalla OLED I2C (la unitat de dos colors es veu especialment genial)

Minúscul polsador momentani

Rodament 608ZZ desgreixat

Dues juntes tòriques de la ferreteria (~ 33 mm ID x ~ 1,5 mm diàmetre del perfil - veure comentaris)

Dos cargols autorroscants de 2,5 mm per al tancament

Dos cargols, femelles i arandeles de 4 mm per fixar el suport a la impressora

Un munt de cables

Impressora 3D i algun filament

Pas 1: trieu un codificador rotatiu

Trieu un codificador rotatiu
Trieu un codificador rotatiu
Trieu un codificador rotatiu
Trieu un codificador rotatiu

Els codificadors rotatius tradueixen el moviment de rotació en impulsos elèctrics. Tots els ratolins de la vella escola els feien servir per mesurar el moviment de la bola rodant i els ratolins òptics més moderns (ha ha) encara els feien servir per a la roda de desplaçament, que era el que tenia posat al voltant i que feia servir per a l’experimentació inicial. Malauradament, el meu no oferia cap punt de muntatge evident i la seva resolució era deficient.

Si val la pena fer-ho, val la pena fer-ho en excés. Així que vaig comprar un codificador gran, amigable i de 360 polsos per revolució i vaig construir el meu projecte al voltant d’ell. El que vaig triar va ser un codificador rotatiu òptic incremental Signswise, tipus LPD3806-360BM-G5-24C. Però qualsevol codificador decent ho farà.

Pas 2: afegiu una politja i un ralentí

Afegiu una politja i un ralentí
Afegiu una politja i un ralentí

El moviment lineal del filament es tradueix en moviment de rotació del codificador mitjançant una politja. I el filament és sostingut contra la politja per un ralentí.

La politja té dues ranures, cadascuna amb una junta tòrica estirada, de manera que no es pot relliscar, El ralentí té una ranura en V única per mantenir el filament centrat a la politja del codificador. S’assenta sobre un coixinet 608ZZ que tenia al voltant, i que està muntat en un ressort en espiral imprès just al cos principal del meu projecte. (Arxius STL adjunts a continuació.)

Això va suposar certes proves i errors, però el meu disseny hauria d’adaptar una gran varietat d’angles i radis de bobina, cosa que permetia que el filament es desenrotllés des de qualsevol part del carret, des del principi fins al final de la impressió. I la molla impresa facilita la introducció o sortida del filament quan es canvia de bobina.

Pas 3: Codificació

Image
Image

Per comptar només el filament, ho farà qualsevol placa de desenvolupament amb dues entrades digitals. El codificador que he escollit té quatre pins: Vcc, terra i dos pins del codificador. Aquí teniu una redacció molt agradable que explica com funcionen els codificadors rotatius i com s’interfacen amb Arduino. (També: aquest article sobre codificadors de 3 pins).

El recompte bàsic és senzill: dues entrades, configurades per arrossegar-se internament, de manera que no cal soldar resistències externes a Vcc, i una interrupció. També he afegit un botó de zero / reset, que requereix una entrada i una interrupció més:

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)) {posició + = 1; } else {posició - = 1; }} void IRAM_ATTR zeroButtonPressed () {// gestionar zero i restablir}

Però volia alguna cosa més que un comptador mut. Amb un ESP32 (o ESP8266) i el seu WiFi integrat, en realitat puc fer alguna cosa amb les dades que estic recopilant. Mitjançant un codi de temps d’espera senzill (que s’explica a continuació), puc determinar quan comença i acaba la impressió i enviar aquests esdeveniments com a notificacions al meu telèfon. En el futur, puc afegir un sensor d’esgotament i avisar-me (i posar en pausa la impressora) quan calgui la meva atenció.

El codi complet es troba a Github.

Algunes notes sobre el codi:

Per personalitzar-lo segons la vostra versió, només necessiteu la resolució (encoderPPR), en polsos per revolució, que normalment és el doble de l’especificació indicada, i el radi de la politja (wheelRadius). Aquests valors, més el ssid i la contrasenya del vostre wifi i els pins específics connectats al botó, al codificador i a la pantalla OLED, van a config.h

El botó zero també funciona com a restabliment; manteniu-lo premut per reiniciar el tauler, cosa que és útil per a la depuració

Les interrupcions són potents, de vegades massa potents. Un sol toc del botó zero podria fer que la funció zeroButtonPressed () es cridés de 10 a 20 vegades, de manera que he afegit una lògica de rebounce. El meu codificador òptic no el necessitava, però sí YMMV

Tot i que les interrupcions tenen cura de les entrades de manera asíncrona, la rutina loop () gestiona la comptabilitat. L'encoderState, un enum que pot alimentar-se, retractar-se o aturar-se, s'actualitza amb el canvi de posició del codificador. Els temps d'espera determinen llavors quan la impressora ha començat i ha finalitzat la impressió. Però el més complicat és que les impressores 3D freqüentment comencen i detenen el moviment, de manera que el que va funcionar millor va ser definir l'esdeveniment "imprimir completament" que romangui aturat contínuament durant almenys 5 segons. Qualsevol moviment provoca un segon temporitzador que defineix l'esdeveniment "impressió iniciada" només si no es produeix cap esdeveniment "impressió completa" en un període de 15 segons. A la pràctica, això funciona de forma nedant

Per tant, el codi de bucle principal () pot funcionar sense compromís, el codi de rebounce s’executa en un bucle de tasques RTOS. De la mateixa manera, les sol·licituds http per enviar notificacions són sincròniques i, per tant, són de fons. Així, les animacions funcionen sense problemes i el recompte no s’atura mai

Hi ha un munt de codi addicional al meu exemple per (A) establir i mantenir una connexió de xarxa amb WiFi i mDNS, (B) obtenir l’hora d’un servidor NTC per poder marcar les meves notificacions d’inici i finalització i mostrar un rellotge impecable. al meu OLED i (C) gestionar les actualitzacions OTA, de manera que no haig de connectar físicament la meva placa al Mac per obtenir actualitzacions de codi. De moment, tot està en un fitxer C ++ monolític, només perquè no m’he dedicat el temps a organitzar-lo millor

He utilitzat la meravellosa (i gratuïta) aplicació Prowl per a iOS per enviar notificacions push al meu telèfon amb res més que mètodes HTTP Get

Per desenvolupar el codi i fer flaixar la placa, he utilitzat l’espectacular PlatformIO que s’executa en Visual Studio Code, tots dos gratuïts

Per al meu projecte, he utilitzat aquestes biblioteques: u8g2 d'Oliver, elapsedMillis de Paul Stoffregen i HTTPClient de Markus Sattler, que inclou la plataforma Espressif ESP32. Tota la resta inclou la biblioteca Arduino o la plataforma ESP32 de PlatformIO

Finalment, vaig crear sis mapes de bits senzills de la meva politja principal amb diferents angles, de manera que podia mostrar una animada petita neteja a l’OLED darrere del taulell. Es mou en la direcció adequada amb el codificador, encara que molt més ràpid per obtenir un efecte més dramàtic

Pas 4: cablejat

Cablejat
Cablejat

He dissenyat això perquè el cablejat sigui senzill, sobretot perquè el meu recinte pugui ser petit, però també la depuració seria directa. Tingueu en compte les condicions estretes de la meva capsa.:)

El primer requisit era la tensió d’alimentació de 5V del meu codificador rotatiu. De les diverses taules de programació ESP32 que tenia a la meva reserva, només unes poques van proporcionar 5V veritables al pin Vcc quan s’alimentaven mitjançant USB. (Els altres mesuraven 4,5-4,8V, que, en cas que les vostres matemàtiques siguin dolentes, siguin inferiors a 5V). El tauler que he utilitzat era un Wemos Lolin32.

A continuació, vénen els dos pins de senyal del codificador rotatiu. Com que faig servir interrupcions, la principal preocupació és que els pins que faig servir no interfereixen en res. Els documents ESP32 indiquen que ADC2 no es pot utilitzar al mateix temps que el WiFi, de manera que malauradament significa que no puc utilitzar cap dels pins ADC2 GPIO: 0, 2, 4, 12, 13, 14, 15, 25, 26, o 27. Vaig triar 16 i 17.

Consell professional: si, després de reunir tot això, sembla que el vostre codificador compta cap enrere, només podeu canviar les assignacions de dos pins a config.h.

Finalment, connecteu el cable de terra del codificador rotatiu a … rotllo de tambor … al passador de terra.

A continuació, el botó de zero / reset es connecta entre terra i un altre pin lliure (he triat GPIO 18).

El botó que vaig fer servir era un petit interruptor momentani que vaig rescatar del ratolí de l’ordinador esmentat, però qualsevol botó que tingueu al voltant sí. Es pot veure descansant en una petita muntura que he fet per sobre del tauler.

Finalment, l'OLED, si encara no està connectat a la vostra placa, només necessita quatre pins: 3V3, terra, rellotge i2c i dades i2c. Al meu tauler de desenvolupament, el rellotge i les dades són 22 i 21, respectivament.

Pas 5: imprimiu les parts

Imprimiu les parts
Imprimiu les parts

He dissenyat set parts per a aquesta versió:

La politja, que es munta directament a l’eix del codificador rotatiu

El ralentí, que s’adapta a un coixinet de 608ZZ (traieu els llisos i desgreixeu amb WD40 perquè giri lliurement)

El suport, sobre el qual es munten els dos weels i el codificador, fixeu-vos en la molla helicoïdal del rodet

Un suport per estabilitzar el suport. La foto d’aquest pas mostra com es fixa el suport al suport

El recinte (inferior) per contenir la meva placa de desenvolupament ESP32, amb un espai per al cable USB al lateral i un altre a la part superior per al connector que he afegit als cables del meu codificador. Aquest està dissenyat per adaptar-se al Wemos Lolin32, de manera que és possible que hàgiu de modificar una mica aquest disseny per adaptar-lo a una altra placa

El recinte (superior) per mantenir la pantalla OLED, una altra espiral per al botó de zero / reset

Un porta-botons personalitzat per al petit interruptor que tenia, dissenyat per descansar entre els dos prestatges de l’interior del recinte inferior. Vaig utilitzar un soldador per "enganxar" l'interruptor al suport; consulteu el pas previ per obtenir una foto

Tot està dissenyat per imprimir-se sense suports. Tot el que necessiteu és un PLA normal en el vostre color.

Poseu-ho tot, connecteu-lo a la impressora (pot ser que calgui una mica de creativitat aquí) i ja ho podeu fer.

Recomanat: