Neste tutorial vamos ver como configurar o firmware GRBL 0.9 para Ramps 1.4 com o Arduino Mega 2560 e fazer a interface com o LaserGRBL. Para controlar a sua CNC ou MPCNC com o LaserGRBL, é necessário instalar e configurar o firmware na sua placa Arduino, para que esta possa interpretar corretamente as ordens e comandos do seu software de gravação.
Este tutorial vem no seguimento deste: Instalação e ligação de uma placa Ramps 1.4 para um MPCNC.
Hardware
- Arduino MEGA 2560
- Cartão RAMPS 1.4
- 1 laser de 20W: LD4070HA
- 5 Motores de passo: 17HS15-1504S-X1
- 3 Controladores de motor de passo: DRV8825
Software
Limpeza da EEPROM
Antes de descarregar e carregar a GRBL no seu cartão, é necessário assegurar que todos os valores armazenados são limpos. Para tal, é necessário o seguinte código para repor as predefinições do seu cartão:
/* * EEPROM Clear * * Sets all of the bytes of the EEPROM to 0. * Please see eeprom_iteration for a more in depth * look at how to traverse the EEPROM. * * This example code is in the public domain. */ #include <EEPROM.h> void setup() { // initialize the LED pin as an output. pinMode(13, OUTPUT); /*** Iterate through each byte of the EEPROM storage. Larger AVR processors have larger EEPROM sizes, E.g: - Arduino Duemilanove: 512 B EEPROM storage. - Arduino Uno: 1 kB EEPROM storage. - Arduino Mega: 4 kB EEPROM storage. Rather than hard-coding the length, you should use the pre-provided length function. This will make your code portable to all AVR processors. ***/ for (int i = 0 ; i < EEPROM.length() ; i++) { EEPROM.write(i, 0); } // turn the LED on when we're done digitalWrite(13, HIGH); } void loop() { /** Empty loop. **/ }
Brancher votre carte Arduino en liaison série avec son câble USB, copier et coller ce code dans votre IDE Arduino et puis uploader pour nettoyer l’EEPROM.
Modificação da GRBL para Ramps
Pode descarregar o GRBL for Ramps a partir deste repositório do Github. Se não sabe como usar o Git, pode seguir este tutorial para aprender o básico.
O firmware GRBL foi modificado em certos pontos para o adaptar ao nosso MPCNC. Antes de carregar o firmware com o IDE Arduino, eis os parâmetros a verificar para a sua instalação:
// Enables variable spindle output voltage for different RPM values. On the Arduino Uno, the spindle // enable pin will output 5V for maximum RPM with 256 intermediate levels and 0V when disabled. // NOTE: IMPORTANT for Arduino Unos! When enabled, the Z-limit pin D11 and spindle enable pin D12 switch! // The hardware PWM output on pin D11 is required for variable spindle output voltages. #define VARIABLE_SPINDLE // Default disabled. Uncomment to enable.<----------------------------------- Uncommented for Ramps 1.4
Aqui, descomentamos a linha #define VARIABLE_SPINDLE no ficheiro config.h para ter controlo PWM sobre o laser.
/*-----------------------------------------------------------suite du code---------------------------------------------------*/ // Define spindle enable and spindle direction output pins. #define SPINDLE_ENABLE_DDR DDRH #define SPINDLE_ENABLE_PORT PORTH #define SPINDLE_ENABLE_BIT 6 // MEGA2560 Digital Pin 9 <---------- Modified for Ramps 1.4. Orignal was BIT 3 for Digital Pin 6 #define SPINDLE_DIRECTION_DDR DDRE #define SPINDLE_DIRECTION_PORT PORTE #define SPINDLE_DIRECTION_BIT 3 // MEGA2560 Digital Pin 5 // Define flood and mist coolant enable output pins. // NOTE: Uno analog pins 4 and 5 are reserved for an i2c interface, and may be installed at // a later date if flash and memory space allows. #define COOLANT_FLOOD_DDR DDRH #define COOLANT_FLOOD_PORT PORTH #define COOLANT_FLOOD_BIT 5 // MEGA2560 Digital Pin 8 #ifdef ENABLE_M7 // Mist coolant disabled by default. See config.h to enable/disable. #define COOLANT_MIST_DDR DDRH #define COOLANT_MIST_PORT PORTH #define COOLANT_MIST_BIT 3 // MEGA2560 Digital Pin 6 <---------- Modified for Ramps 1.4. Orignal was BIT 6 for Digital pin 9 /*-----------------------------------------------------------suite du code--------------------------------------------------*/
Aqui, no ficheiro intitulado cpu_map.h, é preciso prestar muita atenção aos pinos de saída para o “Spindle”, que aqui corresponderá ao pino para ativar ou desativar o Laser.
#define SPINDLE_PWM_DDR DDRB // <------------------------------ Modified for Ramps 1.4. Orignal was DDRH #define SPINDLE_PWM_PORT PORTB // <--------------------------- Modified for Ramps 1.4. Orignal was PORTH #define SPINDLE_PWM_BIT 5 // MEGA2560 Digital Pin 11 <--------- Modified for Ramps 1.4. Orignal was BIT 6 for Digital Pin 9 #endif // End of VARIABLE_SPINDLE
Configurar a pinagem do cartão
Ainda no mesmo ficheiro, cpu_map.h, modificamos o pino de controlo da potência do laser PWM para corresponder à nossa cablagem.
Para compreender estas alterações, é necessário analisar os diagramas estruturais da placa Ramps 1.4 e do Arduino MEGA 2560 :
Note-se que os pinos digitais utilizados para alimentar o laser (Pino Digital 9) e o utilizado para o controlar (Pino Digital 11) são definidos através do seu PORT, daí a necessidade de os definir pelos seus números de Port, respetivamente 6 no PORTH e 5 no PORTE (PH6 e PE5 no diagrama). A modificação PH3 para o pino digital 6 serve apenas para libertar o pino digital 9 que é utilizado como base para um sistema de arrefecimento que não está na nossa configuração.
Agora que compreende as alterações efectuadas ao firmware, pode carregá-lo para a sua placa Arduino. Tenha em atenção que pode demorar vários minutos a compilar, por isso seja paciente.
Menu de configuração GRBL
Uma vez instalada a LaserGRBL, abra a aplicação e ligue-a à placa Arduino Mega através da ligação série USB.
Em seguida, clicar em Grbl Configuration, que corresponde aos parâmetros específicos do CNC que está ligado. Só é possível modificar e reescrever os valores quando o LaserGRBL estiver ligado ao seu CNC.
Terá acesso aos parâmetros do seu CNC, valores que serão guardados na sua placa Arduino.
N.B.: se utilizar várias máquinas ou computadores, pode exportar e importar as suas definições de configuração.
Desativação dos limites de posição
Antes de mais, desativar os Soft Limits, colocando o valor da linha Soft limits enable a 0 (&20 e $21). Isto facilitará os primeiros testes sem que o LaserGRBL pense que a sua máquina está fora das suas dimensões.
Configuração dos parâmetros
Para definir o valor da resolução do curso para cada eixo, consulte a equação: Resolução do curso = (Passos por rotação * Redução mecânica)
- Passos por rotação: Este é o número de passos dados pelo motor para completar uma rotação completa (aqui 200 passos por rotação).
- Redução de engrenagens: Se o sistema utilizar engrenagens ou polias para reduzir ou aumentar o binário, é necessário ter em conta o rácio de redução mecânica. Isto afectará a resolução do deslocamento efetivo do eixo. Utilizamos correias com um rácio de redução mecânica de 40:1.
- Microstepping: Alguns controladores de motores passo a passo suportam microstepping, o que permite que cada passo elétrico seja dividido. Isto proporciona uma melhor resolução. Os valores possíveis são 1
Para a aceleração, consulte o valor indicado na folha de dados do motor.
Notas sobre o cálculo dos parâmetros
- Resolução
Para um sistema de polia (20 dentes) com correia (passo de 2 mm) com micro passo (1
( 200 * 32 )
Para um sistema de parafuso sem-fim com uma relação de 8 mm por rotação e um micropasso (1
( 200 * 32 )
- velocidade máxima
Para obter a velocidade máxima, ou seja, a taxa máxima, pode utilizar a seguinte equação
Velocidade máxima = (passos por rotação * frequência máxima de impulsos de passo)
No nosso casoVelocidade máxima = ( 200*36 000)
- área de trabalho
A dimensão máxima do curso depende da superfície de trabalho efectiva do seu CNC. Para o medir :
- Primeiro, configurar as definições anteriores
- Utilizando as setas na interface de utilizador do LaserGRBL, desloque a cabeça do seu CNC para o canto inferior esquerdo.
- Ligar o laser utilizando o botão de focagem e marcar o ponto para onde está apontado, ligando o laser a alta potência, por exemplo.
- repetir a operação em todos os cantos.
- Meça a superfície de trabalho com uma régua ou fita métrica.
Modificar e acrescentar botões no LaserGRBL
Para modificar um botão, basta clicar com o botão direito do rato sobre ele e escolher “Editar botão”.
Também é possível alterar o GCode enviado pelo botão. Para que o Laser Focus e o Blink funcionem a 3% da sua potência, pode definir estes GCodes da seguinte forma.
; pour GCode M3 S30 G1 F1000
; pour GCode2 M5 S0 G0
Para criar o seu próprio botão, pode clicar com o botão direito do rato numa área vazia da interface do utilizador onde não exista nenhum botão e escolher “Adicionar um botão personalizado”. Isto pode ser útil, por exemplo, para adicionar algo para manipular o eixo Z se quiser alterar a altura da sua ferramenta CNC:
- Enter: permite-lhe escolher se se trata de um botão que é ativado clicando nele uma vez, mantendo-o premido, que se ativa e é acionado clicando nele, etc.
- Legenda: este será o nome apresentado para o seu botão
- Tooltip: descreve o que o botão faz
- Ativado: permite saber quando é que o botão será desbloqueado; neste caso, Inativo significa que só estará ativo se o CNC estiver ligado e desbloqueado.
- GCode: é aqui que coloca as linhas de comando que o seu botão irá enviar para o seu CNC. Aqui estão diferentes GCodes para 6 botões para mover o eixo Z com diferentes precisões:
G91 Z-10 ; Monter l'axe Z de 10mm G91 Z10 ; Descendre l'axe Z de 10mm G91 Z-5 ; Monter l'axe Z de 5mm G91 Z5 ; Descendre l'axe Z de 5mm G91 Z-1 ; Monter l'axe Z de 1mm G91 Z1 ; Descendre l'axe Z de 1mm
Fontes
- https://planet-cnc.com/how-to-setup-cnc/
- https://blog.orientalmotor.com/motor-sizing-basics-part-3-acceleration-torque-and-rms-torque
- https://lasergrbl.com/configuration/
- https://docs.v1e.com/learn/gcode/
- https://www.youtube.com/watch?v=erXw09OcdeU
Não achei onde baixar o arquivo
I couldn’t find where to download the file
https://github.com/LazloTheFrog/GRBL_for_RAMPS_1.4