CNDY Shield GRBL CNC Arduino UNO Guía de usuario

V1.2

CNDY Shield GRBL CNC

Pinout GRBL no Arduino Uno

Analóxico 0 = Botón Abortar*
Analóxico 1 = Botón de retención de alimentación* (SAFETY_DOOR compártese coa retención de alimentación. Activado mediante a definición de configuración)
Analóxico 2 = botón de inicio/reinicio do ciclo*
Analóxico 3 = Saída de activación do refrigerante
Analóxico 4 = (Opcional) Saída de refrixerante de néboa (ou luz de diagnóstico ALARM_STATE**)
Analóxico 5 = Entrada da sonda*
Dixital 13 = Dirección do eixo
Dixital 12 = Interruptores de límite eixe Z*
Dixital 11 = PWM activado por eixo/láser
Dixital 10 = Interruptores de límite Eixe Y*
Dixital 9 = Interruptores de límite eixe X*
Dixital 8 = Habilitar/Desactivar motores paso a paso
Dixital 7 = Dirección Eixo Z
Dixital 6 = Dirección Eixo Y
Dixital 5 = Dirección Eixo X
Dixital 4 = pulso de paso eixe Z
Dixital 3 = pulso de paso eixe Y
Dixital 2 = pulso escalonado eixe X

Función opcional de dobre eixe

Pin analóxico Uno 3 = DUAL_DIRECTION do eixe A (adoitaba ser a saída de habilitación de refrigerante)
Pin analóxico Uno 4 = DUAL_STEP do eixe A (adoitaba ser a saída de refrigerante de néboa opcional)
Uno Digital 13 = Refrixerante (substituíndo a dirección do eixe).

Despois de instalar o repositorio grbl como biblioteca en Arduino, descomente as seguintes liñas en config.h file no cartafol da biblioteca grbl.

#definir ENABLE_DUAL_AXIS // Desactivado por defecto. Descomenta para activalo.

// Seleccione un eixe para reflectir outro motor. Neste momento só se admiten os eixes X e Y.
#definir DUAL_AXIS_SELECT Y_AXIS // Debe ser X_AXIS ou Y_AXIS

NOTA: O límite de eixe dual compártese co (Eixo Z) límite de pin por defecto.

A función de dobre eixe require un pin de pulso de paso independente para funcionar. O pin de dirección independente non é absolutamente necesario, pero facilita a inversión da dirección cunha configuración Grbl $$. Estes pasadores substitúen a dirección do eixe e os pasadores de néboa de refrixerante opcionais.

Esta característica opcional de dobre eixe é principalmente para que o ciclo de referencia localice dous lados dun pórtico de dobre motor de forma independente, é dicir, auto-escuadrado. Isto require un interruptor de límite adicional para o motor clonado. Para auto-escuadrar, ambos os interruptores de límite do eixe clonado deben estar fisicamente situados para activarse cando o pórtico está cadrado. Recomendo encarecidamente manter os motores sempre activados para garantir que o pórtico permaneza cadrado coa configuración de $ 1 = 255.

Para Grbl no Arduino Uno, o interruptor de límite do eixe clonado debe compartirse e conectarse co pin límite do eixe z debido á falta de pinos dispoñibles. O ciclo de referencia debe albergar o eixe z e o eixe clonado en diferentes ciclos, que xa é a configuración predeterminada.

A función de eixe dual funciona clonando unha saída de paso de eixe noutro par de pinos de paso e dirección. O pulso de paso e a dirección do motor clonado pódense configurar independentemente do motor do eixe principal. Non obstante, para aforrar flash e memoria preciosas, esta función de eixe dobre debe compartir a mesma configuración (paso/mm, velocidade máxima, aceleración) que o motor principal. Esta NON é unha característica para un cuarto eixe independente. Só un clon de motor.

AVISO: Asegúrese de probar as direccións dos seus motores de eixe dobre. Deben estar configurados para mover a mesma dirección ANTES de executar o teu primeiro ciclo de referencia ou calquera movemento longo. Os motores que se moven en direccións opostas poden causar danos graves á súa máquina. Use esta función de dobre eixe baixo o seu propio risco.

NOTA: Esta función require aproximadamente 400 bytes de flash. Algunhas configuracións poden quedar sen flash para encaixar nun Arduino 328p/Uno. Só se admiten os eixes X e Y. É compatible o modo de eixo/láser variable, pero só para unha opción de configuración. O núcleo XY, o pin de dirección do eixe e o refrixerante de néboa M7 están desactivados/non son compatibles.

