Marlin Firmware configurado para Ender 3 + Nivelamento tipo malha
Esta é a versão 1.1.9 do Marlin Firmware pré-configurada para a Creality Ender 3. Esta versão consiste do firmware original combinado com configurações específicas para ampliar a funcionalidade da Ender 3. A principal melhoria é o Mesh Bed Leveling que compensa mesas deformadas (praticamente todas elas).
Existem três opções de instalação, as duas primeiras envolvem compilar o código (simples, demora menos de 5 minutos) e a última consiste na gravação direta do executável na placa. Esta última não requer nenhum contato com o código fonte, basta executar o comando para gravar e está tudo resolvido.
Este firmware foi concebido para placas de 8-bits e não funcionará em placas de 32-bits. Para SKR Mini E3 v2.0 consultar este artigo.
Características e melhorias
- Marlin original + bugfix com todas as configurações oficiais da Creality (April 2020).
- Três opções para a instalação.
- Proteção para falha dos termômetros ativada (evita incêndios).
- Nivelamento manual tipo malha ativado (mesh bed leveling).
- Possibilidade de executar o nivelamento através do menu do LCD.
- Não perde as informações de nivelamento após o comando G28.
- Menu customizado com sequências para aquecimento e nivelamento.
- Malha bilinear com 25 pontos ultra-precisa
- Menus leves para o LCD (ocupam menos memória)
- Baby steps ativado e configurado para os "número mágicos" (ângulos completos do motor de passo)
- Sistema de comandos de emergência ativado
- Função de estacionamento da cabeça de impressão ativada
- Pausa avançada ativada (funções para mudança de filamento)
- Interrupções para chave de fim de curso ativadas (poupa o processador)
- Todas as alterações no código fonte estão identificadas com o comentário "//Customized DBP"
Requisitos
- Bootloader instalado na placa
- Arduino IDE para a opção 1
- Visual Studio Code para a opção 2
- AVRDude para a opção 3 se estiver utilizando Linux ou MacOS (AVRDude para Windows faz parte dos downloads)
Instruções usando o Arduino IDE (opção 1 - dificuldade média)
- Instalar o Arduino IDE
- Fechar qualquer programa que possa acessar a impressora via USB (Cura, Serial Monitor, OctoPrint, etc...).
- Executar o Arduino IDE e configurar para baixar a placa Sanguino. Adicionar a seguinte URL ao gerenciador de placas (File->Preferences->Additional boards manager):
https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json
- Instalar as seguintes bibliotecas no Arduino:
- U8Glib
- Sanguino
- Após instalar todos os ítens acima, descompactar o arquivo ZIP para uma pasta e abrir o "Marlin.ino" no Arduino IDE.
- Desabilitar a função de interrupção para chave de fim de curso adicionando (//) na seguinte linha do configuration.h. Essa função deve ser desabilitada pois não é compatível com o Arduino IDE.
//#define ENDSTOP_INTERRUPTS_FEATURE
- Compilar e carregar o Firmware na placa. Antes disso, certifique-se de utilizar as seguintes configurações
- Configuração de placa: ATMega 1284P 16Mhz
- Configuração do programador: AVRISP MKII
- Porta COM: Depende do seu computador, geralmente só existe uma disponível com a impressora conectada. Utilize ela.
- Seguir as instruções pós-instalação abaixo.
Instruções usando o Visual Studio Code + PlatformIO (opção 2 - fácil)
- Descarregar e instalar o Visual Studio Code.
- Dentro do menu de extensões do Visual Studio, instalar a extensão PlatformIO IDE.
- Após instalar a extensão, descompactar o arquivo com o código fonte em uma pasta.
- Dentro do Visual Studio Code selecionar Arquivo->Abrir pasta e então localizar a pasta em que se encontra o arquivo platformio.ini. Atenção! Usar a opção "abrir pasta" e não "abrir arquivo".
- Selecionar Terminal->Run Task->Build (Terminal -> Executar tarefa -> Cosntruir). Pode demorar alguns minutos para baixar todas as dependências.
- Se o código compilou corretamente você vai observar uma mensagem similar a esta no terminal: "=== 1 succeeded in 00:00:30.050 ===".
- Conectar à impressora usando o cabo USB.
- Dentro do menu do Visual Code selecionar Terminal->Run Task->Upload (Terminal -> Executar tarefa -> Upload).
- Se tudo ocorrer bem uma mensagem como esta será exibida no terminal "=== 1 succeeded in 00:00:55.010 ===".
Instalando o programa pré-compilado no formato HEX (option 3 - muito fácil)
Esta opção permite carregar o firmware pre-compilado diretamente na impressora sem a necessidade de instalar o Visual Studio Code ou o Arduino IDE.
Para carregar o firmware na impressora você vai precisar do programa AVRDUDE 6.3. Para sua maior conveniência eu incluí a versão para Windows deste aplicativo no arquivo ZIP. O mesmo pode ser encontrado também na pasta de instalação do Arduino IDE em sistemas como Mac e Linux. O comando para upload no Windows PowerShell deve se parecer com esse:
./avrdude -p atmega1284p -c arduino -P COM3 -b 115200 -v -U flash:w:firmware.hex:i
A porta serial é um valor entre COM1 e COM8, dependendo de onde a sua impressora foi mapeada e firmware.hex é o arquivo que será gravado. Se você estiver utilizando algum outro sistema operacional como Linux ou Mac o que vai mudar é o endereço da porta COM, ao iníves de COM3 ele passa a ser algo do tipo /dev/ttyUSB0.
Se a gravação ocorreu bem, seguir as instruções abaixo.
Pós-instalação e nivelamento da mesa
- Pré-nivelar manualmente a mesa como você aprendeu nos vídeos da internet. Realizar essa operação antes do nivelamento por malha melhora bastante a qualidade da impressão porque o eixo Z vai trabalhar menos.
- Aquecer a mesa na temperatura de impressão e executar o comando para o nivelamento a partir do LCD (Prepare -> Bed Leveling -> Level bed) ou utilize o código G29 ou ainda o menu Heat and Level do menu customizado, este último aquece a mesa e espera dois minutos para que a expansão ocorra.
- Seguir as instruções no LCD. Existem vídeos na internet mostrando como se faz porém você basicamente coloca uma folha de papel abaixo do bico de impressão e ajusta a altura do bico até ele prender a folhaa de papel. Esse ajuste é realizado em 25 pontos. A partir de agora não toque mais nas manoplas de nivelamento manual da mesa. A calibração dura semanas se a mesa estiver com as molas bem tensionadas.
- Após terminar a calibração, salve as configurações usando o menu LCD ou o código M500 (se você usou a função Heat and Level os dados serão salvos automaticamente no final do processo).
- Adicione o seguinte código logo abaixo da linha G28 na incialização do seu software slicer. Essa configuração carrega a malha da mesa antes da impressão.
M420 S1
Dicas para resolução de problemas
- Falha no nivelamento:
- 1° - Certifique-se de que você nivelou manualmente a mesa antes de inciar o nivelamento de malha.
- 2° - certifique-se de que o comando M420 S1 foi executado ANTES do G28 na inicialização do slicer.
- Error "..._PIN is not interrupt-capable..." in Arduino IDE: Esse é um bug do Arduino IDE, certifique-se de que no configuration.h file a seguinte linha foi comentada com as barras duplas na frente (//).
//#define ENDSTOP_INTERRUPTS_FEATURE
- Desabilite a porta serial antes de gravar: Se a porta COM estiver em uso não será possível gravar o firmware. Certifique-se de encerrar os slicers, OctoPrint, e qualquer outro software que possa acessar a porta.
- Reiniciar o EEPROM: Algumas vezes a memória não é sobregravada ao atualizar o firmware e fica corrupta. Para reiniciar a memória executar os seguintes G-Code de qualquer Serial Terminal: M502 e depois M500.
- LCD em branco após gravação: Você não carregou o firmware corretamente na placa. Isso ocorre quando se utiliza outros softwares para a gravação como o PROGISP ou até o Octoprint. Tente utilizar o AVRDude.
- Serial Port Monitor para Windows: Este pequeno programa permite enviar e receber GCodes da impressora. Se os caracteres aparecem truncados você está usando a velocidade errada (comece com 115200bps).
- avrdude: stk500_getsync() attempt 1 of 10: not in sync: Velocidade incorreta de upload ou porta em uso (OctoPrint, Cura, etc..). Tente configurar a velocidade de upload para 115200bps no Arduino IDE ou no arquivo platformio.ini se estiver usando o Visual COde.