CNDY Shield GRBL CNC Arduino UNO Gebruikershandleiding

V1.2

CNDY Shield GRBL CNC

GRBL pinout op de Arduino Uno

Analoog 0 = Afbreekknop*
Analoog 1 = Feed Hold-knop* (SAFETY_DOOR wordt gedeeld met feed hold. Ingeschakeld door config-definiëren)
Analoog 2 = Cyclus Start / Herstart Knop*
Analoog 3 = Uitgang koelvloeistof inschakelen
Analoog 4 = (Optioneel) Mist koelvloeistof uitgang (of ALARM_STATE diagnoselampje**)
Analoog 5 = Sonde-ingang*
Digitaal 13 = Spindelrichting
Digitaal 12 = Eindschakelaars Z-as*
Digitaal 11 = Spindel / Laser PWM inschakelen
Digitaal 10 = Eindschakelaars Y-as*
Digitaal 9 = Eindschakelaars X-as*
Digitaal 8 = Stappenmotoren inschakelen / uitschakelen
Digitaal 7 = Richting Z-as
Digitaal 6 = richting Y-as
Digitaal 5 = richting X-as
Digitaal 4 = Step Pulse Z-as
Digitaal 3 = Step Pulse Y-as
Digitaal 2 = Stappuls X-as

Optionele dubbele as-functie

Uno Analog Pin 3 = A-as DUAL_DIRECTION (was vroeger Coolant Enable Output)
Uno Analog Pin 4 = A-as DUAL_STEP (was vroeger optionele nevelkoelvloeistofuitgang)
Uno Digital 13 = Koelvloeistof (spilrichting vervangen.)

Na het installeren van de grbl-repository als een bibliotheek in Arduino, verwijder je de opmerkingen over de volgende regels in config.h file in de grbl-bibliotheekmap.

#define ENABLE_DUAL_AXIS // Standaard uitgeschakeld. Uncomment om in te schakelen.

// Selecteer de ene as om een ​​andere motor te spiegelen. Op dit moment worden alleen de X- en Y-as ondersteund.
#define DUAL_AXIS_SELECT Y_AXIS // Moet X_AXIS of Y_AXIS zijn

OPMERKING: De limiet voor twee assen wordt gedeeld met de (Z-as) limiet pin standaard.

De functie met twee assen vereist een onafhankelijke stappulspen om te werken. De onafhankelijke richtingspin is niet absoluut noodzakelijk, maar vergemakkelijkt het omkeren van de richting met een Grbl $$-instelling. Deze pennen vervangen de spilrichting en optionele koelvloeistofnevelpennen.

Deze optionele functie met twee assen is in de eerste plaats bedoeld voor de homing-cyclus om twee zijden van een portaal met twee motoren onafhankelijk te lokaliseren, dwz zelf-kwadraterend. Dit vereist een extra eindschakelaar voor de gekloonde motor. Om zichzelf vierkant te maken, moeten beide eindschakelaars op de gekloonde as fysiek worden gepositioneerd om te activeren wanneer het portaal vierkant is. Beveel ten zeerste aan om de motoren altijd ingeschakeld te houden om ervoor te zorgen dat het portaal vierkant blijft met de $1=255 instelling.

Voor Grbl op de Arduino Uno moet de gekloonde aslimietschakelaar worden gedeeld met en bedraad met de z-aslimietpin vanwege het ontbreken van beschikbare pinnen. De homing-cyclus moet de z-as en de gekloonde as in verschillende cycli huisvesten, wat al de standaardconfiguratie is.

De functie met twee assen werkt door een asstapuitgang te klonen op een ander paar stap- en richtingspinnen. De stappuls en richting van de gekloonde motor kunnen onafhankelijk van de hoofdasmotor worden ingesteld. Om kostbare flits en geheugen te besparen, moet deze functie met twee assen echter dezelfde instellingen (stap/mm, maximale snelheid, acceleratie) delen als de oudermotor. Dit is GEEN functie voor een onafhankelijke vierde as. Alleen een motorkloon.

WAARSCHUWING: Zorg ervoor dat u de richtingen van uw tweeassige motoren test! Ze moeten zo zijn ingesteld dat ze in dezelfde richting bewegen VOORDAT je je eerste homing-cyclus of een lange beweging uitvoert! Motoren die in tegengestelde richting bewegen, kunnen ernstige schade aan uw machine veroorzaken! Gebruik deze functie met twee assen op eigen risico.

OPMERKING: Deze functie vereist ongeveer 400 bytes flash. Bij bepaalde configuraties kan de flitser opraken om op een Arduino 328p/Uno te passen. Alleen X- en Y-assen worden ondersteund. Variabele spindel-/lasermodus IS ondersteund, maar alleen voor één configuratieoptie. Kern XY, spilrichtingspen en M7 nevelkoelvloeistof zijn uitgeschakeld/niet ondersteund.