Para evitar que o ciclo de referencia se acerque ao dobre eixe, cando un límite se dispara antes que o outro debido a un fallo do interruptor ou a ruído, o ciclo de referencia abortarase automaticamente se o interruptor de límite do segundo motor non se activa dentro dos tres parámetros de distancia definidos a continuación. A porcentaxe de lonxitude do eixe calculará automaticamente unha distancia de fallo como porcentaxetage da viaxe máxima do outro eixe non dobre, é dicir, se a selección do eixe dual é X_AXIS ao 5.0 %, a distancia de falla calcularase como o 5.0 % da viaxe máxima do eixe y. A distancia de fallo máx. e mínima son os límites da distancia ou pouca distancia dunha distancia de fallo válida.

#define DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0 // Float (por cento)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0 // Flotación (mm)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5 // Flotación (mm)

Nota para o porto I2C

Analog 4 (A4) e Analog 5 (A5) úsanse para o porto I2C do Arduino Uno ou 328p. Isto significa que, mentres estea a usar a función de sonda predeterminada, o refrixerante de néboa, o eixe dobre ou a luz de diagnóstico LED ALARM_STATE personalizada, non será posible usar I2C. A comunicación con outro Arduino para aumentar a funcionalidade terá que realizarse a través da conexión en serie en D0 e D1.

Iniciación (Controladores de pasos)

En primeiro lugar, para conectar os seus motores paso a paso a Grbl, necesitará algúns controladores de motores paso a paso para alimentar os pasos e conectar as súas entradas de controlador aos pinos do controlador Arduino. Hai unha serie de controladores que poden facelo, dispoñibles como totalmente pre-construídos, parcialmente pre-construídos ou completamente DIY. Os controladores paso a paso terán que compartir o Pasador de activación (D8) aos seus respectivos pinos de habilitación, mentres que o Pasadores de pulso de dirección e paso (D2-D7) deberán estar conectados aos seus respectivos pinos dos controladores. Só asegúrate de que todos os teus controladores e o Arduino compartir un terreno común (estrela conectada a terra coa potencia do controlador do motor). Isto é todo o que necesitarás para comezar.

Homing e interruptores de límite

Despois, unha vez que decidas que estás listo ou queres para habilitar o homing e/ou límites duros, terás que conectar un interruptor de límite normalmente aberto a cada un dos pinos límite (D9, D10 e D12). Os límites de referencia e duros usan os mesmos interruptores. Estes pinos de límite xa están altos cunha resistencia de pull-up interna, polo que todo o que tes que facer é conectalos a terra. Entón, cando pechas un interruptor, o interruptor tirará o pasador de límite cara a terra. Se queres ter interruptores de límite duros en ambos os extremos do percorrido dun eixe, só tes que conectar dous interruptores de límite en paralelo ao pin de límite do eixe e á terra. Asegúrate de ter instalados os interruptores antes de intentar realizar un ciclo de referencia e asegúrate de practicar bos métodos de cableado para minimizar o ruído eléctrico externo nos pinos de entrada.

As boas prácticas de cableado poden incluír o uso de cables apantallados ou clamp-en núcleos de cables de ferrita, e utilizando uns capacitores de 0.1 uF en paralelo cos interruptores de límite para a eliminación de rebote / filtrado de ruído. Manter os fíos do motor lonxe dos fíos do interruptor de límite tamén pode ser unha boa idea.

É posible configurar GRBL para utilizar interruptores de límite normalmente pechados se así o desexa. Algúns consideran que os interruptores de límite normalmente pechados poden axudar a reducir un accidente catastrófico en caso de falla dun interruptor de límite. Moitos usuarios omiten o uso de interruptores de límite e optan por límites de software.

Botóns de control

En Grbl v0.8 e posteriores, hai pin-outs dos comandos de inicio do ciclo, retención de alimentación e restablecemento de tempo de execución, polo que podes ter botóns de control físicos na túa máquina. Do mesmo xeito que os pinos de límite, estes pinos mantéñense altos cunha resistencia de pull-up interna, polo que todo o que tes que facer é conectar un interruptor normalmente aberto a cada pin e a terra. De novo, asegúrate de practicar bos métodos de cableado para minimizar o ruído eléctrico externo nos pinos de entrada.

Eixo e Pasadores de refrigerante

