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 (Nov 12th 2020)
Plataformas suportadas
Arduino IDE or PlatformIO
Tamanho do arquivo
4.2 MB
Capturas de tela

Categorias

Comentários

Hi and thank you for your efforts to help people like me.

 

Using your pre-compiled HEX/ELF for boards with TMC2208 drivers.

I cant locate where to adjust the extruder, is this missing form this version?

 

Regards

Kent.

Hi, thank you very much fir this, I installed no problems except after many layers in the extruder just stops? It does it on any print! Do you know why? MNy thanks fir any help

Hi thank you very much for this great post on suppling and flashing 1.1.9 with mesh on a 8 bit board, I managed to successfully do this but only one thing and that is when I press the control menu nothing shows up on the screen, so have no motion screen etc, What have I done wrong or missed? Or is it just a bad flash and need to try again? Many many thanks

Is the SD card disabled in the pre built hex files?   I cant access it, but I downloaded the source package and it seems to be enabled there.

Hello,

Thank you for your work.

I flashed this FW onto my 8bit board without any problems, but I dont quite understand what the custom function "Heat Level" does.

Every time I start it, the bed gets heated to 60 dg, the nozzle repositions to its home coordinates, where it remains, and the Display shows "Printing ...".

And thats it ... Nothing else happens.

What is the Heat Level Function supposed to do?

 

BR,

Chaydo

Thank you for your reply, Daniel.

 

Yes, I waited like ... 15 Minutes or so.

 

- First, I pressed "Custom Commands" -> "Heat Level PLA"

- Display shows "Printing ..."

- Then the Bed heated up to 60 Dg

- After that, the Nozzle repositioned to it's Home Coordinates and remained there

- After that, the Bed Temperature went down again

- Display still showed "Printing ..."

- I waited like ... 15 ... Maybe even 20 Minutes, but nothing happened.

 

I reflashed the Firm twice, but it remains the same Problem - Nothing happens.

 

What is supposed to happen, anyway?

Could it be a Bug or a Misconfig?

 

BR,

Chaydo

Hi,

thanks for your FW on Ender3 3DPrinter.

I ask for you... after upgrade the fw of my Ender3 not pro, board original 8bit, the fw 1.1.9 + mesh level is good and the mesh level is right but i lose the configuration of step/mm fron menu lcd on printer. I've set the value correct on firmware before upload on machine but, is very usefully to have on menu to modify the step values.

I can modify on firmware for to have this menu active again?

Thanks

First of all thanks for your work with this firmware.

but I'm having an issue with it. When I make the bed leveling process the first line and row of the probing test points are to close to the edge of the bed while the probing points are far from the edge on the other two sides of the bed. and the same happens when it prints. So even if a put a print centered in the bed the final print result in be displaced to the down and left side of the bed by a few cm. I don't know how to fix it. I have my ender configured to 235x235. Also when the prints end the X-axis is forced to much to the end-stop as it wants to continue far away.

I would like to know how to fix this issues.

Thanks.

Hi,

 

I'm planning on installing this on my new MKS gen 1.4 board. 

I've followed this guide https://www.deviousweb.com/2019/05/11/ender-3-mks-gen-1-4-upgrade/ but his preconfigured FW is a bit old so I wanted to go with your feature packed version of 1.1.9.

Since I'm not using the original board I though I should stick to his suggestion on board and ignore the Sanguino you mentioned. but when I do it stops and tells me to use sanguino.

So.. since I'm quite new at this I'm not sure how to proceed?

Any help is appreciated!

PS: I'm using TMC2208 so I know I need to invert the invert_[axis] booleans.

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,