آردوینو - آموزش آردوینو-Arduinoهمه ی مطالب

راهنمای جامع GRBL: از معرفی تا نصب، پیکربندی و راه‌اندازی CNC

این پست برای کسانی نوشته شده که می‌خواهند با GRBL روی آردوینو (Uno/Nano) یک CNC واقعی راه‌اندازی کنند — شامل توضیح معماری داخلی GRBL، پایه‌های G-code، نحوه‌ی نصب و فلش کردن روی برد، پیکربندی پارامترها (Steps/mm، حداکثر سرعت، شتاب و …)، فعال‌سازی حالت dual‑motor (دو موتور روی یک محور) و نکات عیب‌یابی و تنظیم نهایی.


فهرست مطالب

  1. مقدمه — GRBL چیست و چرا انتخاب خوبی است
  2. معماری GRBL به زبان ساده (Parser → Planner → Stepper)
  3. G-code؛ چه چیزهایی باید بلد باشی
  4. نصب و فلش کردن GRBL روی Arduino Uno / Nano (گام‌به‌گام)
  5. فعال‌سازی و پیکربندی Dual‑Axis (محور با 2 موتور)
  6. محاسبه‌ی Steps/mm با مثال‌های واقعی (تسمه و لیداسکرو)
  7. تنظیمات کلیدی GRBL ($‑commands) و مقادیر پیشنهادی برای شروع
  8. راه‌اندازی و اتصال به کنترلر (UGS, Candle و مانیتور سریال) — گام‌به‌گام
  9. همینگ (Homing) و خودِ‑اسکوار کردن گانتری (Self‑Square) برای محور دوبل
  10. عیب‌یابی رایج و چک‌لیست نهایی
  11. منابع و مراجع

1. مقدمه — GRBL چیست و چرا انتخاب خوبی است

GRBL یک فریمور متن‌باز، سبک و بهینه است که روی میکروکنترلرهای AVRِ خانواده ATmega328P (مثل Arduino Uno/Nano) اجرا می‌شود و وظیفه‌اش تبدیل دستورات G‑code به پالس‌های کنترل استپ‑/دایرکشن برای درایورهای استپر است. GRBL برای ماشین‌های CNC کوچک و متوسط، دستگاه‌های لیزر و کاربردهای آموزشی عالی است: کم‌هزینه، ساده و با جامعهٔ بزرگی از کاربران و ابزاری که با آن هماهنگ است.

نکته: نسخه‌ی رسمی که روی GitHub مرجع (gnea/grbl) قرار دارد، ویژگی‌های مهمی دارد از جمله مدیریت شتاب (acceleration management) و الگوریتم look‑ahead برای حرکت‌های نرم و گوشه‌زنی بهتر. این مورد در مستندات پروژه درج شده است.


2. معماری GRBL به زبان ساده

وقتی یک بلوک G-code به GRBL فرستاده می‌شود، مراحل پردازش به این ترتیب انجام می‌گیرد:

  1. ورودی سریال (Serial Input / Buffer):
    GRBL داده‌ها را از USB یا پورت سریال دریافت می‌کند و آن‌ها را به بلوک‌های کامل G-code تبدیل می‌کند.

  2. تجزیه‌گر G-code (G-code Parser):
    هر بلوک کامل بررسی می‌شود تا نوع دستور مشخص شود (مثل حرکت خطی، حرکت دایره‌ای، یا تنظیمات).

  3. برنامه‌ریز مسیر (Trajectory Planner):
    حرکت‌ها به بخش‌های کوچک‌تر تقسیم می‌شوند. GRBL با استفاده از قابلیت look-ahead (تا حدود ۱۸ بلوک در نسخه‌های 8 بیتی) سرعت، شتاب و نحوه عبور از گوشه‌ها را محاسبه می‌کند تا حرکت روان و یکنواخت باشد.

  4. تولید پالس استپ (Stepper Segmenter / Step Generator):
    در این مرحله دستورات نهایی به صورت پالس‌های step و direction تولید می‌شوند و به پایه‌های مربوط به موتورها ارسال می‌گردند.

  5. کنترل زمان‌واقعی (Realtime Monitor / Overrides):
    GRBL از دستورهای سریع و هم‌زمان پشتیبانی می‌کند. برای مثال:

    • ! برای توقف موقت (feed-hold)

    • ~ برای ادامه حرکت (resume)

    • ? برای گرفتن وضعیت دستگاه
      همچنین امکان تغییر سرعت یا نرخ تغذیه (feed/override) در حین کار وجود دارد.