Om te voorkomen dat de homing-cyclus de dubbele as overschrijdt, wordt de homing-cyclus automatisch afgebroken als de limietschakelaar van de tweede motor niet wordt geactiveerd binnen de drie hieronder gedefinieerde afstandsparameters. Aslengtepercentage berekent automatisch een faalafstand als percentagetage van de maximale verplaatsing van de andere niet-dubbele as, dwz als de selectie van de dubbele as X_AXIS is op 5.0%, dan wordt de uitvalafstand berekend als 5.0% van de maximale verplaatsing van de y-as. Faalafstand max en min zijn de limieten van hoe ver of hoe klein een geldige uitvalafstand is.

#define DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0 // Zwevend (procent)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0 // Zwevend (mm)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5 // Zwevend (mm)

Opmerking voor I2C-poort:

Analog 4 (A4) en Analog 5 (A5) worden gebruikt voor de I2C-poort op de Arduino Uno of 328p. Dit betekent dat het gebruik van I2C niet mogelijk is zolang u de standaard sondefunctie, mistkoelvloeistof, dubbele as of aangepast ALARM_STATE LED-diagnoselampje gebruikt. Communicatie met een andere Arduino om de functionaliteit te vergroten, moet via de seriële verbinding op D0 en D1 plaatsvinden.