Se tes un desexo ou necesidade de fuso (D13) o control de refrigerante (A3 e A4) , Grbl cambiará estes pinos de saída a alto ou baixo, dependendo dos comandos de código G que envíes a Grbl. Con v0.9+ e PWM de eixo variable activados, o pin D11 sairá un rango de vol.tages de 0V a 5V dependendo da orde do código G da velocidade do eixo. 0V indica o fuso desactivado neste caso. Dado que estes pinos dependen da aplicación e como se usan, deixarémosche a ti que determines como controlalos e utilizalos para a túa máquina. Tamén podes piratear o fuso e a fonte de control do refrixerante files para alterar facilmente o seu funcionamento e despois compilar e cargar o seu Grbl modificado a través do IDE de Arduino.

Luz LED de diagnóstico

As máquinas CNC comerciais adoitan ter polo menos unha baliza LED de diagnóstico en caso de accidente de máquina ou código de alarma. Para aqueles que non coñecen as máquinas CNC GRBL e DIY, esta función é moi útil para saber cando se produciu un ALARM_STATE (como non poder acometer a máquina coa localización e os interruptores de límite activados).

GRBL por defecto non ten unha luz LED de diagnóstico. Isto débese a que o Ardunio UNO co chip de 328p ten espazo de programación limitado e case todo ese espazo está a ser usado actualmente (aínda que non todo!). Non todas as funcións desexables se poden implementar nun dispositivo de memoria tan baixa, polo que ás veces hai que facer sacrificios.

Ademais, están a utilizarse actualmente todos os portos de E/S dispoñibles e necesítase polo menos un pin de E/S para esa luz. Afortunadamente, esta funcionalidade pódese engadir facilmente pirateando o código GRBL C e aínda hai un 3% de memoria dispoñible no chip 328p.

Actualmente, moitas máquinas non usan a función MIST COOLANT opcional en Analog 4, polo que podemos redefinir facilmente este pin para o noso uso. Un método alternativo pode ser codificar tales luces LED nun Arduino externo que tería dispoñibles todos os portos de E/S onde se podería conectar tantas luces LED / zumbadores como queira e poder comunicarse a través de serie ou I2C.

Para piratear o código fonte GRBL para usar o LED ALARMA no escudo CNDY, faga o seguinte:

Paso 1: En Linux ou Macintosh abra un editor de texto (en Windows use Notepad++) e edite o cpu_map.h file:

Cambia isto:

// Define os pinos de saída de activación do refrixerante de inundación e néboa.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Pin analóxico 3
#define COOLANT_MIST_DDR DDRC
#define COOLANT_MIST_PORT PORTC
#define COOLANT_MIST_BIT 4 // Uno Pin analóxico 4

A isto:

// Define os pinos de saída de activación do refrixerante de inundación e néboa.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Pin analóxico 3
//#definir COOLANT_MIST_DDR DDRC
//#definir COOLANT_MIST_PORT PORTC
//#define COOLANT_MIST_BIT 4 // Uno Pin analóxico 4

//////////////////

// Definir SAÍDA LED DE ALARMA
#definir SIGNAL_LIGHT_DDR DDRC
#define SIGNAL_LIGHT_PORT PORTC
#define SIGNAL_LIGHT_BIT 4 // Uno Pin analóxico 4

// #definir sinal_light(on) (SIGNAL_LIGHT_DDR |= (1<

// #definir signal_light_init() signal_light(off)

#definir signal_light_init signal_light_off

#definir signal_light_on (SIGNAL_LIGHT_DDR |= SIGNAL_LIGHT_PORT |= (1<

#definir signal_light_off (SIGNAL_LIGHT_DDR |= SIGNAL_LIGHT_PORT &= ~(1<

//////////////////

Paso 2: En Linux ou Macintosh abra un editor de texto (en Windows use Notepad++) e edite o protocolo.c file:

Cambia isto:

// Executa comandos en tempo de execución, cando sexa necesario. Esta función opera principalmente como estado de Grbl
// máquina e controla as diversas funcións en tempo real que ofrece Grbl.
// NOTA: Non alteres isto a menos que saibas exactamente o que estás facendo! void protocol_exec_rt_system()
{

uint8_t rt_exec; // Variable temporal para evitar chamar a volátil varias veces.
rt_exec = sys_rt_exec_alarm; // Copiar sys_rt_exec_alarm volátil.
if (rt_exec) { // Introduza só se algún indicador de bit é verdadeiro

// Alarma do sistema. Todo se apagou por algo que saíu gravemente mal. Informe
// a fonte do erro para o usuario. Se é crítico, Grbl desactívase introducindo un infinito
// bucle ata que o sistema se reinicie/aborte.

sys.state = ESTADO_ALARMA; // Establece o estado de alarma do sistema

informe_mensaxe_alarma(rt_exec);

A isto:

// Executa comandos en tempo de execución, cando sexa necesario. Esta función opera principalmente como estado de Grbl
// máquina e controla as diversas funcións en tempo real que ofrece Grbl.
// NOTA: Non alteres isto a menos que saibas exactamente o que estás facendo!
void protocol_exec_rt_system()
{

uint8_t rt_exec; // Variable temporal para evitar chamar a volátil varias veces.
rt_exec = sys_rt_exec_alarm; // Copiar sys_rt_exec_alarm volátil.

////////////////////////

// Definir SAÍDA LED DE ALARMA
sinal_luz_inicio; //Init LED en estado apagado
se (sys.state==STATE_ALARM) {signal_light_on;}
else if (sys.state!=STATE_ALARM) {signal_light_off;}
// senón {signal_light_off;}

////////////////////////

if (rt_exec) { // Introduza só se algún indicador de bit é verdadeiro
// Alarma do sistema. Todo se apagou por algo que saíu gravemente mal. Informe
// a fonte do erro para o usuario. Se é crítico, Grbl desactívase introducindo un infinito
// bucle ata que o sistema se reinicie/aborte.
sys.state = ESTADO_ALARMA; // Establece o estado de alarma do sistema
informe_mensaxe_alarma(rt_exec);

O que acabamos de facer foi cambiar a función definida de Analog 4 (A4) de ser o refrixerante de néboa opcional a ser a nosa luz LED. Despois escribimos código en C para poder escribir (PC4) Porto C 4 (Analóxico4) alto ou baixo dependendo de se lle indicaron que estivese activado ou desactivado. Despois escribimos unha simple instrución if-else para comprobar a máquina de estado GRBL e dicirnos se estamos nun ALARM_STATE activo e cando debemos acender o LED.

Se todo vai ben, podemos compilar no IDE de Arduino, cargar o código e agora teremos unha luz de diagnóstico LED ALARM_STATE que funcione. Opcionalmente, podemos conectar un faro LED externo para colocalo enriba da máquina que será visible en toda a sala.

Posibles problemas

Idealmente, estes cambios faranse co código fonte grbl máis actual dispoñible e faranse ANTES de engadir a "biblioteca" grbl ao IDE de Arduino. Se xa tes grbl no cartafol das bibliotecas de Arduino, terás que buscar manualmente e eliminar o cartafol grbl ou editar o files dentro da biblioteca arduino. Na miña máquina Linux a "biblioteca" atópase en: /home/andrew/Arduino/libraries/grbl. A versión máis recente de grbl pódese atopar en https://github.com/gnea/grbl/releases. Pódese descargar o zip dispoñible file e no seu interior pódese atopar un cartafol chamado grbl-1.1h.20190825. Dentro deste cartafol un cartafol chamado grbl será o que quererá engadir ao IDE de Arduino como "biblioteca" "zip". file”. Asegúrate de facer os teus cambios en cpu_map.h e protocol.c files antes de engadilo ao IDE de Arduino. En caso contrario, terás que editar o files dentro da túa carpeta bibliotecas/grbl. Hai un erro coñecido para a función de eixe dual no zip grbl-1.1h file, arreglarase se descargas a rama principal grbl. https://github.com/gnea/grbl

Actualizacións e erros de CNDY Shield

*V1.1: ten un pequeno erro de serigrafía onde se intercambian o PWM do eixe e a dirección do fuso. Isto foi corrixido na V1.2.

A V1.2 xa non ten os capacitores opcionais de redución de ruído na liña de 5v e ten outros novos nas outras liñas de botón de entrada. V1.2 ten un LED opcional cableado en paralelo ao Spindle PWM. Isto pode ser útil para configuracións con láser por motivos de seguridade.

Actualizado 28-ago-2021

Pódese atopar información adicional en RabbitMountainResearch.com.

Documentos/Recursos

CNDY Shield GRBL CNC Arduino UNO [pdfGuía do usuario
GRBL CNC, Arduino UNO

Referencias

Deixa un comentario

O teu enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *