Кіраўніцтва карыстальніка CNDY Shield GRBL CNC Arduino UNO

V1.2

CNDY Shield GRBL CNC

Распиновка GRBL на Arduino Uno

Аналагавы 0 = кнопка перапынення*
Аналагавы 1 = Кнопка ўтрымання падачы* (SAFETY_DOOR сумесна з утрыманнем падачы. Уключана вызначэннем канфігурацыі)
Аналаг 2 = кнопка запуску/перазапуску цыкла*
Аналаг 3 = Выхад уключэння астуджальнай вадкасці
Аналаг 4 = (неабавязкова) Выхад астуджальнай вадкасці туману (або дыягнастычны індыкатар ALARM_STATE**)
Аналагавы 5 = Уваход зонда*
Лічбавы 13 = Напрамак шпіндзеля
Лічбавы 12 = канцавыя выключальнікі па восі Z*
Лічбавы 11 = шпіндзель / ШІМ з уключэннем лазера
Лічбавы 10 = канцавыя выключальнікі, вось Y*
Лічбавы 9 = канцавыя выключальнікі па восі X*
Лічбавы 8 = крокавыя рухавікі ўключыць / выключыць
Лічбавы 7 = кірунак восі Z
Лічбавы 6 = Напрамак восі Y
Лічбавы 5 = кірунак восі X
Лічбавы 4 = крокавая імпульсная вось Z
Лічбавы 3 = крокавая імпульсная вось Y
Лічбавы 2 = Пакрокавая імпульсная вось X

Дадатковая функцыя падвойнай восі

Аналагавы штыфт Uno 3 = вось А DUAL_DIRECTION (раней быў выхад уключэння астуджальнай вадкасці)
Аналагавы штыфт Uno 4 = DUAL_STEP па восі A (раней быў дадатковы выхад туману астуджальнай вадкасці)
Uno Digital 13 = Астуджальная вадкасць (замяняе кірунак шпіндзеля.)

Пасля ўстаноўкі рэпазітара grbl як бібліятэкі ў Arduino раскаментуйце наступныя радкі ў config.h file у тэчцы бібліятэкі grbl.

#define ENABLE_DUAL_AXIS // Па змаўчанні адключана. Раскаментуйце, каб уключыць.

// Выберыце адну вось для адлюстравання іншага рухавіка. У цяперашні час падтрымліваюцца толькі восі X і Y.
#define DUAL_AXIS_SELECT Y_AXIS // Павінен быць X_AXIS або Y_AXIS

ЗАЎВАГА: Двухвосевае абмежаванне сумесна з (вось Z) абмежавальны штыфт па змаўчанні.

Для працы функцыі падвойнай восі патрабуецца незалежны крокавы імпульсны штыфт. Штыфт незалежнага напрамку не з'яўляецца абсалютна неабходным, але палягчае лёгкае інвертаванне кірунку з дапамогай налады Grbl $$. Гэтыя штыфты замяняюць шпількі напрамкі шпіндзеля і дадатковыя штыфты туману астуджальнай вадкасці.

Гэтая дадатковая функцыя падвойнай восі прызначана ў першую чаргу для цыкла саманавядзення, каб незалежна вызначыць месцазнаходжанне двух бакоў партала з падвойным рухавіком, гэта значыць самавыраўноўвання. Гэта патрабуе дадатковага канцавога выключальніка для кланаванага рухавіка. Для таго, каб стварыць квадрат, абодва канцавыя выключальнікі на кланаванай восі павінны быць фізічна размешчаны так, каб спрацоўваць, калі партал знаходзіцца ў квадратным становішчы. Настойліва рэкамендую трымаць рухавікі заўсёды ўключанымі, каб партал заставаўся квадратным з наладай $1=255.

Для Grbl на Arduino Uno кланаваны канцавы выключальнік восі павінен быць абагулены і падлучаны да канцавога штыфта z-восі з-за адсутнасці даступных кантактаў. Цыкл саманавядзення павінен змяшчаць вось z і кланаваную вось у розных цыклах, што ўжо з'яўляецца канфігурацыяй па змаўчанні.

Функцыя падвойнай восі працуе шляхам кланавання выхаду кроку восі на іншую пару штыфтоў кроку і кірунку. Крокавы імпульс і кірунак кланаванага рухавіка можна ўсталяваць незалежна ад рухавіка галоўнай восі. Аднак для эканоміі каштоўнай флэш-памяці гэтая двухвосевая функцыя павінна выкарыстоўваць тыя ж параметры (крок/мм, максімальная хуткасць, паскарэнне), што і бацькоўскі рухавік. Гэта НЕ асаблівасць незалежнай чацвёртай восі. Толькі маторны клон.

ПАПЯРЭДЖАННЕ: Не забудзьцеся праверыць кірунак вашых двухвосевых рухавікоў! Яны павінны быць настроены на рух у адным кірунку ПЕРАД запускам першага цыкла саманавядзення або любога доўгага руху! Рухавікі, якія рухаюцца ў процілеглых напрамках, могуць сур'ёзна пашкодзіць вашу машыну! Выкарыстоўвайце гэтую функцыю падвойнай восі на свой страх і рызыку.

УВАГА: гэтая функцыя патрабуе прыблізна 400 байт флэш-памяці. У некаторых канфігурацыях можа не хапіць флэш-памяці для ўстаноўкі на Arduino 328p/Uno. Падтрымліваюцца толькі восі X і Y. Рэжым зменнага шпіндзеля/лазера падтрымліваецца, але толькі для адной опцыі канфігурацыі. Ядро XY, штыфт напрамкі шпіндзеля і астуджальная вадкасць M7 адключаны/не падтрымліваюцца.

Каб прадухіліць зрушэнне падвойнай восі ў цыкле саманавядзення, калі адзін ліміт спрацоўвае раней за другі з-за няспраўнасці пераключальніка або шуму, цыкл вярчэння да самага пачатку аўтаматычна спыняецца, калі канцавы выключальнік другога рухавіка не спрацоўвае ў межах трох параметраў адлегласці, вызначаных ніжэй. Працэнт даўжыні восі аўтаматычна вылічыць адлегласць адмовы ў працэнтахtage ад максімальнага перамяшчэння іншай недвайной восі, г.зн. калі выбар падвойнай восі X_AXIS складае 5.0%, то адлегласць збою будзе вылічана як 5.0% ад максімальнага перамяшчэння па восі y. Максімальная і мінімальная дыстанцыя адмовы - гэта межы таго, наколькі далёкая або малая дапушчальная адлегласць адмовы.

#define DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0 // Float (працэнты)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0 // Плавае (мм)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5 // Плавае (мм)

Заўвага для порта I2C

Analog 4 (A4) і Analog 5 (A5) выкарыстоўваюцца для порта I2C на Arduino Uno або 328p. Гэта азначае, што пакуль вы выкарыстоўваеце функцыю зонда па змаўчанні, туман астуджальнай вадкасці, двухвосевы або карыстацкі святлодыёдны святлодыёд ALARM_STATE, выкарыстоўваць I2C будзе немагчыма. Сувязь з іншым Arduino для павелічэння функцыянальнасці павінна ажыццяўляцца праз паслядоўнае злучэнне на D0 і D1.

Пачатак працы (драйверы Stepper)

Па-першае, каб падключыць крокавыя рухавікі да Grbl, вам спатрэбяцца некаторыя драйверы крокавых рухавікоў для харчавання крокавых рухавікоў і падключэння ўваходаў драйвераў да кантактаў кантролера Arduino. Ёсць некалькі драйвераў, якія могуць зрабіць гэта, даступныя ў выглядзе цалкам гатовых, часткова гатовых або цалкам зробленых сваімі рукамі. Крокавым драйверам трэба будзе падзяліцца штыфт уключэння крокавага кроку (D8) да адпаведных кантактаў уключэння, у той час як штыфты накіравання і крокавага імпульсу (D2-D7) трэба будзе падключыць да адпаведных кантактаў на драйверах. Проста пераканайцеся, што ўсе вашы драйверы і Arduino падзяляюць агульную мову (зорка заземлена з магутнасцю драйвера рухавіка). Гэта прыкладна ўсё, што вам спатрэбіцца для пачатку.

Навядзенне і канчатковыя выключальнікі

Пасля, як толькі вы вырашыце, што гатовыя ці хочаце каб уключыць саманавядзенне і/або жорсткія абмежаванні, вам трэба будзе падключыць a нармальна адкрыты канцавы выключальнік да кожнай з абмежавальных шпілек (D9, D10 і D12). Навядзенне і жорсткія абмежаванні выкарыстоўваюць адны і тыя ж перамыкачы. Гэтыя абмежавальныя штыфты ўжо ўтрымліваюцца высока з дапамогай унутранага рэзістара падцягвання, таму ўсё, што вам трэба зрабіць, гэта падключыць іх да зазямлення. Такім чынам, калі вы замыкаеце выключальнік, выключальнік прыцягне абмежавальны штыфт да зямлі. Калі вы жадаеце мець жорсткія канчатковыя выключальнікі на абодвух канцах ходу восі, проста падключыце два канчатковыя выключальнікі паралельна да канцавога штыфта восі і зямлі. Упэўніцеся, што вы ўсталявалі выключальнікі, перш чым спрабаваць выканаць цыкл саманавядзення, і пераканайцеся, што вы практыкуеце правільныя метады праводкі, каб мінімізаваць знешнія электрычныя шумы на ўваходных кантактах.

Добрая практыка праводкі можа ўключаць выкарыстанне экранаваных кабеляў або клamp-на ферытавых стрыжнях кабеля і з выкарыстаннем некалькіх кандэнсатараў 0.1 мкФ паралельна з канцавымі выключальнікамі для паніжэння дрыгваў / фільтрацыі шуму. Таксама можа быць добрай ідэяй трымаць правады рухавіка далей ад правадоў канцавога выключальніка.

Пры жаданні можна наладзіць GRBL на выкарыстанне нармальна замкнёных канцавых выключальнікаў. Некаторыя лічаць, што нармальна закрытыя канцавыя выключальнікі могуць дапамагчы паменшыць катастрафічны збой у выпадку адмовы канцавога выключальніка. Многія карыстальнікі ўвогуле не выкарыстоўваюць канечныя выключальнікі і замест гэтага выбіраюць праграмныя абмежаванні.

Кнопкі кіравання

У Grbl v0.8 і больш позніх версіях ёсць распіноўкі каманд запуску цыкла, утрымання падачы і скіду падчас выканання, так што вы можаце мець фізічныя кнопкі кіравання на сваёй машыне. Гэтак жа, як і абмежавальныя штыфты, гэтыя штыфты ўтрымліваюцца на высокім узроўні з дапамогай унутранага падцягваючага рэзістара, так што ўсё, што вам трэба зрабіць, гэта падключыць нармальна адкрыты выключальнік да кожнага штыфта і да зазямлення. Яшчэ раз пераканайцеся, што вы практыкуеце правільныя метады праводкі, каб мінімізаваць знешнія электрычныя шумы на ўваходных кантактах.

Шпіндзель і шпількі астуджальнай вадкасці

Калі ў вас ёсць жаданне або неабходнасць шпіндзеля (D13) або кантроль астуджальнай вадкасці (A3 і A4) , Grbl будзе пераключаць гэтыя выхадныя кантакты на высокі або нізкі ўзровень у залежнасці ад каманд G-кода, якія вы адпраўляеце ў Grbl. З версіяй 0.9+ і ШІМ з пераменным шпіндзелем уключаны штыфт D11 будзе выдаваць дыяпазон гучнасціtagад 0 В да 5 В у залежнасці ад каманды G-кода хуткасці шпіндзеля. У гэтым выпадку 0 В паказвае на адключэнне шпіндзеля. Паколькі ўсе гэтыя штыфты залежаць ад таго, як яны выкарыстоўваюцца, мы пакінем вам вырашаць, як кіраваць імі і выкарыстоўваць іх для вашай машыны. Вы таксама можаце ўзламаць шпіндзель і крыніца кіравання астуджальнай вадкасцю files, каб лёгка змяніць іх працу, а затым скампіляваць і загрузіць зменены Grbl праз Arduino IDE.

Дыягнастычны святлодыёдны свяцільнік

Камерцыйныя станкі з ЧПУ часта маюць па меншай меры адзін дыягнастычны святлодыёдны маяк у выпадку аварыі машыны або кода сігналізацыі. Для тых, хто толькі пачынае працаваць са станкамі з ЧПУ GRBL і DIY, гэтая функцыя вельмі карысная, каб ведаць, калі ўзнік ALARM_STATE (напрыклад, немагчымасць прывесці станок у стан з уключаным саманавядзеннем і канчатковымі выключальнікамі).

GRBL па змаўчанні не мае дыягнастычнага святлодыёда. Гэта таму, што Ardunio UNO з чыпам 328p мае абмежаваную прастору для праграмавання, і амаль уся гэтая прастора зараз выкарыстоўваецца (хоць і не ўся!). Не кожная жаданая функцыя можа быць рэалізавана на прыладзе з такім невялікім аб'ёмам памяці, таму часам даводзіцца чымсьці ахвяраваць.

Акрамя таго, у цяперашні час выкарыстоўваюцца ўсе даступныя парты ўводу/вываду, і для такой лямпы неабходны хаця б адзін кантакт уводу/вываду. На шчасце, гэтую функцыянальнасць можна лёгка дадаць, узламаўшы код GRBL C, і на чыпе 3p застаецца каля 328% памяці!

Многія машыны ў цяперашні час не выкарыстоўваюць дадатковую функцыю MIST COOLANT на Analog 4, таму мы можам лёгка перавызначыць гэты штыфт для нашага выкарыстання. Альтэрнатыўным метадам можа быць закадзіраванне такіх святлодыёдных ліхтароў на знешняй Arduino, у якой будуць даступныя ўсе парты ўводу/вываду, куды можна будзе падключаць колькі заўгодна святлодыёдных ліхтароў / зуммераў і мець магчымасць звязвацца праз паслядоўны або I2C.

Каб узламаць зыходны код GRBL для выкарыстання святлодыёда ALARM на шчыце CNDY, зрабіце наступнае:

крок 1: У Linux ці Macintosh адкрыйце тэкставы рэдактар ​​(у Windows выкарыстоўвайце Notepad++) і адрэдагуйце cpu_map.h file:

Змяніць гэта:

// Вызначце выхадныя штыфты ўключэння паводкі і туману астуджальнай вадкасці.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3
#define COOLANT_MIST_DDR DDRC
#define COOLANT_MIST_PORT PORTC
#define COOLANT_MIST_BIT 4 // Uno Analog Pin 4

Да гэтага:

// Вызначце выхадныя штыфты ўключэння паводкі і туману астуджальнай вадкасці.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3
//#вызначэнне COOLANT_MIST_DDR DDRC
//#вызначэнне COOLANT_MIST_PORT PORTC
//#define COOLANT_MIST_BIT 4 // Uno Analog Pin 4

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

// Вызначце ВЫХАД СВЯДЗЁННАГА СВЯДОТА
#define SIGNAL_LIGHT_DDR DDRC
#define SIGNAL_LIGHT_PORT PORTC
#define SIGNAL_LIGHT_BIT 4 // Uno Analog Pin 4

// #define signal_light(on) (SIGNAL_LIGHT_DDR |= (1<

// #вызначэнне signal_light_init() signal_light(off)

#define signal_light_init signal_light_off

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

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

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

крок 2: У Linux ці Macintosh адкрыйце тэкставы рэдактар ​​(у Windows выкарыстоўвайце Notepad++) і адрэдагуйце пратакол.с file:

Змяніць гэта:

// Выконвае каманды падчас выканання, калі патрабуецца. Гэтая функцыя галоўным чынам дзейнічае як стан Grbl
// машына і кіруе рознымі функцыямі ў рэжыме рэальнага часу, якія можа прапанаваць Grbl.
// УВАГА: Не змяняйце гэта, калі вы дакладна не ведаеце, што робіце! несапраўдны protocol_exec_rt_system()
{

uint8_t rt_exec; // Часовая зменная, каб пазбегнуць шматразовага выкліку volatile.
rt_exec = sys_rt_exec_alarm; // Скапіруйце зменлівы sys_rt_exec_alarm.
if (rt_exec) { // Увядзіце, толькі калі любы бітавы сцяг праўдзівы

// Сістэмная сігналізацыя. Усё было спынена з-за чагосьці, што пайшло сур'ёзна не так. Справаздача
// крыніца памылкі для карыстальніка. Калі гэта крытычна, Grbl адключаецца, увёўшы infinite
// цыкл да скіду/спарвання сістэмы.

sys.state = STATE_ALARM; // Усталяваць стан сігналізацыі сістэмы

паведамленне_трывожнага_паведамлення(rt_exec);

Да гэтага:

// Выконвае каманды падчас выканання, калі патрабуецца. Гэтая функцыя галоўным чынам дзейнічае як стан Grbl
// машына і кіруе рознымі функцыямі ў рэжыме рэальнага часу, якія можа прапанаваць Grbl.
// УВАГА: Не змяняйце гэта, калі вы дакладна не ведаеце, што робіце!
несапраўдны protocol_exec_rt_system()
{

uint8_t rt_exec; // Часовая зменная, каб пазбегнуць шматразовага выкліку volatile.
rt_exec = sys_rt_exec_alarm; // Скапіруйце зменлівы sys_rt_exec_alarm.

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

// Вызначце ВЫХАД СВЯДЗЁННАГА СВЯДОТА
сігнальны_святло_ініцыяванне; //ініцыялізацыя святлодыёда ў выключаным стане
if (sys.state==STATE_ALARM) {signal_light_on;}
інакш, калі (sys.state!=STATE_ALARM) {signal_light_off;}
// яшчэ {signal_light_off;}

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

if (rt_exec) { // Увядзіце, толькі калі любы бітавы сцяг праўдзівы
// Сістэмная сігналізацыя. Усё было спынена з-за чагосьці, што пайшло сур'ёзна не так. Справаздача
// крыніца памылкі для карыстальніка. Калі гэта крытычна, Grbl адключаецца, увёўшы infinite
// цыкл да скіду/спарвання сістэмы.
sys.state = STATE_ALARM; // Усталяваць стан сігналізацыі сістэмы
паведамленне_трывожнага_паведамлення(rt_exec);

Тое, што мы толькі што зрабілі, гэта змянілі вызначаную функцыю Analog 4 (A4) з дадатковай астуджальнай вадкасці туману на нашу святлодыёдную лямпу. Потым мы напісалі код на C, каб мець магчымасць запісваць (PC4) порт C 4 (Analog4) высокім або нізкім у залежнасці ад таго, быў ён уключаны або выключаны. Затым мы напісалі простую інструкцыю if-else, каб праверыць канчатковы аўтамат GRBL і сказаць нам, ці знаходзімся мы ў актыўным стане ALARM_STATE, і калі мы павінны ўключыць святлодыёд.

Калі ўсё пойдзе добра, мы можам скампіляваць у Arduino IDE, загрузіць код, і цяпер у нас будзе працоўны дыягнастычны святлодыёд ALARM_STATE! Пры жаданні мы можам падключыць знешні святлодыёдны маяк, каб размясціць яго высока над машынай, каб ён быў бачны па ўсім пакоі.

Магчымыя праблемы

У ідэале гэтыя змены будуць унесены з самым сучасным даступным зыходным кодам grbl і зроблены ПЕРАД даданнем «бібліятэкі» grbl у IDE Arduino. Калі ў вашай тэчцы бібліятэк Arduino ужо ёсць grbl, вам трэба будзе ўручную праглядзець і выдаліць тэчку grbl або адрэдагаваць files у бібліятэцы arduino. На маёй машыне Linux «бібліятэка» знаходзіцца па адрасе: /home/andrew/Arduino/libraries/grbl. Самы апошні выпуск grbl можна знайсці па адрасе https://github.com/gnea/grbl/releases. Можна спампаваць даступны zip file і тэчку з назвай grbl-1.1h.20190825 можна знайсці ўнутры. Унутры гэтай папкі папка з імем grbl будзе той, якую вы захочаце дадаць у IDE Arduino як «бібліятэку» «zip». file». Не забудзьцеся ўнесці змены ў cpu_map.h і protocol.c files, перш чым дадаць яго ў Arduino IDE. У адваротным выпадку вам трэба будзе адрэдагаваць files у вашай тэчцы libraries/grbl. Існуе вядомая памылка функцыі падвойнай восі ў grbl-1.1h zip file, гэта выпраўлена, калі вы замест гэтага спампоўваеце галоўную галінку grbl. https://github.com/gnea/grbl

Абнаўленні і памылкі CNDY Shield

*V1.1: ёсць невялікая памылка шаўкаграфіі, калі шпіндзель ШІМ і кірунак шпіндзеля памяняліся месцамі. Гэта было выпраўлена ў V1.2.

V1.2 больш не мае дадатковых кандэнсатараў шумапрыглушэння на лініі 5v, і мае новыя на іншых лініях кнопак уводу. V1.2 мае дадатковы святлодыёд, падключаны паралельна ШІМ шпіндзеля. Гэта можа быць карысна для лазерных установак для бяспекі.

Абноўлена 28 жніўня 2021 г

Дадатковую інфармацыю можна знайсці на RabbitMountainResearch.com.

Дакументы / Рэсурсы

CNDY Shield GRBL CNC Arduino UNO [pdfКіраўніцтва карыстальніка
GRBL CNC, Arduino UNO

Спасылкі

Пакінуць каментар

Ваш электронны адрас не будзе апублікаваны. Абавязковыя для запаўнення палі пазначаны *