این ساختار ماژولار باعث می‌شود GRBL حتی روی سخت‌افزارهای ساده هم بتواند مسیرهای پیچیده را بدون توقف ناگهانی و با حرکتی روان اجرا کند. بخش planner نقش کلیدی دارد، چون با «نگاه به جلو» مانع از گیرکردن یا ایست ناگهانی حرکت می‌شود.


3. G-code؛ چه چیزهایی باید بلد باشی

در عمل، شما معمولاً خودتان G-code را خط به خط نمی‌نویسید. نرم‌افزارهای CAD/CAM (مثل Fusion 360، Aspire یا ArtCAM) مدل سه‌بعدی یا طرح دوبعدی شما را گرفته و بر اساس ابزار، مسیر برش و تنظیمات ماشین، به‌طور خودکار G-code مناسب تولید می‌کنند. با این حال، آشنایی با دستورات پایه‌ای G-code بسیار مهم است؛ چون به شما کمک می‌کند خروجی نرم‌افزار را بخوانید، منطق حرکات ماشین را بفهمید و در صورت نیاز تغییرات یا رفع اشکال انجام دهید.

دستورات حرکتی (Motion)

  • G0 — حرکت سریع (Rapid Move):
    جابه‌جایی سریع بدون توجه به مسیر دقیق. در GRBL معمولاً مثل یک G1 با سرعت بالا اجرا می‌شود.

  • G1 — حرکت خطی (Linear Move):
    حرکت مستقیم با سرعت مشخص‌شده (بر اساس پارامتر F).

  • G2 / G3 — حرکت دایره‌ای (Arc Move):
    حرکت منحنی به صورت ساعتگرد (CW) یا پادساعتگرد (CCW). مختصات مرکز قوس با پارامترهای I و J تعیین می‌شوند.

سیستم مختصات (Coordinate System)

  • G90 — مختصات مطلق (Absolute):
    همه مقادیر بر اساس مبدا مختصات ماشین تفسیر می‌شوند.

  • G91 — مختصات نسبی (Incremental):
    همه حرکات نسبت به موقعیت فعلی محاسبه می‌شوند.

واحدها (Units)

  • G20 — اینچ

  • G21 — میلی‌متر
    در GRBL معمولاً حالت پیش‌فرض میلی‌متر (G21) است.

کنترل اسپیندل (Spindle Control)

  • M3 — روشن شدن اسپیندل در جهت ساعتگرد (CW)

  • M4 — روشن شدن اسپیندل در جهت پادساعتگرد (CCW)

  • M5 — خاموش کردن اسپیندل

پارامترهای اصلی

  • F — نرخ پیشروی (Feed Rate):
    سرعت حرکت ابزار هنگام برش؛ معمولاً بر حسب mm/min در GRBL.

  • S — سرعت اسپیندل (Spindle Speed):
    مقدار RPM (دور بر دقیقه) که اسپیندل باید بچرخد.


ساختار بلوک G-code

هر خط در G-code یک بلوک محسوب می‌شود و از تعدادی “کلمه آدرس” تشکیل شده است:

  • مثال:

    G1 X10 Y5 F300

    یعنی: حرکت خطی (G1) به مختصات X=10، Y=5 با سرعت 300 mm/min.

  • کلمات رایج:
    G (نوع حرکت)، X/Y/Z (مختصات محورها)، F (سرعت برش)، S (دور اسپیندل).

  • امکان نوشتن کامنت نیز وجود دارد؛ بسته به پست‌پروسسور معمولاً با پرانتز ( ) یا سمی‌کالن ; نوشته می‌شوند.


نکته مهم

اکثر نرم‌افزارهای CAM (مثل Fusion 360 یا Aspire) خروجی G-code را متناسب با ماشین و Post-Processor مخصوص آن تولید می‌کنند. بنابراین کافی است اصول بالا را بدانی تا بتوانی کد خروجی را بخوانی، رفع اشکال کنی یا در صورت نیاز دستی ویرایشش کنی.


4. نصب و فلش کردن GRBL روی Arduino Uno / Nano (گام‌به‌گام)

