Filamentos secos enquanto imprime! Caixa para filamentos feito com Arduino – FILABOX
Hoje é dia de construir um projeto muito massa e extremamente útil para impressoras 3D!
Filamentos pra impressoras 3D como o PLA, ABS e Nylon são materiais higroscópicos, ou seja, eles absorvem umidade quando não são armazenados da forma correta. Até mesmo algumas horas de exposição já são suficientes para que a umidade absorvida interfira MUITO na qualidade das suas impressões, gerando peças com buracos e com isso elas ficam frágeis, além de aumentar muito o stringing, que são aqueles fiapinhos chatos que ficam nas suas impressões 3D.
Inclusive quando um filamento está úmido da pra ver o vapor de água saindo do bico da impressora, e até dá pra escutar o barulho das bolhas de vapor de água que acabam fazendo os buracos nas peças que comentei anteriormente.
O pior momento de exposição do filamento é durante as impressões, que podem levar horas e até dias.
No caso da minha impressora 3D, assim como a gigantesca maioria das outras do mercado, o filamento fica exposto ao ar úmido durante todo o tempo de impressão, e pra resolver esse problema vamos construir a FILABOX, uma caixa que eu projetei pra abrigar os filamentos durante a impressão, mantendo a umidade controlada com Arduino!
A seguir temos a lista de materiais necessários:
- 1 – Pote de sua preferencia com boa vedação para abrigar o filamento e o desumidificador;
- 1 – Conexão Reta Pneumática Macho NPT 1/8 com saída do tubo de diâmetro 4mm;
- 1 – Tubo PU diâmetro 4mm para saída do filamento de tamanho da sua preferência;
- 1 – Desumidificador da sua preferência;
- 1 – Arduino NANO 16MHz;
- 1 – Display OLED 128×64 0.96 Inches I2C;
- 1 – Sensor DHT11/22 (alterar o sensor na programação);
- 1 – Conector elétrico macho e fêmea de 2 vias;
- 3 – Metros de fio elétrico 0.5mm²;
- 1 – Motor de HD retirado de sucata (dependendo do modelo do motor seja necessário alterações desenho 3D);
- 1 – Peças impressão em 3D disponíveis logo abaixo;
Lista de parafusos:
Para fixar a base do carretel:
- 4 – Parafusos rosca máquina Diâmetro M4 X Comprimento 14mm com 4 porcas e 4 ruelas.
Para fixar o Motor de HD na Base:
- 1 – Parafuso do próprio motor de HD que prendia o disco.
Para fixar o suporte carretel no motor de HD:
- 3 – Parafusos rosca soberba Diâmetro 2mm X Comprimento 13mm.
Para travar o cone do carretel:
- 1 – Parafuso rosca máquina Diâmetro M4.5 ou 4.5mm X Comprimento 25mm com 1 porca simples e 1 porca borboleta.
Para fixar a caixa do display:
- 2 – Parafusos rosca máquina Diâmetro M3 X Comprimento 16mm com 2 porcas e 2 ruelas.
Para suporte da caixa:
- 3 – Parafusos rosca soberba Diâmetro M3 X Comprimento 20mm.
Desenhos 3D
Clicando aqui você pode baixar os arquivos .STL do case e imprimir na sua impressora 3D.
Aqui o circuito eletrônico:
O código a ser carregado:
Abaixo segue a programação utilizada. Para carregar o código no Arduino você terá que adicionar algumas bibliotecas na IDE do Arduino e essas bibliotecas estão disponíveis aqui em baixo para download.
Biblioteca Adafruit_SSD1306;
Biblioteca Adafruit GFX;
Biblioteca DHT11.
Talvez seja necessário selecionar na IDE do Arduino o Arduino a opção Atmega328P (Old bootloader) para você conseguir carregar o código no seu Arduino NANO.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
/********************************************* Autor: Marlon Nardi Walendorff Projeto: Filamentos secos enquanto imprime! Caixa para filamentos feito com Arduino – FILABOX Detalhes do projeto: https://marlonnardi.com/2022/06/21/filamentos-secos-enquanto-imprime-caixa-para-filamentos-feito-com-arduino-filabox/ /**********************************************/ #include <Adafruit_SSD1306.h> //Inclui a biblioteca para o Display OLED 128x64 0.96 Inch #include <DHT.h> //Inclui a bilbioteca DHT //==================== Mapeamento de Hadware =================// #define DHTPIN 2 //Define o pino do DHT no Arduino #define DHTTYPE DHT22 //Define modelo do DHT //==================== Instânciando Objetos =================// DHT dht (DHTPIN, DHTTYPE);// Cria o obejto dht para a Classe DHT Adafruit_SSD1306 Display; //===================== Variáveis Globais ==================// const unsigned char imgMestresdoArduino [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xe0, 0xe0, 0x1f, 0x07, 0x80, 0x30, 0x3f, 0x00, 0x78, 0x3f, 0xfc, 0x0f, 0xfc, 0x3f, 0xff, 0x81, 0xc0, 0x40, 0x0c, 0x03, 0x00, 0x00, 0x06, 0x00, 0x60, 0x0f, 0xf8, 0x01, 0xf0, 0x0f, 0xff, 0x81, 0xc0, 0xc0, 0x18, 0x01, 0x00, 0x00, 0x06, 0x00, 0x40, 0x0f, 0xf8, 0x00, 0xe0, 0x07, 0xff, 0x81, 0x80, 0x80, 0x10, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40, 0x0f, 0xf8, 0x00, 0xc0, 0x07, 0xff, 0x81, 0x80, 0x83, 0xf0, 0xe1, 0xe1, 0xe1, 0x82, 0x1f, 0x83, 0x07, 0xf8, 0x20, 0xc3, 0x87, 0xff, 0x01, 0x80, 0x87, 0xf0, 0xe1, 0xe1, 0xe1, 0x80, 0x1f, 0x83, 0x0f, 0xf8, 0x70, 0x83, 0x87, 0xff, 0x00, 0x00, 0x80, 0x30, 0x03, 0xc1, 0xc1, 0x84, 0x01, 0x80, 0x0f, 0xf8, 0x70, 0x87, 0x87, 0xff, 0x00, 0x01, 0x80, 0x30, 0x07, 0xc1, 0xc0, 0x04, 0x01, 0x80, 0x3f, 0xf8, 0x70, 0x87, 0x87, 0xff, 0x00, 0x01, 0x80, 0x30, 0x03, 0xc3, 0xc0, 0x04, 0x01, 0xc0, 0x1f, 0xf0, 0x70, 0x87, 0x87, 0xff, 0x00, 0x01, 0x00, 0x7c, 0x03, 0xc3, 0xc0, 0x0c, 0x01, 0xe0, 0x0f, 0xf0, 0xf0, 0x87, 0x07, 0xff, 0x00, 0x01, 0x0f, 0xe1, 0x83, 0xc3, 0xc0, 0x18, 0x3f, 0x0e, 0x0f, 0xf0, 0xe0, 0x07, 0x0f, 0xfe, 0x00, 0x01, 0x0f, 0xe1, 0xc3, 0x83, 0x80, 0x18, 0x3f, 0x0e, 0x0f, 0xf0, 0xc1, 0x07, 0x0f, 0xfe, 0x10, 0x01, 0x00, 0x20, 0x03, 0x83, 0x82, 0x18, 0x01, 0x00, 0x1f, 0xf0, 0x01, 0x80, 0x0f, 0xfe, 0x10, 0x01, 0x00, 0x20, 0x07, 0x87, 0x82, 0x18, 0x01, 0x00, 0x1f, 0xe0, 0x03, 0x80, 0x1f, 0xfe, 0x10, 0x41, 0x00, 0x20, 0x07, 0x87, 0x86, 0x18, 0x01, 0x80, 0x3f, 0xe0, 0x07, 0x80, 0x3f, 0xfe, 0x18, 0x43, 0x00, 0x78, 0x1f, 0x87, 0x86, 0x18, 0x01, 0xc0, 0xff, 0xe0, 0x1f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7c, 0x0f, 0x81, 0xfc, 0x78, 0xc3, 0x0f, 0x1f, 0x07, 0xff, 0x00, 0xff, 0xc0, 0x7f, 0xff, 0xe0, 0x78, 0x03, 0x80, 0x38, 0x78, 0x42, 0x0e, 0x1c, 0x03, 0xfe, 0x00, 0x3f, 0x00, 0x1f, 0xff, 0xe0, 0x78, 0x01, 0x80, 0x18, 0x70, 0xc2, 0x0e, 0x18, 0x01, 0xfc, 0x00, 0x1e, 0x00, 0x0f, 0xff, 0xc0, 0x78, 0x01, 0x00, 0x18, 0x70, 0x82, 0x06, 0x10, 0x01, 0xf8, 0x3c, 0x0c, 0x1f, 0x07, 0xff, 0xc0, 0x70, 0x61, 0x0c, 0x18, 0x70, 0x82, 0x04, 0x10, 0xe1, 0xf0, 0xff, 0x00, 0x3f, 0x87, 0xff, 0x80, 0x70, 0xe1, 0x0e, 0x18, 0x70, 0x86, 0x00, 0x10, 0xe1, 0xf1, 0xff, 0x80, 0x7b, 0xc3, 0xff, 0x80, 0x30, 0xc1, 0x0e, 0x10, 0xf0, 0x84, 0x00, 0x21, 0xe1, 0xf1, 0xff, 0xc0, 0xf1, 0xe3, 0xff, 0x80, 0x30, 0x01, 0x0e, 0x10, 0xf1, 0x84, 0x00, 0x21, 0xe1, 0xe1, 0x81, 0xc1, 0xe0, 0xe3, 0xff, 0x08, 0x30, 0x03, 0x0e, 0x10, 0xe1, 0x84, 0x00, 0x21, 0xe1, 0xe1, 0xc1, 0xc1, 0xe1, 0xe3, 0xff, 0x00, 0x20, 0x06, 0x1e, 0x10, 0xe1, 0x84, 0x00, 0x21, 0xc1, 0xf1, 0xff, 0xc0, 0xf3, 0xe3, 0xfe, 0x00, 0x20, 0x0e, 0x1c, 0x10, 0xe1, 0x8c, 0x20, 0x01, 0xc1, 0xf1, 0xff, 0x80, 0xff, 0xc3, 0xfe, 0x00, 0x21, 0x0e, 0x18, 0x10, 0xc1, 0x08, 0x20, 0x41, 0xc3, 0xf0, 0xff, 0x00, 0x7f, 0xc3, 0xfc, 0x00, 0x21, 0x06, 0x00, 0x30, 0x01, 0x08, 0x20, 0x60, 0x03, 0xf8, 0x7e, 0x0c, 0x1f, 0x07, 0xfc, 0x18, 0x21, 0x86, 0x00, 0x70, 0x03, 0x08, 0x70, 0x60, 0x07, 0xf8, 0x00, 0x1e, 0x00, 0x0f, 0xfc, 0x38, 0x01, 0x84, 0x00, 0xf0, 0x07, 0x08, 0x70, 0x70, 0x0f, 0xfc, 0x00, 0x3f, 0x00, 0x1f, 0xfc, 0x3c, 0x23, 0x84, 0x03, 0xf8, 0x0f, 0x18, 0x70, 0x78, 0x1f, 0xff, 0x00, 0x7f, 0x80, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xdc, 0xee, 0x31, 0xf5, 0xef, 0x3c, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0x98, 0x4e, 0x31, 0xf1, 0xcf, 0x18, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x98, 0xdc, 0xb1, 0xf1, 0x8e, 0x18, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x18, 0xc4, 0x21, 0xe1, 0x8e, 0x38, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x5e, 0xce, 0x73, 0xeb, 0xae, 0xb9, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; //Vetor para armazenar os dias da semana char daysOfTheWeek[7][12] = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"}; //==================== void setup =================// void setup() { pinMode(3, OUTPUT); Serial.begin(9600); dht.begin(); //Inicializa o OLED 128X64 0.96 INCH com endereço I2C 0x3C Display.begin(SSD1306_SWITCHCAPVCC, 0x3C); Display.setTextColor(WHITE); Display.setTextSize(1); //Limpa o display Display.clearDisplay(); //Atualiza o display Display.display(); //Mostra a imagem no Display Display.drawBitmap(0, 0, imgMestresdoArduino, 128, 64, WHITE); //Atualiza o display Display.display(); delay(2000); Display.clearDisplay(); Display.display(); delay(100); //Tempo para salvar novo horário RTC }//endSetup //==================== void loop =================// void loop() { verifyCommunication(); screenOne(); delay(1000); }//endLoop //==================== void verifyCommunication =================// void verifyCommunication() { //Checa a comunicação com o DTH22 while (isnan( dht.readTemperature() ) || isnan( dht.readHumidity() )) { //Mensagens Serial.println("Falha: DHT22"); Display.setTextSize(1);//Seleciona o tamanho do texto Display.setTextColor(WHITE);//Seleciona a cor do texto BLACK ou WHITE Display.clearDisplay(); Display.setCursor(0, 0); Display.print("Falha: DHT22"); Display.display(); }//endWhile }//endVerifyCommunication //==================== void screenOne =================// void screenOne() { Display.clearDisplay();//Limpa o display //====== Retângulos - void screenOne ===========// //Retângulos // X Y Comprimento Altura Cor Display.drawRect(0, 0, 128, 35, WHITE); // X Y Comprimento Altura Cor Display.drawRect(0, 37, 65, 27, WHITE); // X Y Comprimento Altura Cor Display.drawRect(68, 37, 60, 27, WHITE); //====== FILABOX ===========// //Printa a temperatura no Display Display.setTextSize(3); Display.setCursor(2 , 10); Display.print("FILABOX"); //====== Temperatura - void screenOne ===========// //Printa a temperatura no Display Display.setTextSize(3); Display.setCursor(7 , 41); Display.print(dht.readTemperature(), 0); //======= Circulo e C - void screenOne =========// //Circulo // X Y Raio Cor Display.drawCircle(45, 41, 2, WHITE); Display.setCursor(48 , 41); Display.print("C"); //========= Umidade- void screenOne ===========// //Printa a umidade no Display Display.setCursor(72 , 41); Display.print(dht.readHumidity(), 0); //========= Porcentagem- void screenOne ===========// Display.setCursor(110 , 41); Display.print("%"); Display.display(); }//endScreenOne |