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

 

Instruções usando o Arduino IDE (opção 1 - dificuldade média)

 

  1. Instalar o Arduino IDE
  2. Fechar qualquer programa que possa acessar a impressora via USB (Cura, Serial Monitor, OctoPrint, etc...).
  3. 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

     

  4. Instalar as seguintes bibliotecas no Arduino:
    • U8Glib
    • Sanguino
  5. Após instalar todos os ítens acima, descompactar o arquivo ZIP para uma pasta e abrir o "Marlin.ino" no Arduino IDE.
  6. 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

     

  7. 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.
  8. Seguir as instruções pós-instalação abaixo.

Instruções usando o Visual Studio Code + PlatformIO (opção 2 - fácil)

  1. Descarregar e instalar o Visual Studio Code.
  2. Dentro do menu de extensões do Visual Studio, instalar a extensão PlatformIO IDE.
  3. Após instalar a extensão, descompactar o arquivo com o código fonte em uma pasta.
  4. 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".
  5. Selecionar Terminal->Run Task->Build (Terminal -> Executar tarefa -> Cosntruir). Pode demorar alguns minutos para baixar todas as dependências.
  6. Se o código compilou corretamente você vai observar uma mensagem similar a esta no terminal: "=== 1 succeeded in 00:00:30.050 ===".
  7. Conectar à impressora usando o cabo USB.
  8. Dentro do menu do Visual Code selecionar Terminal->Run Task->Upload (Terminal -> Executar tarefa -> Upload).
  9. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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).
  5. 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.

Outros downloads para a Ender 3

Files
Versão
1.1.9.1+ Bugfix + Mesh Bed Level for Ender 3 (24th July 2020)
Plataformas suportadas
Arduino IDE or PlatformIO
Tamanho do arquivo
4.2 MB
Capturas de tela

Categorias

Comentários

There may be a bug with your firmware. I've successfully uploaded it, however, when I go into the custom menu and select either Heat Level ABS or PLA, it'll perform homing twice then it just sticks at printing. Any ideas?

Great firmware customizations and thanks for the update. I was not able to find the Full Auto Bed Levelling Sequence as described in the features, did i miss something or is it only available in the pre-compiled FWs? 

Thanks again for the awesome work

Dear Daniel! 

What i have: ender 3, bootliader installed (prev firmware was marlin 2.0.5.3), octoprint lastest on rpi 2b, slicer: cura 4.6 or craftware —> m420 s1 in slicer setted up
i did as u wrote step by step .

Cant print via octo, because i hot an errormessage: bed level not supported.

can u advise what is missing or did wrong?

Thx, stefan

When i try build on PlatformIO with def. build_flags i got: (no change in Marlin configuration)

Building in release mode
RAM:   [===       ]  29.4% (used 4818 bytes from 16384 bytes)
Flash: [==========]  98.6% (used 128204 bytes from 130048 bytes)

 

I got this with this build_flags: -fmax-errors=5 -g -fmerge-all-constants

Building in release mode
RAM:   [===       ]  29.4% (used 4818 bytes from 16384 bytes)
Flash: [==========]  97.5% (used 126762 bytes from 130048 bytes)

 

With Arduino IDE 1.8.14 I got: (only this change: //#define ENDSTOP_INTERRUPTS_FEATURE)

Sketch uses 125738 bytes (96%) of program storage space. Maximum is 130048 bytes.
Global variables use 4814 bytes (29%) of dynamic memory, leaving 11570 bytes for local variables. Maximum is 16384 bytes.

Do you tray any other compiler options which can help to reduce code size ?

 

> Buzzer: Should not be working because the signal line is required by BLTouch

I don't use BLTouch.

I am using ender3 + mesh.
How to enable buzzer + mesh?

> Emergency stop: In what context it is not working?

I have to stop printing -> element has detached from the table.
The printer prints in the air.
Emergency stop does not work.

So this is odd. I loaded the 1.1.9.1 firmware via Visual Studio Code + PlatformIO and the BL Touch will not "drop the pin" when doing an auto-home and just plows into the build platform. I reload the stock FW and it works fine. Ideas? Your old version 1.1.9 also worked though I loaded it using the pre-compiled hex file.

I'm ashamed to admit I have no idea and not sure how to check. I only recently purchased it from Creality. The packaging indicates G1930-ZCG-BLTOUCHV1 which would imply version 1 but that doesn't seem right, does it? I didn't see anything on the Marlin UI to indicate what version. Is there some way I can determine via command line from OctoPrint?

Is there any changes to this post from the previous one? I downloaded it 2 days ago and the heat and level command seem to not work. Launching manually from the prepare menu does. Hoping this is an updated version maybe?

Could you help me to get more information about this problem?

The command was executed before or after homing?

Did the bed heated to the desired temperature?

If it heated, after the pause, did you got any messages in the display?

Regards,