نکتهٔ مهم: GRBL در قالب یک پوشه سورس عرضه می‌شود که باید آن را در مسیر Arduino/libraries/ قرار دهی تا مثال grblUpload در منوی Examples ظاهر شود (روش‌های دیگر مثل PlatformIO هم وجود دارد).

روش با Arduino IDE (سریع‌ترین راه برای اکثر افراد)

  1. نرم‌افزار Arduino IDE (نسخه 1.8.x یا 2.x) را نصب کن. نسخه‌ی 1.8.x معمولاً سازگاری راحت‌تری با آموزش‌های قدیمی دارد ولی IDE 2.x هم کار می‌کند.
  2. مخزن GRBL را از GitHub دانلود کن (یا به‌صورت ZIP دانلود و اکسترکت کن). داخل پوشه‌ی دانلود‌شده یک پوشه‌ی grbl پیدا می‌کنی.
  3. پوشه‌ی grbl را داخل فولدر Documents/Arduino/libraries/ (یا sketchbook libraries) کپی کن.
  4. Arduino IDE را باز کن → منوی FileExamplesgrblgrblUpload (یا grblUpload.ino). این اسکچِ بارگذاری است.
  5. در Tools → Board، بردت را انتخاب کن (Arduino/Genuino Uno برای Uno؛ برای Nano در برخی نسخه‌ها باید ATmega328P (Old Bootloader) را انتخاب کنی اگر با خطا روبرو شدی).
  6. پورت COM درست را انتخاب کن.
  7. Upload را بزن — IDE کد را کامپایل و روی آردوینو فلش می‌کند. اگر ارور پیدا شد، پیام خطا در کنسول IDE را بخوان و معمولاً مشکل از مسیر کتابخانه یا انتخاب برد است.

روش با PlatformIO (برای کسانی که با VSCode کار می‌کنند)

  1. VSCode + PlatformIO را نصب کن.
  2. پروژهٔ GRBL را در PlatformIO باز کن (فایل platformio.ini باید board را تعیین کند؛ برای Uno از board = uno استفاده کن).
  3. Build و Upload را از PlatformIO اجرا کن.

مرجع: مراحل و مثال‌های نصب GRBL و grblUpload در مستندات و جامعه‌ی کاربری منتشر شده است (مراجع در بخش منابع آمده).


5. فعال‌سازی و پیکربندی Dual‑Axis (محور با 2 موتور)

در نسخه‌ی v1.1h از GRBL قابلیتی اختیاری اضافه شد که امکان قرینه‌سازی حرکت یک محور (Mirror) و همچنین استفاده از یک موتور دوم با نام A-axis یا motor A را فراهم می‌کند. این ویژگی بیشتر در ماشین‌هایی کاربرد دارد که برای حرکت یک محور از دو موتور استفاده می‌کنند (مثلاً محور Y با دو موتور). در این حالت هر موتور می‌تواند جداگانه عملیات Homing را انجام دهد و به این ترتیب هر دو طرف محور با دقت یکسان تنظیم و هم‌زمان حرکت می‌کنند.

گزینه‌های سخت‌افزاری پشتیبانی‌شده در سورس

GRBL دو پیکربندی سخت‌افزاری از پیش تعریف‌شده دارد که انتخاب آن‌ها در config.h امکان‌پذیر است:

  • پیکربندی Protoneer CNC Shield v3.51 → پین‌های A.STP و A.DIR روی آنالوگ A4 و A3 تعریف شده‌اند.
  • پیکربندی CNC Shield Clone v3.0 → پین‌ها روی D12 و D13 تعریف شده‌اند.

اگر از شیلد استفاده نمی‌کنی ، راحت‌ترین کار این است که از همان پین‌هایی که پروژه پیش‌فرض در نظر گرفته استفاده کنی (A3/A4 یا D12/D13) و موتور/درایور دوم را به آن‌ها وصل کنی. نیازی به تغییر دستی پین‌ها در cpu_map.h نیست مگر بخواهی از پین‌های دیگری استفاده کنی.

فعال‌سازی در سورس

  1. در config.h خطِ مربوطه را از کامنت خارج کن: #define ENABLE_DUAL_AXIS.
  2. مشخص کن محور مورد نظر X_AXIS است یا Y_AXIS (برای من چون Y دو موتور داره باید بنویسم: #define DUAL_AXIS_SELECT Y_AXIS).
  3. یکی از دو پیکربندی کانفیگ شیلد را فعال کن (معمولاً DUAL_AXIS_CONFIG_PROTONEER_V3_51 برای A3/A4).
  4. سورس را کامپایل و آپلود کن.

سیم‌بندی محدودیت‌ها و نکات مهم

  • برای self‑squaring معمولاً دو limit switch (یکی برای هر سمت Y) نیاز داری. GRBL از یک پین محدود (Z_LIMIT) به‌عنوان «اشتراک» برای دومین limit استفاده می‌کند — در عمل وقتی wiring را درست انجام دهی، GRBL می‌تواند هر سمت را جداگانه حس کند. (در مستندات و بحث‌های انجمن‌ها مثال‌هایی برای سری/مشترک کردن سنسورها وجود دارد — در قسمت منابع لینک‌ها هست.)
  • بعد از homing، اگر می‌خواهی گانتری همیشه در حالت اسکوار بماند مقدار $1 را روی 255 بگذار تا استپرها همیشه enabled بمانند (درایورها تحت‌ولتاژ نگه داشته شوند) تا با دست محور جابه‌جا نشود.
  • حتماً قبل از گذاشتن بار واقعی، روی سرعت پایین homing را تست کن.

6. محاسبه‌ی Steps/mm با مثال‌های واقعی

یکی از مهم‌ترین پارامترهایی که باید در تنظیمات GRBL به‌دقت مشخص شود، مقدار Steps per millimeter است. این مقدار تعیین می‌کند موتور برای حرکت دادن محور به‌اندازه‌ی ۱ میلی‌متر چند پالس دریافت کند. اگر این مقدار درست نباشد، ابعاد برش یا حرکت‌ها دقیق از آب درنمی‌آیند.


فرمول کلی

Steps_per_mm = (Motor_steps_per_rev × Microstepping) / (Travel_per_rev)


اجزای فرمول

  • Motor_steps_per_rev → تعداد پله‌های کامل موتور در هر دور.
    (برای استپرهای معمولی ۱.۸ درجه، مقدار = 200)

  • Microstepping → ضریب میکرو‌استپ انتخاب‌شده روی درایور.
    (مثلاً 1/16 → مقدار 16، یا 1/32 → مقدار 32)

  • Travel_per_rev → مسافتی که محور در ازای یک دور کامل موتور جابه‌جا می‌شود:

    • برای لید اسکرو → برابر با گام پیچ (Lead). مثلاً اگر پیچ در هر دور 8 میلی‌متر جابه‌جا شود، مقدار = 8.

    • برای تسمه و پولی → محاسبه می‌شود از:

      Travel_per_rev = pulley_teeth × belt_pitch


مثال محور X/Y (با تسمه T5 و پولی 15 دندانه)

 

  • Motor full steps = 200

  • Microstepping = 32

  • Pulley teeth = 15

  • Belt pitch = 5 mm

محاسبه:

Travel_per_rev = 15 × 5 = 75 mm

Steps/mm = (200 × 32) / 75
Steps/mm = 6400 / 75
Steps/mm ≈ 85.33 steps/mm


مثال محور Z (با لید اسکرو گام 8 میلی‌متر)

  • Motor full steps = 200

  • Microstepping = 32

  • Lead screw pitch = 8 mm

محاسبه:

Travel_per_rev = 8

Steps/mm = (200 × 32) / 8
Steps/mm = 6400 / 8
Steps/mm = 800 steps/mm


تنظیمات اولیه در GRBL

  • $100 = 85.33 (X steps/mm)

  • $101 = 85.33 (Y steps/mm)

  • $102 = 800 (Z steps/mm)


کالیبراسیون عملی Steps/mm

محاسبات بالا مقدار تئوری Steps/mm را به شما می‌دهند. اما برای رسیدن به دقت واقعی باید آن را در عمل کالیبره کنید:

  1. روی دستگاه یک خط‌کش یا کولیس دیجیتال قرار بده.

  2. در نرم‌افزار، به محور مورد نظر دستور حرکت مشخصی بده (مثلاً 100 میلی‌متر).

  3. با خط‌کش یا کولیس مقدار حرکت واقعی را اندازه‌گیری کن.

  4. اگر عدد واقعی با مقدار دستور داده‌شده متفاوت بود، از فرمول اصلاح استفاده کن:

    New_Steps = (Old_Steps × Commanded_Distance) / Actual_Distance

    • Old_Steps → مقداری که در تنظیمات GRBL گذاشتی.

    • Commanded_Distance → مسافتی که دستور دادی (مثلاً 100 mm).

    • Actual_Distance → مسافتی که واقعاً حرکت کرد.

  5. مقدار به‌دست‌آمده (New_Steps) را به جای قبلی در تنظیمات GRBL وارد کن (با دستور $100، $101 یا $102 بسته به محور).

  6. دوباره تست کن تا مطمئن شوی خطا به حداقل رسیده است.


با این روش، اول یک مقدار تقریبی و محاسباتی وارد می‌کنی و بعد با تست عملی آن را دقیق می‌سازی.

نکتهٔ عملی: همیشه بعد از محاسبهٔ تئوری، با یک ابزار دقیق (کالیبر، کولیس یا دیال ایندیکاتور) حرکت واقعی را اندازه‌گیری و مقادیر را کالیبره کن.


7. تنظیمات کلیدی GRBL ($‑commands) و مقادیر پیشنهادی برای شروع

در GRBL با فرمت $xxx=value پارامترها ذخیره می‌شوند. چند پارامتر مهم:

  • $0 — Step pulse time (مقدار پیش‌فرض: ~10 میکروثانیه). اگر درایورت توانایی تشخیص پالس کوتاه را ندارد، این مقدار را افزایش بده.
  • $1 — Step idle delay (ms). با $1=255 می‌توانی استپرها را همیشه enabled نگه داری تا گانتری قفل بماند.
  • $2 — Step port invert (mask) — برای معکوس‌سازی پالس استپ اگر درایور نیاز داشت.
  • $3 — Direction port invert (mask) — برای معکوس کردن جهت هر محور.
  • $11 — Junction deviation (mm) — پارامتر جدیدی برای کنترل نحوه‌ی گوشه‌زنی (معمولی 0.01 یا مقدار پیشنهادی کارگاه).
  • $20 — Soft limits enable (0/1).
  • $21 — Hard limits enable (0/1).
  • $22 — Homing cycle enable (0/1).

مجموعهٔ نمونه (مقادیر پیشنهادی برای شروع، بر اساس سخت‌افزار سبک تا متوسط)

$100=64      (X steps/mm)
$101=64      (Y steps/mm)
$102=800     (Z steps/mm)

$110=3000    (X max rate mm/min)  → ≈50 mm/s
$111=3000    (Y max rate mm/min)
$112=500     (Z max rate mm/min)

$120=200     (X accel mm/s^2)
$121=200     (Y accel mm/s^2)
$122=50      (Z accel mm/s^2)

$130=300     (X travel mm)
$131=300     (Y travel mm)
$132=100     (Z travel mm)

$0=10        (step pulse µs)
$1=255       (keep steppers enabled)
$22=1        (enable homing)

این مقادیر نقطه آغاز خوبی‌اند؛ بسته به وزن محور، درایور، جریان موتور و گیربکس باید کاهش یا افزایش یابند.

در GRBL سرعت حرکت هر محور به‌صورت جداگانه در تنظیمات ذخیره می‌شود (پارامترهای $110, $111, $112 برای سرعت بیشینه‌ی محورهای X, Y, Z). این مقادیر محدودیت سخت‌افزاری ماشین رو مشخص می‌کنن: یعنی حداکثر سرعتی که موتور و مکانیک می‌تونن بدون از دست دادن استپ حرکت کنن.

اما سرعت پیشروی واقعی (Feed Rate) در زمان اجرای برنامه از طریق G-code تعیین میشه (کلمه‌ی F). نرم‌افزار CAM وقتی برای چوب، آلومینیوم یا آکریلیک خروجی می‌گیره، بر اساس جنس متریال و ابزار برشی مقدار F مناسب رو توی فایل می‌نویسه.

پس:

  • مقادیر داخل GRBL مثل سقف سرعت هستن (ماشین نمی‌تونه سریع‌تر از اون بره).

  • مقدار F داخل G-code مثل فرمان راننده‌ست و بسته به جنس متریال و شرایط برش تغییر می‌کنه.

مثال:

  • برای چوب نرم شاید F=1500 mm/min انتخاب بشه.

  • برای آلومینیوم همون ابزار نیاز به F=200–300 mm/min داشته باشه.

  • برای محور Z (حرکت عمودی) معمولاً سرعت خیلی کمتر تعریف میشه چون بار بیشتری روی ابزار هست.

🔑 نتیجه: سرعت محورها به‌طور ثابت یک بار در GRBL تعریف میشه (حداکثر مجاز)، اما هنگام کار با مواد مختلف باید سرعت پیشروی (F) رو در G-code تغییر بدی؛ این کار رو نرم‌افزار CAM برات انجام میده، نه اینکه دستی توی GRBL عوض کنی.


8. راه‌اندازی و اتصال به کنترلر — Universal Gcode Sender (UGS) به‌عنوان مثال

نصب و اتصال UGS

  1. دانلود UGS: از سایت رسمی یا GitHub آخرین نسخهٔ UGS Platform یا UGS Classic را بگیر. نسخه Platform امکانات بیشتری مثل تب کنسول و نمایشگر مسیر دارد.
  2. نصب Java (در صورت نیاز): برخی نسخه‌ها نیاز به Java Runtime Environment دارند.
  3. اتصال: آردوینو را با USB وصل کن. در UGS پورت COM مناسب را انتخاب و Baud rate را روی 115200 قرار بده. سپس روی Connect کلیک کن.

امکانات کلیدی UGS

  • Console: در این تب می‌توانی دستورات GRBL را مستقیم وارد کنی (مثلاً $$ برای دیدن همه تنظیمات).
  • Machine Status: نمایش موقعیت فعلی، حالت محورها، وضعیت limit switch ها، سرعت feed و غیره.
  • Commands & Overrides: دکمه‌های سریع برای Reset، Unlock ($X)، Homing ($H)، و تغییر لحظه‌ای feed یا spindle override.
  • Jog Controller: ابزار گرافیکی برای حرکت دادن دستی محورها؛ می‌توانی اندازهٔ گام و سرعت را تعیین کنی.
  • Visualize: در UGS Platform، فایل G-code را بارگذاری و مسیر حرکتی را قبل از اجرا روی صفحه مشاهده می‌کنی.

اجرای اولین تست‌ها

  1. بعد از اتصال موفق، دستور $$ را در Console بزن و مطمئن شو مقادیر تنظیمی درست هستند.
  2. با Jog controller محورها را اندکی حرکت بده و تأیید کن موتورها جهت درست حرکت می‌کنند.
  3. اگر Limit switch ها نصب‌اند، دستور $H را ارسال کن تا Homing انجام شود. مراقب باش سرعت پایین انتخاب کرده باشی.
  4. یک فایل ساده G-code مثل یک مربع کوچک (10×10mm) را بارگذاری و اجرا کن تا مطمئن شوی حرکات هماهنگ هستند.

دستورات زمان‌واقعی (Real-time)

  • ~ → ادامه اجرای برنامه (Cycle Start/Resume)
  • ! → توقف موقت امن (Feed Hold)
  • ? → نمایش سریع وضعیت (مختصات، حالت محورها)
  • Ctrl+X → ریست نرم‌افزاری GRBL

نکات ایمنی در زمان اتصال و ارسال

  • همیشه قبل از اجرای G-code واقعی، دستگاه را در هوا (بدون ابزار یا بار) تست کن.
  • از کلید اضطراری (E-Stop) سخت‌افزاری استفاده کن تا در صورت نیاز برق کل سیستم را قطع کند.
  • مسیر فایل G-code را با Preview چک کن تا حرکتی خارج از محدوده تعریف‌شده ($130, $131, $132) انجام نشود.

9. Homing و self‑square برای محور دو موتوره

سیم‌کشی limit switches برای self‑squaring

روش‌های مختلفی وجود دارد؛ رایج‌ترین روش: هر سمت گانتری یک limit switch مستقل داشته باشد و GRBL آن‌ها را به‌گونه‌ای بخواند که بتواند هر سمت را جداگانه homing کند. برخی شیلدها از پین‌های A3/A4 یا D12/D13 برای موتور دوم و از پین Z برای اشتراک limit استفاده می‌کنند.

روند homing (تست امن)

  1. همه کابل‌ها را چک کن و دستگاه را بدون بار روشن کن.
  2. $22=1 را تنظیم کن.
  3. در UGS $H را بزن و رفتار را با سرعت پایین مشاهده کن.‌ اگر یک سمت زودتر به limit می‌خورد، GRBL آن را ثبت می‌کند و بعد از طرف دیگر نیز حرکت تکمیل می‌شود؛ در نهایت گانتری مربع می‌شود.
  4. اگر رفتار معکوس بود، polarity یا تنظیمات $3 (direction invert mask) را تغییر بده.

هشدار: اگر limit switches یا سیم‌بندی اشتباه باشد ممکن است موتور به سخت‌افزار فشار بیاورد — سرعت و حرکت را در لحظهٔ تست بسیار پایین قرار بده.


10. عیب‌یابی رایج و چک‌لیست نهایی

موتورها حرکت نمی‌کنند

  • پورت COM و Baud را بررسی کن (115200).
  • اطمینان از فلش شدن صحیح GRBL (از طریق Serial Monitor پیغام Grbl x.x را ببین).
  • تأیید تغذیه‌ی درایورها و تنظیم جریان (Vref).
  • چک کن که EN/Enable درایورها فعال باشد (برخی پین‌ها invert شده‌اند: $4).

گم شدن استپ / لق زدن در حرکت سرعت بالا

  • کاهش سرعت مکس ($110/$111) یا شتاب ($120/$121).
  • افزایش $0 (step pulse) از مقدار پیش‌فرض 10 µs به مقادیر بالاتر مثل 20‑100 µs در صورت نیاز.
  • بررسی جریان درایورها (Vref) و نصب proper cooling.

بعد از homing محور Y روان نیست / گانتری اسکوار نمی‌شود

  • چک کن که هر دو limit switch سالم و روی پین‌های صحیح وصل شده باشند.
  • بررسی $1=255 تا استپرها همواره فعال بمانند.
  • اگر یکی از موتورها جهت اشتباه دارد، مقادیر $3 را بررسی کن یا سیم‌های DIR را برعکس کن.

حرکات دایره‌ای / G2‑G3 خطا می‌دهد یا کیفیت پایین است

  • مقدار arc tolerance / junction deviation ($12, $11) را تنظیم کن. مقادیر کوچک باعث دقت بالاتر ولی محاسبات بیشتر می‌شوند.

11. منابع و مراجع (برای مطالعهٔ بیشتر)

  • ریپو GitHub رسمی GRBL (مرجع پروژه و releaseها)
  • صفحات راهنما و مقالات community مانند HowToMechatronics و Circuitist برای نحوهٔ نصب روی Arduino
  • مستندات GRBL Settings و لیست دستورات برای $‑commands و real‑time commands
  • مقالات و ابزارهای آنلاین برای محاسبهٔ Steps/mm (lead screw, belt)

جمع‌بندی

این راهنمایِ مفصّل قدم‌به‌قدم تلاش کرد تا همهٔ بخش‌های لازم برای نصب، پیکربندی و راه‌اندازی یک دستگاه CNC با GRBL (شامل محور Y با دو موتور) را پوشش دهد: از معماری و طرز کار داخلی GRBL و G‑code تا جزئیات نصب روی Arduino، محاسبات Steps/mm، تنظیم $‑ها، و راه‌اندازی با UGS.

Köhnə Dərviş

Adım Köhnə Dərviş, əsrlərdir bu dünyanın təlaşını izləyirəm. Əvvəllər mənə "mistik" deyərdilər, indi "geek" deyirlər. Çölə çıxıb transa keçmək əvəzinə, artıq Arduino ilə transistora keçirəm. Mənəvi aləmdəki səfərimi WiFi siqnalı izləyərək tamamlayıram – "İlahi Router"ın mənasını hələ də axtarıram. Mənə görə ən böyük mərciməh "sükut"du, indi bunu noise-cancelling algoritmlə təmin edirəm. Həyat mənə "debug" etməyi öyrətdi: öz kodu ilə yaşayan bir dərvişəm. Və xeyir, dua etməyə çay əvəzinə kofeinsiz espresso tövsiyə edirəm – çünki dərin məşğuliyyət tələb edir. ☕️🔧

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

دکمه بازگشت به بالا