
راهنمای عملی و مرحلهبهمرحله برای راهاندازی CNC با GRBL روی Arduino (Uno / Nano) — خلاصهٔ اجرایی
راهاندازی CNC با GRBL
پایینتر همهچیز را به صورت گامبهگام و قابل اجرا آوردهام — از نصب و فلش تا پیکربندی محور دو موتوره و عیبیابی. هر جا لازم بود مرجع رسمی هم گذاشتم تا اگر خواستی مستقیماً سند را ببینی. (مراجع اصلی: مخزن GRBL و صفحات تنظیمات / شیلد و UGS). (GitHub)
خلاصهٔ راهاندازی سریع CNC با GRBL (اگر عجله داری — انجام بده)
- سختافزار را آماده کن: Arduino Uno/Nano، درایورهای استپر، موتورها، منبع تغذیه مناسب، limit switchها، کابلها و (در صورت استفاده) Protoneer/CNC Shield.
- GRBL را دانلود کن و با Arduino IDE یا PlatformIO در پوشه
libraries/
قرار بده و مثالgrblUpload
را آپلود کن. (GitHub) - اگر محور دو موتوره لازم داری، در
config.h
گزینهENABLE_DUAL_AXIS
را uncomment کن وDUAL_AXIS_SELECT
را به محور مورد نظر (مثلاًY_AXIS
) تنظیم کن؛ سپس compile & upload. (پینهای پیشفرض شیلد: A3/A4 یا D12/D13 بسته به کانفیگ). (GitHub) - مقدار تئوری Steps/mm را محاسبه کن (فرمول پایین). مقدارها را در GRBL با
$100
,$101
,$102
وارد کن. سپس با فرمانهای حرکت و کولیس کالیبر کن و مقدار را اصلاح کن. (wiki.neje99.com) - Homing (
$22=1
) و self-square: دو limit switch برای هر سمت قرار بده، تست کمسرعت انجام بده، در صورت نیاز$1=255
تا استپرها همواره فعال بمانند. - کانال کنترل (مثلاً UGS) را وصل کن، مقدار
$
ها را چک کن و یک تست ساده (مثلاً مربع 10×10 mm) اجرا کن. (winder.github.io)
راهنمای کامل مرحلهبهمرحله راهاندازی CNC با GRBL
گام 0 — پیشنیازها (چه چیز باید داشته باشی)
- Arduino Uno یا Nano (ATmega328P)، کابل USB
- درایورهای استپر (A4988/DRV8825 یا مشابه)، موتورهای استپر، منبع تغذیه جدا برای درایورها
- (اختیاری اما معمول) Arduino CNC Shield / Protoneer v3.51 یا شیلد مشابه برای آسانتر شدن سیمکشی. (blog.protoneer.co.nz)
- کامپیوتر با Arduino IDE یا VSCode+PlatformIO، و نرمافزار ارسال G-code مثل UGS.
گام 1 — دانلود و آمادهسازی GRBL
- از مخزن رسمی GRBL آخرین نسخه را دانلود کن (gnea/grbl یا grbl/grbl). پوشه
grbl
را درDocuments/Arduino/libraries/
کپی کن تا مثالها در Arduino IDE ظاهر شوند. (GitHub) - یا اگر از PlatformIO استفاده میکنی، پروژه را باز کن و
board = uno
را درplatformio.ini
تنظیم کن. - باز کردن Arduino IDE → File → Examples → grbl → grblUpload و Upload. اگر برای Nano خطا دیدی، امتحان کن با انتخاب بوتلودر قدیمی (Old Bootloader). (Arduino Forum)
گام 2 — فعالسازی محور دوبل (Dual-Axis) در سورس (در صورت نیاز)
وقتی نیاز داری یک محور (مثلاً Y) دو موتور داشته باشد و هر طرف امکان homing مستقل داشته باشد.
- در سورس GRBL فایل
config.h
را باز کن. - خط مربوط به Dual Axis را از حالت کامنت خارج کن:
#define ENABLE_DUAL_AXIS
#define DUAL_AXIS_SELECT Y_AXIS // یا X_AXIS اگر محور X دوتایی است
- یک کانفیگ سختافزاری را انتخاب کن (برای CNC Shield/Protoneer معمولاً گزینهای پیشفرض هست مثل
DUAL_AXIS_CONFIG_PROTONEER_V3_51
یاDUAL_AXIS_CONFIG_CNC_SHIELD_V3_0
). پینهای پیشفرض در شیلدها معمولاً A.STP/A.DIR روی A4/A3 یا D12/D13 هستند؛ اگر شیلد نداری، میتوانی پینها را درcpu_map.h
تغییر دهی. (GitHub) - سورس را کامپایل و آپلود کن. سپس سیمبندی موتور دوم را مطابق نقشهٔ شیلد/پینها انجام بده.
نکته: برخی کاربران گزارش دادهاند که Dual-Axis گاهی نیاز به تنظیمات/اشکالزدایی دارد (مطالعهٔ issues مربوطه در GitHub مفید است). (GitHub)
گام 3 — سیمکشی و نکات سختافزاری راهاندازی CNC با GRBL
- موتورها به درایورها، درایورها به شیلد/آردوینو وصل شوند (STEP, DIR, ENABLE). برای محور دو موتوره، یک درایور دوم برای همان محور اضافه کن و پینهای STEP/DIR آن را به پینهای A.STP/A.DIR یا پینهای تعیینشده در سورس وصل کن. (blog.protoneer.co.nz)
- Limit switchها: برای self-squaring هر سمت گانتری یک limit switch داشته باش — آنها را به پینهای مربوط وصل کن (GRBL معمولاً از Z_LIMIT بهعنوان مشترک برای A limit استفاده میکند؛ بررسی سورس و docs شیلد لازم است).
- تنظیم جریان در درایورها (Vref) را انجام بده؛ قبل از تست، ولتاژ و جریان را مطابق موتور تنظیم کن و از خنککنندگی مناسب استفاده کن.
گام 4 — تنظیمات اولیه GRBL ($-commands
)
بعد از آپلود، با UGS یا Serial Monitor به GRBL متصل شو و دستور $$
را بزن تا تنظیمات فعلی را ببینی. سپس مقادیر اولیه پیشنهادی زیر را وارد کن (مثال برای ماشین سبک تا متوسط — بسته به دستگاه خودت تغییر بده):
$0=10 (step pulse μs)
$1=255 (step idle delay — 255 => استپرها همیشه enabled)
$22=1 (enable homing)
$100=85.333 (X steps/mm) ; مثال برای پولی 15 دندانه و میکرواستپ 1/32
$101=85.333 (Y steps/mm)
$102=800 (Z steps/mm) ; مثال برای لیداسکرو 8mm
$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)
منابع و لیست کامل پارامترها را در مستندات GRBL ببین. (wiki.neje99.com)
گام 5 — محاسبهٔ Steps/mm (تئوری) و کالیبراسیون عملی
فرمول پایه
Steps_per_mm = (Motor_steps_per_rev × Microstepping) / Travel_per_rev
- برای موتور 1.8° →
Motor_steps_per_rev = 200
- برای تسمه پولی:
Travel_per_rev = pulley_teeth × belt_pitch
- برای لیداسکرو:
Travel_per_rev = screw_lead
(میتواند برابر pitch یا lead بسته به نوع اسکرو باشد)
مثالها (تطابق با متن شما)
- X/Y با تسمه T5، پولی 15 دندانه، میکرواستپ 1/32:
Travel_per_rev = 15 × 5 = 75 mm
Steps/mm = (200 × 32) / 75 = 6400 / 75 ≈ 85.333 steps/mm
- Z با لیداسکرو 8 mm lead:
Steps/mm = 6400 / 8 = 800 steps/mm
کالیبراسیون عملی (پیشنهادشده)
- مقدار تئوری را در
$100/$101/$102
قرار بده. - دستور حرکت بزرگ (مثلاً
G0 X100
) بده. - با کولیس/خطکش اندازهگیری کن Actual_Distance.
- فرمول اصلاح:
New_Steps = Old_Steps × (Commanded_Distance / Actual_Distance)
مثال: اگر Old_Steps=85.333 و دستور 100 mm دادهای، ولی ابزار 99.6 mm حرکت کرده:
New_Steps ≈ 85.333 × (100 / 99.6) ≈ 85.676
مقدار جدید را با $100=85.676
وارد و دوباره تست کن تا خطا به حداقل برسد. (سعی کن با ابزار دقیق اندازهگیری کنی). (wiki.neje99.com)
گام 6 — راهاندازی و اتصال با UGS (مثال)
- UGS Platform را دانلود و اجرا کن (نسخه مناسب سیستمعاملت). (winder.github.io)
- Arduino را وصل کن، پورت COM را انتخاب کن و Baud را روی
115200
بگذار و Connect بزن. - در Console:
$$
را بزن تا تنظیمات را ببینی. - Jog چند میلیمتر با Jog Controller؛ بررسی کن جهتها درست باشند.
- اگر limit switch نصب است،
$H
را برای Homing اجرا کن (ابتدا سرعتهای Homing در $24/$25 را پایین قرار بده). - یک G-code کوچک (مثلاً مربع 10×10) را اجرا و مسیر را در Visualize چک کن.
راهنمای نصب و نکات بیشتر UGS را در سایت رسمی UGS ببین. (winder.github.io)
گام 7 — Homing و Self-Squaring محور دو موتوره
- مطمئن شو
$22=1
و limit switchها صحیح وصل شدهاند. - Homing را با سرعت پایین اجرا کن و مشاهده کن که هر سمت به نوبت تریگر میشود.
- اگر میخواهی بعد از Homing گانتری قفل بماند،
$1=255
بگذار تا استپر همیشه فعال بمانند (برای جلوگیری از تغییر هندسی). - اگر سمتها متفاوت عمل کردند: چک کن polarity و invert mask (
$3
و$23
) و سیمبندی limit switchها. - قبل از گذاشتن بار واقعی، چند بار با سرعت پایین تست کن تا مطمئن شوی خودِ-اسکوار کردن (self-square) پایدار است. (برای جزئیات پیادهسازی سختافزار/سیمبندی شیلدها، مرجع شیلد و issues گیتهاب را ببین). (blog.protoneer.co.nz)
گام 8 — چکلیست نهایی قبل از کار راهاندازی CNC با GRBL
- Vref درایورها تنظیم شده و خنککننده مناسب هست.
- تمامی کابلها ایمن و کانکتورها فشردهاند.
-
$
های اصلی ($100..$112, $120..$122, $0, $1, $22) ست و ذخیره شدهاند. - Limit switchها کار میکنند و جهت موتورها صحیح است.
- E-Stop سختافزاری وصل و تست شده است.
- روی هوا (بدون ابزار یا بار) اجرای یک G-code ساده برای اطمینان.
عیبیابی سریع (مشکلات رایج و راهحل)
- هیچ حرکتی ندارم: بررسی پورت COM/baud، پیغام شروع GRBL در سِریال، Vref درایورها، enable pin.
- از دست رفتن استپ در سرعت بالا: کاهش
$110/$111
یا شتاب$120/$121
، افزایش$0
(pulse) از 10µs به 20–100µs، بررسی جریان موتور و خنککننده. - Homing مشکل دارد / گانتری اسکوار نمیشود: چک کن limit switchها به پین درست وصل شدهاند و
$23/$27
تنظیم شده؛$1=255
را امتحان کن. - حرکات دایرهای (G2/G3) کیفیت ندارد: مقدار junction deviation (
$11
) یا arc tolerance ($12
) را تنظیم کن.
(برای لیست کامل تنظیمات و توضیحات، docs GRBL را ببین). (wiki.neje99.com)
منابع برای مطالعهٔ عمیقتر (لینکهای کلیدی)
- مخزن رسمی GRBL (دانلود و Releases و راهنمای نصب). (GitHub)
- مستندات و لیست تنظیمات GRBL (لیست
$
ها و معانیشان). (wiki.neje99.com) - Protoneer / CNC Shield V3 docs (پیناوت و راهنمای نصب شیلد). (blog.protoneer.co.nz)
- مباحث GitHub درباره Dual-Axis (مسائل و راهنماییهای عملی کاربران). (GitHub)
- Universal G-code Sender (UGS) — دانلود و راهنمای نصب. (winder.github.io)
اگر بخواهی، همین الآن میتونم:
- یک چکلیست قابل چاپ (PDF) از مراحل تولید کنم؛
- یا یک فایل
step-by-step
برای چکلیست در قالب markdown / تکصفحه آماده کنم؛ - یا بر اساس مشخصات دقیق سختافزار تو (نوع موتور، میکرواستپ، پولی، pitch یا lead screw، مدل شیلد) مقدارهای اولیهی
$100/$101/$102
و$110..$122
پیشنهادی دقیقتری تولید کنم.
کدوم یکی دوست داری بعدی انجام بدم؟