CNDY Shield GRBL CNC Arduino UNO មគ្គុទ្ទេសក៍អ្នកប្រើប្រាស់
វី៣៥

GRBL pinout នៅលើ Arduino Uno
អាណាឡូក 0 = ប៊ូតុងបោះបង់*
អាណាឡូក 1 = Feed Hold Button* (SAFETY_DOOR ត្រូវបានចែករំលែកជាមួយនឹងការសង្កត់មតិព័ត៌មាន។ បើកដោយ config define)
អាណាឡូក 2 = ប៊ូតុងចាប់ផ្តើម / ចាប់ផ្តើមឡើងវិញ*
អាណាឡូក ២ = Coolant បើកទិន្នផល
អាណាឡូក ២ = (ស្រេចចិត្ត) ទិន្នផលទឹកត្រជាក់អ័ព្ទ (ឬពន្លឺវិនិច្ឆ័យ ALARM_STATE **)
អាណាឡូក 5 = ការបញ្ចូលការស៊ើបអង្កេត*
ឌីជីថល 13 = ទិសដៅ spindle
ឌីជីថល 12 = Limit Switches Z-Axis*
ឌីជីថល 11 = Spindle / Laser បើក PWM
ឌីជីថល 10 = ដែនកំណត់ប្តូរអ័ក្ស Y*
ឌីជីថល 9 = Limit Switches X-Axis*
ឌីជីថល 8 = Stepper Motors បើក/បិទ
ឌីជីថល 7 = ទិស Z-អ័ក្ស
ឌីជីថល 6 = ទិស Y-អ័ក្ស
ឌីជីថល 5 = ទិស X-Axis
ឌីជីថល 4 = Step Pulse Z-Axis
ឌីជីថល 3 = ជំហានជីពចរ Y-អ័ក្ស
ឌីជីថល 2 = Step Pulse X-Axis
មុខងារអ័ក្សពីរស្រេចចិត្ត
Uno Analog Pin 3 = A-axis DUAL_DIRECTION (ធ្លាប់ជា Coolant បើកលទ្ធផល)
Uno Analog Pin 4 = A-axis DUAL_STEP (ធ្លាប់ជាជម្រើសបញ្ចេញ Mist Coolant Output)
Uno Digital 13 = Coolant (ជំនួសទិសដៅ spindle ។ )
បន្ទាប់ពីដំឡើងឃ្លាំង grbl ជាបណ្ណាល័យក្នុង Arduino សូមមិនបញ្ចេញមតិលើបន្ទាត់ខាងក្រោមក្នុង config.h file នៅក្នុងថតបណ្ណាល័យ grbl ។
#កំណត់ ENABLE_DUAL_AXIS // បានបិទលំនាំដើម។ គ្មានមតិដើម្បីបើក.
// ជ្រើសរើសអ័ក្សមួយដើម្បីឆ្លុះម៉ូទ័រផ្សេងទៀត។ មានតែអ័ក្ស X និង Y ប៉ុណ្ណោះដែលត្រូវបានគាំទ្រនៅពេលនេះ។
#កំណត់ DUAL_AXIS_SELECT Y_AXIS // ត្រូវតែជា X_AXIS ឬ Y_AXIS
ចំណាំ៖ ដែនកំណត់អ័ក្សពីរត្រូវបានចែករំលែកជាមួយ (អ័ក្ស Z) កំណត់ម្ជុលតាមលំនាំដើម។
មុខងារអ័ក្សពីរទាមទារម្ជុលជីពចរជំហានឯករាជ្យដើម្បីដំណើរការ។ ម្ជុលទិសដៅឯករាជ្យគឺមិនចាំបាច់ជាដាច់ខាត ប៉ុន្តែជួយសម្រួលដល់ការបញ្ច្រាសទិសដៅងាយស្រួលជាមួយនឹងការកំណត់ Grbl $$។ ម្ជុលទាំងនេះជំនួសទិសដៅ spindle និងម្ជុលទឹកត្រជាក់ស្រេចចិត្ត។
លក្ខណៈពិសេសអ័ក្សពីរស្រេចចិត្តនេះគឺជាចម្បងសម្រាប់វដ្តផ្ទះដើម្បីកំណត់ទីតាំងពីរនៃ gantry ម៉ូទ័រពីរដោយឯករាជ្យ ពោលគឺការបំបែកខ្លួនឯង។ វាទាមទារកុងតាក់កំណត់បន្ថែមសម្រាប់ម៉ូទ័រក្លូន។ ដើម្បីការ៉េដោយខ្លួនឯង កុងតាក់ដែនកំណត់ទាំងពីរនៅលើអ័ក្សក្លូនត្រូវតែមានទីតាំងជាក់ស្តែងដើម្បីកេះនៅពេលដែល gantry មានរាងការ៉េ។ សូមផ្តល់អនុសាសន៍យ៉ាងខ្លាំងឱ្យរក្សាម៉ូទ័រឱ្យដំណើរការជានិច្ច ដើម្បីធានាថា gantry ស្ថិតនៅការ៉េជាមួយនឹងការកំណត់ $1=255 ។
សម្រាប់ Grbl នៅលើ Arduino Uno កុងតាក់ដែនកំណត់អ័ក្សក្លូនត្រូវតែចែករំលែកជាមួយ និងភ្ជាប់ជាមួយម្ជុលកំណត់អ័ក្ស z ដោយសារកង្វះម្ជុលដែលមាន។ វដ្ដដើមត្រូវតែដាក់អ័ក្ស z និងអ័ក្សក្លូនក្នុងវដ្ដផ្សេងគ្នា ដែលជាការកំណត់លំនាំដើមរួចហើយ។
មុខងារអ័ក្សពីរដំណើរការដោយការក្លូនទិន្នផលជំហានអ័ក្សមួយទៅម្ជុលជំហាន និងទិសដៅគូផ្សេងទៀត។ ជីពចរជំហាននិងទិសដៅនៃម៉ូទ័រក្លូនអាចត្រូវបានកំណត់ដោយឯករាជ្យនៃម៉ូទ័រអ័ក្សមេ។ ទោះយ៉ាងណាក៏ដោយ ដើម្បីរក្សាទុកពន្លឺ និងអង្គចងចាំដ៏មានតម្លៃ មុខងារអ័ក្សពីរនេះត្រូវតែចែករំលែកការកំណត់ដូចគ្នា (ជំហាន/មម ល្បឿនអតិបរមា ការបង្កើនល្បឿន) ជាម៉ូទ័រមេ។ នេះមិនមែនជាលក្ខណៈពិសេសសម្រាប់អ័ក្សទីបួនឯករាជ្យទេ។ មានតែម៉ាស៊ីនក្លូនប៉ុណ្ណោះ។
ការព្រមាន៖ ត្រូវប្រាកដថាសាកល្បងទិសដៅនៃម៉ូទ័រអ័ក្សពីររបស់អ្នក! ពួកគេត្រូវតែត្រូវបានរៀបចំដើម្បីផ្លាស់ទីទិសដៅដូចគ្នាមុនពេលដំណើរការវដ្តផ្ទះដំបូងរបស់អ្នក ឬចលនាដ៏វែងណាមួយ! ម៉ូតូដែលផ្លាស់ទីក្នុងទិសដៅផ្ទុយអាចបណ្តាលឱ្យខូចខាតធ្ងន់ធ្ងរដល់ម៉ាស៊ីនរបស់អ្នក! ប្រើមុខងារអ័ក្សពីរនេះដោយហានិភ័យផ្ទាល់ខ្លួនរបស់អ្នក។
ចំណាំ៖ មុខងារនេះត្រូវការពន្លឺប្រហែល 400 បៃ។ ការកំណត់រចនាសម្ព័ន្ធមួយចំនួនអាចអស់ពន្លឺ ដើម្បីបំពាក់លើ Arduino 328p/Uno ។ មានតែអ័ក្ស X និង Y ប៉ុណ្ណោះដែលត្រូវបានគាំទ្រ។ របៀប spindle/laser អថេរ IS ត្រូវបានគាំទ្រ ប៉ុន្តែសម្រាប់ជម្រើសកំណត់រចនាសម្ព័ន្ធមួយប៉ុណ្ណោះ។ ស្នូល XY, ម្ជុលទិសដៅ spindle, និង M7 mist coolant ត្រូវបានបិទ/មិនគាំទ្រ។
ដើម្បីបងា្ករវដ្តនៃផ្ទះពីការច្រៀកអ័ក្សពីរ នៅពេលដែលដែនកំណត់មួយចាប់ផ្តើមមុនមួយទៀតដោយសារការបរាជ័យនៃកុងតាក់ ឬសំឡេងរំខាន នោះវដ្តនៃផ្ទះនឹងបោះបង់ដោយស្វ័យប្រវត្តិ ប្រសិនបើកុងតាក់ដែនកំណត់របស់ម៉ូទ័រទីពីរមិនកេះក្នុងប៉ារ៉ាម៉ែត្រចម្ងាយបីដែលបានកំណត់ខាងក្រោម។ ភាគរយប្រវែងអ័ក្សនឹងគណនាចម្ងាយបរាជ័យដោយស្វ័យប្រវត្តិជាភាគរយtage នៃការធ្វើដំណើរអតិបរមានៃអ័ក្សពីរផ្សេងទៀត ពោលគឺប្រសិនបើអ័ក្សពីរជ្រើសរើសគឺ X_AXIS នៅ 5.0% នោះចម្ងាយដែលបរាជ័យនឹងត្រូវបានគណនាជា 5.0% នៃការធ្វើដំណើរអតិបរមាអ័ក្ស y ។ Fail distance max និង min គឺជាដែនកំណត់នៃចម្ងាយដែលបរាជ័យត្រឹមត្រូវ។
#define DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0 // អណ្តែត (ភាគរយ)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0 // អណ្តែត (មម)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5 // អណ្តែត (មម)
ចំណាំសម្រាប់ច្រក I2C
អាណាឡូក 4 (A4) និងអាណាឡូក 5 (A5) ត្រូវបានប្រើសម្រាប់ច្រក I2C នៅលើ Arduino Uno ឬ 328p ។ នេះមានន័យថា ដរាបណាអ្នកកំពុងប្រើមុខងារ default probe, mist coolant, dual-axis, ឬ custom ALARM_STATE LED diagnostic light ដោយប្រើ I2C នឹងមិនអាចទៅរួចទេ។ ការប្រាស្រ័យទាក់ទងជាមួយ Arduino មួយផ្សេងទៀតដើម្បីបង្កើនមុខងារនឹងត្រូវឆ្លងកាត់ការភ្ជាប់សៀរៀលនៅលើ D0 និង D1 ។
ការចាប់ផ្តើម (កម្មវិធីបញ្ជា Stepper)
ជាដំបូង ដើម្បីភ្ជាប់ម៉ូទ័រ stepper របស់អ្នកទៅ Grbl អ្នកនឹងត្រូវការកម្មវិធីបញ្ជាម៉ូទ័រ stepper មួយចំនួនដើម្បីផ្តល់ថាមពលដល់ steppers និងភ្ជាប់ធាតុបញ្ចូលរបស់ driver របស់អ្នកទៅនឹង pin controller Arduino។ មានកម្មវិធីបញ្ជាមួយចំនួនដែលអាចធ្វើដូចនេះបាន ដែលអាចប្រើបានដូចជាបានសាងសង់រួចជាស្រេច សាងសង់ដោយផ្នែកខ្លះ ឬ DIY ទាំងស្រុង។ អ្នកបើកបរ stepper នឹងត្រូវការចែករំលែក ម្ជុលបើក stepper (D8) ទៅម្ជុលបើករៀងៗខ្លួន ខណៈពេលដែល ម្ជុលជីពចរទិសដៅ និងជំហាន (D2-D7) នឹងត្រូវភ្ជាប់ទៅម្ជុលរៀងៗខ្លួននៅលើអ្នកបើកបរ។ គ្រាន់តែធ្វើឱ្យប្រាកដថាអ្នកបើកបរទាំងអស់របស់អ្នកនិង Arduino ចែករំលែកដីរួម (ដាក់ផ្កាយដោយថាមពលអ្នកបើកបរម៉ូតូរបស់អ្នក) ។ នេះគឺអំពីអ្វីដែលអ្នកនឹងត្រូវចាប់ផ្តើម។
មុខងារបិទបើក និងកំណត់
បន្ទាប់មក នៅពេលដែលអ្នកសម្រេចចិត្តថាអ្នកត្រៀមខ្លួន ឬចង់ ដើម្បីបើកការកំណត់ផ្ទះ និង/ឬរឹងអ្នកនឹងត្រូវភ្ជាប់ a ជាធម្មតា - បើកដែនកំណត់កុងតាក់ ទៅម្ជុលកំណត់នីមួយៗ (D9, D10, និង D12). Home និង Hard limits ប្រើកុងតាក់ដូចគ្នា។ ម្ជុលកំណត់ទាំងនេះត្រូវបានតោងខ្ពស់រួចជាស្រេចជាមួយនឹងរេស៊ីស្តង់ទាញខាងក្នុង ដូច្នេះអ្វីដែលអ្នកត្រូវធ្វើគឺខ្សែពួកវាទៅដី។ ដូច្នេះ នៅពេលអ្នកបិទកុងតាក់ កុងតាក់នឹងទាញម្ជុលកំណត់ទៅដី។ ប្រសិនបើអ្នកចង់មានកុងតាក់កម្រិតរឹងនៅចុងទាំងសងខាងនៃការធ្វើដំណើរនៃអ័ក្សមួយ គ្រាន់តែដាក់កុងតាក់ដែនកំណត់ពីរខ្សែស្របនឹងម្ជុលកំណត់អ័ក្ស និងដី។ ត្រូវប្រាកដថាអ្នកបានដំឡើងកុងតាក់ មុនពេលព្យាយាមធ្វើវដ្តផ្ទះ ហើយត្រូវប្រាកដថាអ្នកអនុវត្តវិធីសាស្ត្រខ្សែភ្លើងល្អ ដើម្បីកាត់បន្ថយសំឡេងអគ្គិសនីពីខាងក្រៅនៅលើម្ជុលបញ្ចូល។
ការអនុវត្តខ្សែភ្លើងល្អអាចរួមបញ្ចូលការប្រើខ្សែការពារ ឬ clamp-នៅលើស្នូលខ្សែ ferrite និងប្រើ capacitors 0.1uF មួយចំនួនស្របគ្នាជាមួយនឹងកុងតាក់ដែនកំណត់សម្រាប់ការបន្លឺសំឡេង / តម្រងសំឡេង។ ការរក្សាខ្សភ្លើងរបស់ម៉ូទ័រឱ្យឆ្ងាយពីខ្សែភ្លើងដែលមានកំណត់ក៏អាចជាគំនិតដ៏ល្អផងដែរ។
វាអាចធ្វើទៅបានដើម្បីកំណត់រចនាសម្ព័ន្ធ GRBL ដើម្បីប្រើកុងតាក់ដែនកំណត់បិទជាធម្មតាប្រសិនបើអ្នកចង់បាន។ អ្នកខ្លះយល់ថាជាធម្មតា កុងតាក់បិទជិតអាចជួយកាត់បន្ថយការគាំងមហន្តរាយ ក្នុងករណីមានការបរាជ័យនៃកុងតាក់ដែនកំណត់។ អ្នកប្រើជាច្រើនលុបចោលការប្រើការប្ដូរកម្រិតណាមួយទាំងអស់ ហើយជ្រើសរើសកម្រិតកម្មវិធីជំនួសវិញ។
នៅក្នុង Grbl v0.8 និងក្រោយនេះ មានការបិទភ្ជាប់នៃការចាប់ផ្តើមវដ្ត ការសង្កត់ចំណី និងកំណត់ពាក្យបញ្ជាពេលដំណើរការឡើងវិញ ដូច្នេះអ្នកអាចមានប៊ូតុងគ្រប់គ្រងរាងកាយនៅលើម៉ាស៊ីនរបស់អ្នក។ ដូចគ្នានឹងម្ជុលកំណត់ដែរ ម្ជុលទាំងនេះត្រូវបានរក្សាខ្ពស់ជាមួយនឹងប្រដាប់ទប់ទាញខាងក្នុង ដូច្នេះអ្វីដែលអ្នកត្រូវធ្វើគឺភ្ជាប់កុងតាក់បើកធម្មតាទៅម្ជុលនីមួយៗ និងទៅដី។ ជាថ្មីម្តងទៀតត្រូវប្រាកដថាអ្នកអនុវត្តវិធីសាស្រ្តខ្សែភ្លើងល្អដើម្បីកាត់បន្ថយសំលេងរំខានអគ្គិសនីពីខាងក្រៅនៅលើម្ជុលបញ្ចូល។
Spindle និង Coolant Pins
ប្រសិនបើអ្នកមានបំណងប្រាថ្នាឬតម្រូវការសម្រាប់ spindle (ឃ ៧) ឬការគ្រប់គ្រង coolant (A3 និង A4) , Grbl នឹងបិទបើកម្ជុលលទ្ធផលទាំងនេះខ្ពស់ ឬទាប អាស្រ័យលើពាក្យបញ្ជា G-code ដែលអ្នកផ្ញើទៅ Grbl ។ ជាមួយនឹង v0.9+ និងអថេរ spindle PWM ត្រូវបានបើក ម្ជុល D11 នឹងបញ្ចេញវ៉ុលជាច្រើនtages ពី 0V ទៅ 5V អាស្រ័យលើល្បឿន spindle ពាក្យបញ្ជា G-code ។ 0V បង្ហាញពី spindle off ក្នុងករណីនេះ។ ដោយសារម្ជុលទាំងនេះសុទ្ធតែជាកម្មវិធីអាស្រ័យលើរបៀបដែលពួកវាត្រូវបានប្រើ យើងនឹងទុកវាឱ្យអ្នកដើម្បីកំណត់ពីរបៀបគ្រប់គ្រង និងប្រើប្រាស់ទាំងនេះសម្រាប់ម៉ាស៊ីនរបស់អ្នក។ អ្នកក៏អាច hack ប្រភពគ្រប់គ្រង spindle និង coolant ផងដែរ។ files ដើម្បីងាយស្រួលផ្លាស់ប្តូររបៀបដែលពួកគេធ្វើការ ហើយបន្ទាប់មកចងក្រង និងបង្ហោះ Grbl ដែលបានកែប្រែរបស់អ្នកតាមរយៈ Arduino IDE ។
អំពូល LED រោគវិនិច្ឆ័យ
ម៉ាស៊ីន CNC ពាណិជ្ជកម្មជាញឹកញាប់មានអំពូល LED វិនិច្ឆ័យយ៉ាងហោចណាស់មួយក្នុងករណីម៉ាស៊ីនគាំងឬលេខកូដរោទិ៍។ សម្រាប់ម៉ាស៊ីន GRBL និង DIY CNC ដែលទើបនឹងកើត លក្ខណៈពិសេសនេះមានប្រយោជន៍ខ្លាំងណាស់ក្នុងការដឹងនៅពេលដែល ALARM_STATE បានកើតឡើង (ដូចជាការខកខានក្នុងការបើកម៉ាស៊ីននៅផ្ទះ និងបិទកុងតាក់កំណត់)។
តាមលំនាំដើម GRBL មិនមានអំពូល LED ធ្វើរោគវិនិច្ឆ័យទេ។ នេះគឺដោយសារតែ Ardunio UNO ដែលមានបន្ទះឈីប 328p មានកន្លែងសរសេរកម្មវិធីមានកម្រិត ហើយស្ទើរតែគ្រប់ទំហំទាំងអស់នោះកំពុងត្រូវបានប្រើប្រាស់ (ទោះបីជាមិនមែនទាំងអស់!) មិនមែនគ្រប់មុខងារដែលចង់បានអាចត្រូវបានអនុវត្តនៅលើឧបករណ៍អង្គចងចាំទាបបែបនេះទេ ដូច្នេះជួនកាលការលះបង់ត្រូវធ្វើ។
បន្ថែមពីលើនេះ ច្រក I/O ដែលមានស្រាប់ទាំងអស់កំពុងត្រូវបានប្រើប្រាស់ ហើយយ៉ាងហោចណាស់ម្ជុល I/O មួយគឺត្រូវការសម្រាប់ពន្លឺបែបនេះ។ ជាសំណាងល្អមុខងារនេះអាចត្រូវបានបន្ថែមយ៉ាងងាយស្រួលដោយការលួចចូលកូដ GRBL C ហើយនៅតែមានអង្គចងចាំប្រហែល 3% ដែលមាននៅលើបន្ទះឈីប 328p!
បច្ចុប្បន្ន ម៉ាស៊ីនជាច្រើនមិនប្រើមុខងារ MIST COOLANT ជាជម្រើសនៅលើអាណាឡូក 4 ទេ ដូច្នេះយើងអាចកំណត់ឡើងវិញនូវម្ជុលនេះយ៉ាងងាយស្រួលសម្រាប់ការប្រើប្រាស់របស់យើង។ វិធីសាស្រ្តជំនួសអាចជាការសរសេរកូដអំពូល LED បែបនេះនៅលើ Arduino ខាងក្រៅដែលបន្ទាប់មកនឹងមានច្រក I/O ទាំងអស់ដែលមនុស្សម្នាក់អាចភ្ជាប់អំពូល LED / Buzzers ជាច្រើនតាមដែលចង់បានហើយអាចទំនាក់ទំនងតាម Serial ឬ I2C ។
ដើម្បី hack កូដប្រភព GRBL ដើម្បីប្រើ LED ALARM នៅលើ CNDY Shield សូមធ្វើដូចខាងក្រោម៖
ជំហានទី 1៖ នៅលើ Linux ឬ Macintosh បើកកម្មវិធីនិពន្ធអត្ថបទ (នៅលើ Windows ប្រើ Notepad ++) ហើយកែសម្រួល cpu_map.h file:
ផ្លាស់ប្តូរនេះ៖
// កំណត់ឧបករណ៍ត្រជាក់ទឹកជំនន់ និងអ័ព្ទ បើកម្ជុលទិន្នផល។
#កំណត់ COOLANT_FLOOD_DDR DDRC
#កំណត់ 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
ទៅនេះ៖
// កំណត់ឧបករណ៍ត្រជាក់ទឹកជំនន់ និងអ័ព្ទ បើកម្ជុលទិន្នផល។
#កំណត់ COOLANT_FLOOD_DDR DDRC
#កំណត់ 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
////////////////////
// កំណត់ការជូនដំណឹង LED OUTPUT
#កំណត់ SIGNAL_LIGHT_DDR DDRC
#កំណត់ 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)
#កំណត់ 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 ++) ហើយកែសម្រួល protocol.c file:
ផ្លាស់ប្តូរនេះ៖
// ប្រតិបត្តិពាក្យបញ្ជាពេលរត់តាមតម្រូវការ។ មុខងារនេះដំណើរការជាចម្បងជាស្ថានភាពរបស់ Grbl
// ម៉ាស៊ីននិងគ្រប់គ្រងមុខងារពេលវេលាជាក់ស្តែងផ្សេងៗដែល Grbl មានផ្តល់ជូន។
// ចំណាំ៖ កុំកែប្រែលុះត្រាតែអ្នកដឹងច្បាស់ថាអ្នកកំពុងធ្វើអ្វី! void protocol_exec_rt_system()
{
uint8_t rt_exec; // Temp variable ដើម្បីជៀសវាងការហៅងាយនឹងបង្កជាហេតុច្រើនដង។
rt_exec = sys_rt_exec_alarm; // ចម្លង sys_rt_exec_alarm ។
ប្រសិនបើ (rt_exec) { // បញ្ចូលតែប្រសិនបើទង់ប៊ីតណាមួយគឺពិត
// ប្រព័ន្ធរោទិ៍។ អ្វីគ្រប់យ៉ាងត្រូវបានបិទដោយអ្វីដែលខុសយ៉ាងធ្ងន់ធ្ងរ។ រាយការណ៍
// ប្រភពនៃកំហុសចំពោះអ្នកប្រើប្រាស់។ ប្រសិនបើសំខាន់ Grbl បិទដោយការបញ្ចូលគ្មានកំណត់
// រង្វិលជុំរហូតដល់ការកំណត់ប្រព័ន្ធឡើងវិញ / បោះបង់។
sys.state = STATE_ALARM; // កំណត់ស្ថានភាពរោទិ៍ប្រព័ន្ធ
report_alarm_message(rt_exec);
ទៅនេះ៖
// ប្រតិបត្តិពាក្យបញ្ជាពេលរត់តាមតម្រូវការ។ មុខងារនេះដំណើរការជាចម្បងជាស្ថានភាពរបស់ Grbl
// ម៉ាស៊ីននិងគ្រប់គ្រងមុខងារពេលវេលាជាក់ស្តែងផ្សេងៗដែល Grbl មានផ្តល់ជូន។
// ចំណាំ៖ កុំកែប្រែលុះត្រាតែអ្នកដឹងច្បាស់ថាអ្នកកំពុងធ្វើអ្វី!
void protocol_exec_rt_system()
{
uint8_t rt_exec; // Temp variable ដើម្បីជៀសវាងការហៅងាយនឹងបង្កជាហេតុច្រើនដង។
rt_exec = sys_rt_exec_alarm; // ចម្លង sys_rt_exec_alarm ។
////////////////////////
// កំណត់ការជូនដំណឹង LED OUTPUT
signal_light_init; // ចាប់ផ្តើម LED នៅក្នុងស្ថានភាពបិទ
ប្រសិនបើ (sys.state==STATE_ALARM) {signal_light_on;}
ផ្សេងទៀតប្រសិនបើ (sys.state!=STATE_ALARM) {signal_light_off;}
// else {signal_light_off;}
////////////////////////
ប្រសិនបើ (rt_exec) { // បញ្ចូលតែប្រសិនបើទង់ប៊ីតណាមួយគឺពិត
// ប្រព័ន្ធរោទិ៍។ អ្វីគ្រប់យ៉ាងត្រូវបានបិទដោយអ្វីដែលខុសយ៉ាងធ្ងន់ធ្ងរ។ រាយការណ៍
// ប្រភពនៃកំហុសចំពោះអ្នកប្រើប្រាស់។ ប្រសិនបើសំខាន់ Grbl បិទដោយការបញ្ចូលគ្មានកំណត់
// រង្វិលជុំរហូតដល់ការកំណត់ប្រព័ន្ធឡើងវិញ / បោះបង់។
sys.state = STATE_ALARM; // កំណត់ស្ថានភាពរោទិ៍ប្រព័ន្ធ
report_alarm_message(rt_exec);
អ្វីដែលយើងទើបតែបានធ្វើគឺការផ្លាស់ប្តូរមុខងារដែលបានកំណត់របស់ Analog 4 (A4) ពីការធ្វើជាម៉ាស៊ីនត្រជាក់តាមជម្រើសទៅជាអំពូល LED របស់យើង។ បន្ទាប់មកយើងសរសេរកូដក្នុង C ដើម្បីអាចសរសេរ (PC4) Port C 4 (Analog4) ខ្ពស់ឬទាបអាស្រ័យលើថាតើវាត្រូវបានប្រាប់ឱ្យបើកឬបិទ។ បន្ទាប់មកយើងសរសេរសេចក្តីថ្លែងការណ៍ if-else សាមញ្ញមួយដើម្បីពិនិត្យមើលម៉ាស៊ីនរដ្ឋ GRBL ហើយប្រាប់យើងថាតើយើងស្ថិតនៅក្នុង ALARM_STATE សកម្មហើយនៅពេលណាដែលយើងត្រូវបើក LED ។
ប្រសិនបើអ្វីៗដំណើរការបានល្អ យើងអាចចងក្រងនៅក្នុង Arduino IDE បង្ហោះកូដ ហើយឥឡូវនេះយើងនឹងមានអំពូល LED វិនិច្ឆ័យ ALARM_STATE ដែលកំពុងដំណើរការ! យើងអាចភ្ជាប់ភ្លើង LED Beacon ខាងក្រៅជាជម្រើស ដើម្បីដាក់ខ្ពស់ពីលើម៉ាស៊ីន ដែលអាចមើលឃើញពេញបន្ទប់។
បញ្ហាដែលអាចកើតមាន
តាមឧត្ដមគតិការផ្លាស់ប្តូរទាំងនេះនឹងត្រូវធ្វើឡើងជាមួយនឹងកូដប្រភព grbl បច្ចុប្បន្នបំផុតដែលមាន ហើយត្រូវបានធ្វើឡើងមុននឹងបន្ថែម "បណ្ណាល័យ" grbl ទៅ Arduino IDE ។ ប្រសិនបើអ្នកមាន grbl នៅក្នុងថតឯកសារ Arduino របស់អ្នករួចហើយ អ្នកនឹងត្រូវរុករកដោយដៃ ហើយលុបថត grbl ឬកែសម្រួល files នៅក្នុងបណ្ណាល័យ arduino ។ នៅលើម៉ាស៊ីនលីនុចរបស់ខ្ញុំ “បណ្ណាល័យ” ត្រូវបានរកឃើញនៅ៖ /home/andrew/Arduino/libraries/grbl. ការចេញផ្សាយ grbl ថ្មីបំផុតអាចរកបាននៅ https://github.com/gnea/grbl/releases. មនុស្សម្នាក់អាចទាញយក zip ដែលមាន file ហើយថតមួយដែលមានឈ្មោះថា grbl-1.1h.20190825 អាចត្រូវបានរកឃើញនៅខាងក្នុង។ នៅក្នុងថតនេះ ថតមួយដែលមានឈ្មោះថា grbl នឹងក្លាយជាឯកសារដែលអ្នកនឹងចង់បន្ថែមទៅ Arduino IDE ជា "library" "zip file”។ ត្រូវប្រាកដថាធ្វើការផ្លាស់ប្តូររបស់អ្នកចំពោះ cpu_map.h និង protocol.c files មុនពេលអ្នកបន្ថែមវាទៅ Arduino IDE ។ បើមិនដូច្នោះទេអ្នកនឹងត្រូវកែសម្រួល files នៅក្នុងបណ្ណាល័យ/ថតឯកសារ grbl របស់អ្នក។ មានកំហុសដែលគេស្គាល់សម្រាប់មុខងារអ័ក្សពីរនៅក្នុង zip grbl-1.1h fileវាត្រូវបានជួសជុលប្រសិនបើអ្នកទាញយកសាខា grbl សំខាន់ជំនួសវិញ។ https://github.com/gnea/grbl
បច្ចុប្បន្នភាព និងកំហុស CNDY Shield
*V1.1: មានកំហុសអេក្រង់សូត្រតូចមួយដែល Spindle PWM និង Spindle Direction ត្រូវបានប្តូរ។ នេះត្រូវបានកែតំរូវក្នុង V1.2.
V1.2 លែងមានឧបករណ៍កាត់បន្ថយសំលេងរំខានស្រេចចិត្តនៅលើបន្ទាត់ 5v ហើយមានឧបករណ៍ថ្មីនៅលើបន្ទាត់ប៊ូតុងបញ្ចូលផ្សេងទៀត។ V1.2 មានខ្សែ LED ស្រេចចិត្ត ស្របទៅនឹង Spindle PWM ។ វាអាចមានប្រយោជន៍សម្រាប់ការដំឡើងឡាស៊ែរសម្រាប់សុវត្ថិភាព។
បានធ្វើបច្ចុប្បន្នភាពខែសីហា-28-2021
ព័ត៌មានបន្ថែមអាចរកបាននៅ RabbitMountainResearch.com.
ឯកសារ/ធនធាន
![]() |
CNDY Shield GRBL CNC Arduino UNO [pdf] ការណែនាំអ្នកប្រើប្រាស់ GRBL CNC, Arduino UNO |




