آموزش راه اندازی درایور استپر موتور TMC2100 با آردوینو

فهرست مطالب

ویژگی های درایور استپر موتور TMC2100

درایور TMC2100، یکی از انواع درایورهای استپ موتور موجود در بازار می‌باشد. اصول عملکرد این درایور مانند درایورهای DRV8825 و A4988 می‌باشد.
این ماژول‌ جهت کنترل استپر موتورهای دو قطبی استفاده می‌شود. تنها با استفاده از دو پین این ماژول می‌توان جهت چرخش و گام‌های چرخش استپر موتور را کنترل نمود. با ارسال هر سیگنال از طرف پین گام چرخش، موتور به اندازه یک گام جابه‌جا می‌شود. ویژگی‌های این ماژول عبارت اند از:

  • گام کامل این درایور، 200 گام (هر گام 1.8 درجه) به ازای هر چرخش می‌باشد.
  • جریان مجاز پیوسته عبوری به ازای هر فاز : 1.25 آمپر(RMS) و یا 1.77 آمپر(Max)
  • ماکزیمم جریان در کوتاه مدت برای هر فاز : 5 آمپر
  • ولتاژ موتور : 5.5 تا 46 ولت
  • دارای مد stealthChop جهت کاهش نویزپذیری
  • دارای مد spreadCycle جهت افزایش گشتاور
نکته

تعداد گام‌های آن از گام کامل تا گام 1/16 می‌باشد.

نکته

پتانسیومتر روی برد ماژول جهت ایجاد محدودیت جریان استفاده می‌شود.

دیتاشیت آی سی TMC2100 را می‌توانید از اینجا دانلود کنید.

TMC2100 Stepper Motor Datasheet

معرفی پایه های (Pinout) درایور استپر موتور TMC2100

‌ این درایور دارای پایه‌هایی به شرح زیر است:

پایه های تغذیه:

  • GND-MOT: زمین تغذیه موتور
  • V-MOT: ولتاژ تغذیه موتور – 5.5 تا 46 ولت
  • GND-LOGIC: زمین تغذیه درایور
  • V-IO: ولتاژ ورودی تغذیه دایور
نکته

برای محافظت درایور از جرقه‌های ولتاژ VMOT، می‌توانید از خازن استفاده کنید.

پایه های سیم‌پیچی موتور:

  • M1A: پایه اول کویل 1 موتور
  • M1B: پایه دوم کویل 1 موتور
  • M2A: پایه اول کویل 2 موتور
  • M2B: پایه دوم کویل 2 موتور

پایه های کنترل حرکت موتور:

  • DIR: سیگنال دیجیتال برای کنترل جهت حرکت موتور
  • STEP: سیگنال دیجیتال برای کنترل گام های چرخش
  • EN: با فعال شدن این سیگنال، خروجی‌های درایور غیرفعال می‌شوند.

پایه های بدون استفاده:

  • DIAG0: پایه بدون استفاده
  • DIAG1: پایه بدون استفاده

پایه های تنظیمات درایور:

  • CFG1: پایه اول تنظیمات درایور
  • CFG2: پایه دوم تنظیمات درایور
  • CFG3: پایه سوم تنظیمات درایور
نکته

برای مد کاری spreadCycle بایستی CFG1 را به GND متصل کنید.

تغییرات دو پایه CFG1 و CFG2، حالت‌های کاری مختلفی به وجود می‌آورد. حالت‌های پیشنهادی به رنگ سبز آورده شده‌است:

پین اوت (Pinout) درایور TMC2100 در تصویر زیر آمده‌است.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

آردوینو UNO R3 × 1
درایور استپر موتور TMC2100 × 1
استپر موتور 1.7 آمپر NEMA 17HS1910 × 1
سیم جامپر نری-مادگی × 1

نرم افزارهای مورد نیاز

آردوینو IDE
تذکر

دقت کنید برای راه‌اندازی این موتور توسط درایور TMC2100 به منبع تغذیه (آداپتور، باتری و ….) بالاتر از 5.5 ولت نیاز دارید. منبع تغذیه در لیست فوق ذکر نشده است. خودتان یکی از انواع آن را تهیه کنید.

در ضمن دقت داشته باشید که منبع تغذیه شما باید بتواند جریان کویل‌های موتور را تامین کند.

راه اندازی درایور استپر موتور TMC2100 با آردوینو

گام اول: سیم بندی

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

نکته

پایه های CFG1 و CFG2 را به صورت OPEN قرار می‌دهیم. بنابراین در حالت 1/16 کار میکند.

گام دوم: محدودسازی جریان

بهترین روش برای تنظیم جریان موتور، محاسبه Vref از طریق پتانسیومتر می‌باشد.
ابتدا Vref را محاسبه کرده و سپس از طریق فرمول‌های زیر IRMS و IMax محاسبه می‌گردند:

Irms = Vref × 0.71

Imax = Irms × 1.41

گام سوم: کد

کد زیر را روی آردوینو خود آپلود کنید.

   /*
  TMC2100 -Stepper-Motor-Driver-Module
  made on 2 Dec 2020
  by Amir Mohammad Shojaee @ Electropeak
  
Home
*/ const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 3200; int incomingByte = 0; // for incoming serial data int input = 0; void setup() { pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); Serial.begin(9600); // opens serial port, sets data rate to 9600 bps Serial.println("1.full rotation in forward"); Serial.println("2.full rotation in backward"); } void loop() { // send data only when you receive data: if (Serial.available() > 0) { // read the incoming byte: incomingByte = Serial.read(); input = incomingByte ; switch (input) { case '1': // if input=1 ....... motors turn forward forward(); break; case '2': // if input=2 ....... motors turn backward backward(); break; } delay(200); input=0; } } void forward() { //function of forward digitalWrite(dirPin, HIGH); for(int x = 0; x < stepsPerRevolution; x++) { digitalWrite(stepPin, HIGH); delayMicroseconds(100); digitalWrite(stepPin, LOW); delayMicroseconds(100); } delay(1000); // Wait a second } void backward() { //function of backward digitalWrite(dirPin, LOW); for(int x = 0; x < stepsPerRevolution; x++) { digitalWrite(stepPin, HIGH); delayMicroseconds(100); digitalWrite(stepPin, LOW); delayMicroseconds(100); } delay(1000); // Wait a second }

در ابتدای برنامه شماره پین های DIR و STEP را مشخص می‌کنیم. سپس گام درایور را 3200 قرار می‌دهیم. در برنامه دو تابع داریم که یکی برای حرکت forward و دیگری برای حرکت backward نوشته شده‌است. با فشردن عدد 1 در سریال مانیتور، موتور یک دور در جهت forward و با فشردن عدد 2 موتور یک دور در جهت backward حرکت می‌کند.

نکته

به دلیل اینکه دو پایه CFG1 و CFG2 بدون اتصال هستند، تعداد گام موتور در 16 ضرب می‌شود. بنابراین مقدار 3200(200*16=3200) را در متغیر  stepsPerRevolution ذخیره می‌کنیم.

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

آموزش های مشابه

Comments (2)

  • Abbas Reply

    دیتاشیت اشتباهی گذاشتید.

    اکتبر 24, 2021 at 11:51 ق.ظ
    • مهران ملکی Reply

      سلام.
      ممنون از توجه شما. اصلاح شد.

      اکتبر 25, 2021 at 10:21 ق.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.