شِفر (کود) جستجو

کنترلر سرعت موتور PWM DC 20A را با یک آردوینو تغییر دهید

کنترلر سرعت موتور PWM DC 20A را با یک آردوینو تغییر دهید

در این آموزش، یاد می‌گیریم که چگونه یک کنترلر سرعت موتور PWM 20A DC را تغییر دهیم تا به طور یکپارچه با یک آردوینو کار کند. این تغییر امکان کنترل دقیق سرعت موتور را با استفاده از یک پتانسیومتر یا دستورات مستقیم از آردوینو فراهم می‌کند. نتیجه یک سیستم کنترل موتوری چندمنظوره است که می‌تواند در پروژه‌های مختلف یکپارچه‌سازی شود.

کنترلر سرعت موتور PWM DC 20A: نمای جلویی سمت چپ
کنترل کننده سرعت موتور PWM DC 20A: نمای جلو سمت چپ

برای این پروژه، ما کنترل‌کننده PWM را به آردوینو متصل خواهیم کرد و از شِفر (کود) برای مدیریت سرعت موتور بر اساس ورودی کاربر استفاده خواهیم کرد. این تنظیم می‌تواند در برنامه‌هایی که به کنترل سرعت متغیر نیاز دارند، مانند رباتیک یا سیستم‌های خودکار، مفید باشد. برای روشن‌تر شدن موضوع، می‌توانید به ویدیوی همراه با این آموزش مراجعه کنید (در ویدیو در 00:00).

توضیح سخت‌افزار

اجزای اصلی این پروژه شامل برد آردوینو، کنترلر سرعت موتور DC PWM با جریان 20A و یک پتانسیومتر است. آردوینو به عنوان مغز سیستم عمل می‌کند و سیگنال‌های PWM را به کنترلر موتور ارسال می‌کند تا سرعت موتور را تنظیم کند. کنترلر سرعت موتور خود از یک آی‌سی تایمر 555 برای تولید سیگنال‌های PWM استفاده می‌کند که دروازه یک MOSFET را کنترل می‌کند و توان موتور را تنظیم می‌کند.

کنترلر سرعت موتور PWM DC 20A: ابعاد
کنترلر سرعت موتور PWM DC 20A: ابعاد

پتانسیومتر به عنوان یک دستگاه ورودی عمل می‌کند و به کاربران امکان می‌دهد سرعت مورد نظر را به صورت دستی تنظیم کنند. با چرخاندن پتانسیومتر، مقاومت تغییر می‌کند و ولتاژ متناسبی به آردوینو ارسال می‌شود. آردوینو این ولتاژ را خوانده و سیگنال PWM ارسال شده به کنترل‌کننده موتور را مطابق آن تنظیم می‌کند.

جزئیات ورق مشخصات

تولیدکننده ناشناخته
عدد قطعه کنترل کننده سرعت موتور PWM DC 20A
ولتاژ منطق/ورودی و خروجی ۵ ولت
ولتاژ تأمین ۱۰-۶۰ ولت
جریان خروجی (به ازای هر کانال) 20 A
جریان اوج (به ازای هر کانال) ۴۰ A
راهنمایی در مورد فرکانس PWM به‌طور معمول ۱ کیلوهرتز
آستانه‌های منطقی ورودی ۰.۲ ولت (پایین)، ۲.۰ ولت (بالا)
افت ولتاژ / RDS(on)نرخ اشباع ۰.۱ ولت
محدودیت‌های حرارتی تا 85 درجه سانتی‌گراد
بسته بورد مدار چاپی استاندارد
یادداشت‌ها / انواع مدل‌های مختلف موجود است

  • اطمینان حاصل کنید که برای کاربردهای جریان بالا، هیت سینک مناسبی وجود دارد.
  • قبل از روشن کردن سیستم، سیم‌کشی را برای قطبیت صحیح بررسی کنید.
  • از خازن‌های جدا کننده در سراسر پایه‌های منبع تغذیه استفاده کنید.
  • فرکانس PWM را در حدود 1 کیلوهرتز برای عملکرد بهینه نگه‌دارید.
  • به محدودیت‌های ولتاژ ورودی (۱۰-۶۰ ولت) توجه داشته باشید.
کنترل کننده سرعت موتور PWM DC 20A: پتانسیومتر (مقاومت متغیر)
کنترل کننده سرعت موتور DC PWM 20A: پتانسیومتر (مقاومت متغیر)

دستورالعمل‌های سیم‌کشی

برای اتصال کنترلر سرعت موتور PWM DC 20A به آردوینو، ابتدا منبع تغذیه را وصل کنید. پایانه مثبت منبع تغذیه باید به ورودی V+ کنترلر موتور متصل شود، در حالی که پایانه منفی به زمین (GND) کنترلر وصل می‌شود. سپس، موتور را به پایانه‌های خروجی کنترلر وصل کنید و از اصالت قطبیت برای چرخش مورد نظر اطمینان حاصل کنید.

برای سیگنال PWM، پایه خروجی PWM را در کنترلر شناسایی کنید که به پایه مشخص شده PWM در آردوینو متصل خواهیم کرد (در این مورد، پایه5). همچنین زمین آردوینو را به زمین کنترل کننده موتور متصل کنید تا یک مرجع مشترک تضمین شود. در نهایت، اگر از پتانسیومتر استفاده می‌کنید، یک انتها را به پایه 5 ولت در آردوینو وصل کنید و پایه میانی را به یک پایه آنالوگ (مانندA0)، و آخرین پایه به زمین.

نمونه‌های شِفر (کود) و راهنما

شِفر (کود) با تعریف پایه خروجی PWM و پایه کنترل برای پتانسیومتر آغاز می‌شود.setup()تابع پایه PWM را به عنوان خروجی راه‌اندازی کرده و ارتباط سری را برای اشکال‌زدایی آغاز می‌کند.

#define pwmPin 5
#define controlPin A0

void setup() {
  pinMode(pwmPin, OUTPUT);
  Serial.begin(9600);
}

در loop()در این تابع، ما مقدار را از پتانسیومتر می‌خوانیم و آن را به یک محدوده PWM مناسب برای کنترل‌کننده موتور نگاشت می‌کنیم. این مقدار سپس به پایه PWM نوشته می‌شود که سرعت موتور را کنترل می‌کند.

void loop() {
  int potValue = analogRead(controlPin);
  int pwm = map(potValue, 0, 1023, 0, 255);
  analogWrite(pwmPin, pwm);
  Serial.print("PWM:");
  Serial.println(pwm);
  delay(500);
}

در نهایت، توابعی تعریف شده‌اند تا مقدار PWM را به درصد تبدیل کنند، که فهم سرعت موتور را بر اساس ورودی کاربر آسان‌تر می‌کند. شِفر (کود) کامل در زیر مقاله (در ویدیو در ۰۰:۰۰) بارگذاری می‌شود.

دمonstration / چه انتظاری باید داشته باشید

زمانی که همه چیز به درستی متصل شده و شِفر (کود) بارگذاری شد، می‌توانید انتظار داشته باشید که موتور به موقعیت پتانسیومتر پاسخ دهد. چرخاندن پتانسیومتر سرعت موتور را بر اساس سیگنال PWM ارسال شده از آردوینو افزایش یا کاهش می‌دهد. اطمینان حاصل کنید که منبع تغذیه در محدوده ولتاژ مورد نیاز است و موتور می‌تواند ولتاژ اعمال شده را تحمل کند.

اشتباهات رایج شامل سیم‌کشی نادرست است که می‌تواند منجر به چرخش معکوس موتور یا عدم توانایی در راه‌اندازی شود. همواره اتصالات را دوباره بررسی کنید و اطمینان حاصل کنید که گراندهای آردوینو و کنترلر موتور به هم متصل شده‌اند (در ویدیو در ساعت 04:30).

برچسب‌های زمانی ویدیو

  • ۰۰:۰۰ شروع
  • 00:40 مقدمه
  • :07 آماده‌سازی برای سیم‌کشی (تغییر آن)
  • 06:55 توضیحات سیم‌کشی
  • ۰۰:۴۰ شِفر (کود) توضیح داده شده
  • ۱۳:۱۵ نمایش

تصاویر

کنترلر سرعت موتور PWM DC 20A: اصلی
کنترلر سرعت موتور PWM DC 20A: اصلی
کنترلر سرعت موتور PWM DC 20A: نمای بالای دستگاه
کنترلر سرعت موتور PWM DC 20A: نمای بالای دستگاه
کنترلر سرعت موتور PWM DC 20A: ابعاد
کنترلر سرعت موتور PWM DC 20A: ابعاد
کنترل کننده سرعت موتور PWM DC 20A: پتانسیومتر (مقاومت متغیر)
کنترل کننده سرعت موتور PWM DC 20A: پتانسیومتر (مقاومت متغیر)
کنترل‌گر سرعت موتور PWM DC 20A: نمای روبرو
کنترل‌گر سرعت موتور PWM DC 20A: نمای روبرو
کنترلر سرعت موتور PWM DC 20A: نمای رو به جلو از سمت راست
کنترلر سرعت موتور PWM DC 20A: نمای رو به جلو از سمت راست
کنترل‌کننده سرعت موتور PWM DC 20A: نمای جلو سمت چپ
کنترل‌کننده سرعت موتور PWM DC 20A: نمای جلو سمت چپ
کنترلر سرعت موتور PWM DC 20A: نمای PCB پائین
کنترلر سرعت موتور PWM DC 20A: نمای PCB پائین
کنترل کننده سرعت موتور PWM DC 20A: خط مثبت مشترک
کنترل کننده سرعت موتور PWM DC 20A: خط مثبت مشترک
222-Hack: Control a 20A DC Motor with an Arduino using 20A DC 10-60V PWM
زبان: C++
/*
 * Modify 80NF70 PWM 20A Module to control with Arduino
 * Modify the "DC 10-60V 20A Motor Speed Control Regulator PWM Motor Speed Controller Switch"
 * 
 * 
 * Written by Ahmad Shamshiri
 * on Saturday, July 27, 2019 at 18:23
 * in Ajax, Ontario, Canada
 * www.Robojax.com
 * Watch the video instruction: https://youtu.be/ipFxYQkB5uw
 * See the module on eBay. Get this module from eBay:
 https://www.ebay.com/sch/i.html?&_nkw=20A+DC10-60V+PWM&_sacat=0
 * or search for "DC 10-60V 20A Motor Speed Control Regulator PWM Motor Speed Controller"
 * Watch full review of this module: https://youtu.be/kgs_FILyppk
 */
 
#define pwmPin 5
#define controlPin A0

void setup() {
  pinMode(pwmPin,OUTPUT);
  Serial.begin(9600);

}

void loop() {
  int potValue = analogRead(controlPin);

  int pwm =map(potValue, 0,1023, 0, 255);

    //pwm = toPWM(0);

  analogWrite(pwmPin,pwm);
  Serial.print("PWM:");  
  Serial.print(pwm);
  Serial.print(" it is:");  
  Serial.print(pwmToPercent(pwm));  
  Serial.println("%");    
  
  delay(500);
}

/*
 * @brief converts % value from 0 to 100% to 0-255
 * @param v is integer value representing % from 0-100
 * @return will return value from 0 to 255
 * Written by Ahmad Shamshiri for robojax.com
 * on July 30, 2019 in Ajax, Ontario, Canada
 */
int toPWM(int v){
  return map(v, 0,100,0,255);
}//

/*
 * @brief converts Arduino PWM value which is 0 to 255 to 0-100%
 * @param p is integer value representing  from 0-255
 * @return will return value from 0 to 255
 * Written by Ahmad Shamshiri for robojax.com
 * on July 30, 2019 in Ajax, Ontario, Canada
 */
int pwmToPercent(int p)
{
 return map(p, 0,255,0,100); 
}

فایل‌ها📁

هیچ فایلی موجود نیست.