Aan de slag (Stepper-stuurprogramma's)

Ten eerste, om je stappenmotoren op Grbl aan te sluiten, heb je een aantal stappenmotorstuurprogramma's nodig om de stappenmotoren van stroom te voorzien en je stuurprogramma-ingangen aan te sluiten op de Arduino-controllerpinnen. Er zijn een aantal stuurprogramma's die dit kunnen doen, beschikbaar als volledig vooraf gebouwd, gedeeltelijk vooraf gebouwd of volledig zelfgemaakt. De stepper-stuurprogramma's moeten de stepper inschakelen pin (D8) naar hun respectievelijke activeringspinnen, terwijl de richting- en stappulspennen (D2-D7) moeten worden aangesloten op hun respectievelijke pinnen op de stuurprogramma's. Zorg ervoor dat al uw stuurprogramma's en de Arduino een gemeenschappelijke basis delen (ster geaard met uw motor driver power). Dit is ongeveer alles wat je nodig hebt om te beginnen.

Homing- en eindschakelaars

Daarna, als je eenmaal besluit dat je er klaar voor bent of zou willen om homing en/of harde limieten mogelijk te maken, moet u verbinding maken met een normaal open eindschakelaar naar elk van de limietpinnen (D9, D10 en D12). Homing en harde limieten gebruiken dezelfde schakelaars. Deze limietpinnen worden al hoog gehouden met een interne pull-up-weerstand, dus alles wat je hoeft te doen is ze met aarde te verbinden. Dus wanneer u een schakelaar sluit, trekt de schakelaar de limietpen naar de grond. Als u harde eindschakelaars aan beide uiteinden van een as wilt hebben, hoeft u alleen maar twee eindschakelaars parallel aan de asbegrenzingspen en aarde te bedraden. Zorg ervoor dat de schakelaars zijn geïnstalleerd voordat u een homing-cyclus probeert uit te voeren, en zorg ervoor dat u goede bedradingsmethoden oefent om externe elektrische ruis op de ingangspinnen te minimaliseren.

Goede bedradingspraktijken kunnen het gebruik van afgeschermde kabels of clamp-op ferrietkabelkernen, en het gebruik van enkele 0.1uF-condensatoren parallel met de eindschakelaars voor debouncing / ruisfiltering. Het kan ook een goed idee zijn om de motordraden uit de buurt van de eindschakelaardraden te houden.

Het is mogelijk om GRBL te configureren om normaal gesloten eindschakelaars te gebruiken als u dat wenst. Sommigen zijn van mening dat normaal gesloten eindschakelaars kunnen helpen om een ​​catastrofale crash te verminderen in het geval van een storing van de eindschakelaar. Veel gebruikers gebruiken helemaal geen limietschakelaars en kiezen in plaats daarvan voor softwarelimieten.

Bedieningsknoppen

In Grbl v0.8 en later zijn er pin-outs van de opdrachten voor het starten van de cyclus, het vasthouden van de voeding en het resetten van runtime, zodat u fysieke bedieningsknoppen op uw machine kunt hebben. Net als de limietpinnen, worden deze pinnen hoog gehouden met een interne pull-up-weerstand, dus je hoeft alleen maar een normaal open schakelaar op elke pin en op aarde aan te sluiten. Zorg er opnieuw voor dat u goede bedradingsmethoden oefent om externe elektrische ruis op de ingangspinnen te minimaliseren.

Spindel- en koelmiddelpennen

Als je een wens of behoefte hebt aan een spindel: (D13) of koelvloeistof controle (A3 & A4) , zal Grbl deze uitgangspinnen hoog of laag zetten, afhankelijk van de G-code-commando's die u naar Grbl stuurt. Met v0.9+ en variabele spindel PWM ingeschakeld, zal de D11-pin een bereik van vol . uitvoerentages van 0V tot 5V, afhankelijk van het spiltoerental G-code-commando. 0V geeft in dit geval spil uit. Aangezien deze pinnen allemaal toepassingsafhankelijk zijn in hoe ze worden gebruikt, laten we het aan u over om te bepalen hoe u deze voor uw machine bedient en gebruikt. U kunt ook de spil en de koelvloeistofregelbron hacken files om eenvoudig te wijzigen hoe ze werken en vervolgens uw aangepaste Grbl te compileren en uploaden via de Arduino IDE.

Diagnostisch LED-lampje

Commerciële CNC-machines hebben vaak ten minste één diagnostisch LED-baken in het geval van een machinecrash of alarmcode. Voor degenen die nieuw zijn bij GRBL en DIY CNC-machines, is deze functie erg handig om te weten wanneer een ALARM_STATE is opgetreden (zoals het niet thuisbrengen van de machine met homing- en eindschakelaars ingeschakeld).

GRBL heeft standaard geen diagnostisch LED-lampje. Dit komt omdat de Ardunio UNO met de 328p-chip beperkte programmeerruimte heeft en bijna al die ruimte momenteel wordt gebruikt (maar niet alle!). Niet elke gewenste functie kan worden geïmplementeerd op zo'n apparaat met weinig geheugen, dus soms moeten er offers worden gebracht.

Bovendien worden momenteel alle beschikbare I/O-poorten gebruikt en is er minimaal één I/O-pin nodig voor zo'n lamp. Gelukkig kan deze functionaliteit eenvoudig worden toegevoegd door de GRBL C-code te hacken en is er nog ongeveer 3% geheugen beschikbaar op de 328p-chip!

Veel machines gebruiken momenteel de optionele MIST COOLANT-functie op Analog 4 niet, dus we kunnen deze pin gemakkelijk opnieuw definiëren voor ons gebruik. Een alternatieve methode zou kunnen zijn om dergelijke LED-lampjes op een externe Arduino te coderen, die dan alle I/O-poorten beschikbaar heeft waar men zoveel LED-lampjes/zoemers kan aansluiten als nodig is en via serieel of I2C kan communiceren.

Ga als volgt te werk om de GRBL-broncode te hacken om de ALARM-LED op het CNDY-schild te gebruiken:

Stap 1: Open op Linux of Macintosh een teksteditor (gebruik Notepad++ in Windows) en bewerk de cpu_map.h file:

Verander dit:

// Definieer overstromings- en mistkoelvloeistof voor uitvoerpinnen.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno analoge pin 3
#define COOLANT_MIST_DDR DDRC
#define COOLANT_MIST_PORT PORTC
#define COOLANT_MIST_BIT 4 // Uno analoge pin 4

Hierop:

// Definieer overstromings- en mistkoelvloeistof voor uitvoerpinnen.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno analoge pin 3
//#define COOLANT_MIST_DDR DDRC
//#define COOLANT_MIST_PORT PORTC
//#define COOLANT_MIST_BIT 4 // Uno analoge pin 4

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

// Definieer ALARM LED-UITGANG
#define SIGNAL_LIGHT_DDR DDRC
#define SIGNAL_LIGHT_PORT POORTC
#define SIGNAL_LIGHT_BIT 4 // Uno analoge pin 4

// #define signal_light (aan) (SIGNAL_LIGHT_DDR |= (1< .)

// #define signal_light_init() signal_light (uit)

#define signaal_licht_init signaal_licht_uit

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

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

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

Stap 2: Open op Linux of Macintosh een teksteditor (gebruik Notepad++ in Windows) en bewerk de protocol.c file:

Verander dit:

// Voert runtime-opdrachten uit, indien nodig. Deze functie werkt voornamelijk als de status van Grbl
// machine en bestuurt de verschillende realtime functies die Grbl te bieden heeft.
// OPMERKING: Verander dit niet tenzij u precies weet wat u doet! void protocol_exec_rt_system()
{

uint8_t rt_exec; // Temp-variabele om te voorkomen dat vluchtig meerdere keren wordt gebeld.
rt_exec = sys_rt_exec_alarm; // Kopieer vluchtige sys_rt_exec_alarm.
if (rt_exec) {// Voer alleen in als een bitvlag waar is

// Systeemalarm. Alles is afgesloten door iets dat ernstig mis is gegaan. Verslag doen van
// de bron van de fout voor de gebruiker. Indien kritiek, wordt Grbl uitgeschakeld door een oneindig in te voeren
// lus tot systeem reset/afbreken.

sys.state = STATE_ALARM; // Stel systeemalarmstatus in

report_alarm_message(rt_exec);

Hierop:

// Voert runtime-opdrachten uit, indien nodig. Deze functie werkt voornamelijk als de status van Grbl
// machine en bestuurt de verschillende realtime functies die Grbl te bieden heeft.
// OPMERKING: Verander dit niet tenzij u precies weet wat u doet!
ongeldig protocol_exec_rt_system()
{

uint8_t rt_exec; // Temp-variabele om te voorkomen dat vluchtig meerdere keren wordt gebeld.
rt_exec = sys_rt_exec_alarm; // Kopieer vluchtige sys_rt_exec_alarm.

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

// Definieer ALARM LED-UITGANG
signal_light_init; //init LED in uit-status
als (sys.state==STATE_ALARM) {signal_light_on;}
anders if (sys.state!=STATE_ALARM) {signal_light_off;}
// anders {signal_light_off;}

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

if (rt_exec) {// Voer alleen in als een bitvlag waar is
// Systeemalarm. Alles is afgesloten door iets dat ernstig mis is gegaan. Verslag doen van
// de bron van de fout voor de gebruiker. Indien kritiek, wordt Grbl uitgeschakeld door een oneindig in te voeren
// lus tot systeem reset/afbreken.
sys.state = STATE_ALARM; // Stel systeemalarmstatus in
report_alarm_message(rt_exec);

Wat we zojuist hebben gedaan, was de gedefinieerde functie van Analog 4 (A4) veranderen van de optionele mistkoelvloeistof in onze LED-lamp. Vervolgens schreven we code in C om (PC4) Port C 4 (Analog4) hoog of laag te kunnen schrijven, afhankelijk van of er werd gezegd dat het aan of uit moest zijn. Vervolgens schreven we een eenvoudige if-else-verklaring om de GRBL-statusmachine te controleren en ons te vertellen of we ons in een actieve ALARM_STATE bevinden en wanneer we de LED moeten inschakelen.

Als alles goed gaat, kunnen we dan compileren in de Arduino IDE, de code uploaden en we hebben nu een werkend ALARM_STATE LED-diagnoselampje! We kunnen optioneel een externe LED Beacon Light aansluiten om hoog boven de machine te plaatsen die zichtbaar is aan de andere kant van de kamer.

Mogelijke problemen

Idealiter worden deze wijzigingen gedaan met de meest recente grbl-broncode die beschikbaar is en worden gemaakt VOORDAT de grbl-"bibliotheek" aan de Arduino IDE wordt toegevoegd. Als je al grbl in je Arduino-bibliothekenmap hebt, moet je handmatig bladeren en de grbl-map verwijderen of de files binnen de arduino-bibliotheek. Op mijn Linux-machine is de "bibliotheek" te vinden op: /home/andrew/Arduino/libraries/grbl. De meest recente grbl-release is te vinden op: https://github.com/gnea/grbl/releases. Men kan de beschikbare zip downloaden file en een map met de naam grbl-1.1h.20190825 is binnenin te vinden. In deze map zal een map met de naam grbl degene zijn die u aan de Arduino IDE wilt toevoegen als een "bibliotheek" "zip file”. Zorg ervoor dat u uw wijzigingen aanbrengt in cpu_map.h en protocol.c files voordat je het toevoegt aan de Arduino IDE. Anders moet u de files in uw bibliotheken/grbl-map. Er is een bekende bug voor de functie met twee assen in de grbl-1.1h zip file, het is opgelost als je in plaats daarvan de hoofdvertakking grbl downloadt. https://github.com/gnea/grbl

CNDY Shield-updates en fouten

*V1.1: heeft een kleine zeefdrukfout waarbij Spindel PWM en Spindelrichting zijn verwisseld. Dit is gecorrigeerd in V1.2.

V1.2 heeft niet langer de optionele ruisonderdrukkingscondensatoren op de 5v-lijn en heeft nieuwe op de andere invoerknoplijnen. V1.2 heeft een optionele LED die parallel is aangesloten op de Spindle PWM. Dit kan handig zijn voor laseropstellingen voor de veiligheid.

Bijgewerkt 28 aug-2021

Aanvullende informatie is te vinden op: RabbitMountainResearch.com.

Documenten / Bronnen

CNDY Shield GRBL CNC Arduino UNO [pdf] Gebruikershandleiding
GRBL CNC, Arduino UNO

Referenties

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *