با ما همراه باشید

ADC

کنترل سرعت موتور DC با استفاده از آردوینو و پتانسیومتر

منتشر شده

در

 

کنترل سرعت موتور DC با استفاده از آردوینو و پتانسیومتر

موتور DC، موتور مورد استفاده در پروژه های رباتیک و الکترونیک است. برای کنترل سرعت موتور DC ما روش های مختلفی داریم اما در این پروژه ما کنترل سرعت موتو DC با استفاده از PWM است. در این پروژه ما می توانیم سرعت موتور DC را با پتانسیومتر  کنترل کنیم و قصد داریم سرعت را با چرخاندن پتانسیومتر تنظیم کنیم.

 

مدولاسیون عرض پالس(PWM) چیست:

PWM چیست؟ PWM یک روشی هست که با استفاده از آن، ما می توانیم ولتاژ یا قدرت را کنترل کنیم. برای درک ساده تر آن، اگر شما برای راه اندازی یک موتور، ۵ ولت استفاده می کنید، موتور با سرعت حرکت می کند، در حال حاضر اگر ولتاژ اعمال شده را با ۲ بار کاهش دهیم، ما ۳ ولت را به موتور اعمال می کنیم و سرعت موتور نیز کاهش می یابد. این مفهوم در پروژه برای کنترل ولتاژ با استفاده از PWM مورد استفاده قرار می گیرد. (برای درک بیشتر در مورد PWM، این مدار را چک کنید: دیمر LED  یک وات).

 

% Duty cycle = (TON/(TON + TOFF)) *100

Where, TON = HIGH time of the square wave

       TOFF = LOW time of square wave

در حال حاضر اگر سوئیچ در شکل به طور مداوم در طول یک دوره بسته است، موتور در آن زمان به طور مداوم روشن خواهد شد. اگر سوئیچ برای ۸ میلی ثانیه بسته شده و برای مدت ۲ میلی ثانیه در طول یک دور از ۱۰ میلی ثانیه باز شود، موتور در زمان ۸ میلی ثانیه روشن خواهد شد. در حال حاضر میانگین ترمینال برای  یک دوره ۱۰میلی ثانیه ای = زمان روشن کردن / (زمان روشن کردن + زمان خاموش کردن)، این چرخه ادامه دارد و ۸۰٪ است،  (8 / (8 + 2)) ، بنابراین میانگین ولتاژ خروجی ۸۰٪ ولتاژ باتری خواهد بود. در حال حاضر چشم انسان نمیتواند ببیند که موتور برای ۸ میلی ثانیه روشن، و برای ۲ میلی ثانیه خاموش است، بر همین اساس،  موتور DC با سرعت ۸۰ درصد چرخانده می شود.

در مورد دوم، سوئیچ برای ۵ میلی ثانیه بسته شده و برای ۵ میلی ثانیه در دوره زمانی ۱۰ میلی ثانیه ای باز است، به طوری که متوسط ولتاژ ترمینال خروجی ۵۰٪ از ولتاژ باتری خواهد بود. می گوییم اگر ولتاژ باتری ۵ ولت باشد و کارکرد مدار ۵۰٪ باشد، بنابراین ولتاژ متوسط ترمینال ۲٫۵ ولت خواهد بود.

در حالت سوم چرخه کار ۲۰٪ است و ولتاژ متوسط  ترمینال۲۰٪ از ولتاژ باتریست.

ما در بسیاری از پروژه ها از PWM با آردوینو استفاده کرده ایم:

دیمر LED مبتنی بر آردینو با استفاده از PWM

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

کنترل موتور DC با استفاده از آردوینو

 

 

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

 

آردوینو UNO

موتور DC

ترانزیستور ۲۲۲۲N2

پتانسیومتر ۱۰۰ کیلو اهم

خازن ۰٫۱ میکرو فاراد

ورق کاغذ

تیکه های سیم

 

مدار:

 

 

کد و توضیح

 

کد کامل آردوینو برای کنترل سرعت موتور DC با استفاده از پتانسیومتر در انتهای داده شده است.

در کد زیر ما متغیرهای c1 و  c2 را اولویت بندی کرده ایم و پایه آن A0  را برای خروجی پتانسیومتر و پایه ۱۲ برای pwm تعیین کرده ایم.

int pwmPin = 12;

int pot = A0;

int c1 = 0; 

int c2 = 0; 

حالا، در کد زیر، تنظیم پایه A0 به عنوان ورودی و ۱۲ (که پایه PWM است) به عنوان خروجی است.

void setup()  { 

        pinMode(pwmPin, OUTPUT); // declares pin 12 as output 

        pinMode(pot, INPUT);  // declares pin A0 as input

}

حالا، در ()void loop ، مقدار آنالوگ (از ۰A) می خوانیم و با استفاده ازمقدار خوانده شده ای آنالوگ پتانسیومتر و ذخیره کردن آن به نام  متغیر C2 است. سپس مقدار C2 را از ۱۰۲۴ بیرون بیاورید و حاصل را در C1 ذخیره کنید. پس PWM پایه ۱۲ آردوینو  در حالت HIGH قرار دهید، و سپس  یک تاخیر در مقدار C1 بسازید، آن پایه LOW را وارد کنید. باز هم بعد از تاخیر مقدار C2 حلقه ادامه می یابد.

دلیل جدا کردن مقدار آنالوگ از ۱۰۲۴ این است که ADC  (مبدل آنالوگ به دیجیتال) آردوینو Uno دارای وضوح ۱۰ بیتی است (بنابراین مقادیر عدد صحیح از ۰ تا ۲^ ۱۰ = ۱۰۲۴ است). این به این معنی است که ولتاژ ورودی بین ۰ و ۵ ولت را به مقادیر عدد صحیح بین ۰ تا ۱۰۲۴ نشان می دهد. بنابراین اگر مقدار ورودی  را به (۱۰۲۴/۵) ضرب کنیم، مقدار دیجیتالی ولتاژ ورودی را می گیریم. در اینجا نحوه استفاده از ورودی ADC را در آردوینو یاد بگیرید.

void loop()

{

            c2= analogRead(pot); 

            c1= 1024-c2;

             digitalWrite(pwmPin, HIGH); // sets pin 12 HIGH 

             delayMicroseconds(c1);   // waits for c1 uS (high time) 

             digitalWrite(pwmPin, LOW);  // sets pin 12 LOW 

             delayMicroseconds(c2);   // waits for c2 uS (low time)

}

شرح کار:

در این مدار، برای کنترل سرعت موتور DC، ما از یک پتانسیومتر ۱۰۰ کیلو اهم برای تغییر سیگنال کاری سیگنال PWM استفاده می کنیم. پتانسیومتر ۱۰۰ کیلواهم به پایه A0 که ورودی آنالوگ آردوینو UNO متصل است و موتور DC به پایه ۱۲ آردوینو (که پین PWM است) متصل می شود. کار برنامه آردوینو بسیار ساده است، زیرا ولتاژ آن از پایه آنالوگ A0 خوانده می شود. ولتاژ در پایه آنالوگ با استفاده از پتانسیومتر متغیر است. بعد از انجام برخی محاسبات لازم، چرخه کار با توجه به آن تنظیم می شود.

به عنوان مثال، اگر مقدار ۲۵۶ را به ورودی آنالوگ بفرستیم، موقعی که زمان HIGH  است ۷۶۸ میلی ثانیه (۱۰۲۴-۲۵۶) خواهد بود و زمان LOW ، ۲۵۶ میلی ثانیه است. بنابراین، به همین سادگی به معنای چرخه کاری ۷۵٪ است. چشم ما نمی تواند چنین نوسان فرکانس بالا را ببیند و به نظر می رسد که موتور به طور مداوم با سرعت ۷۵٪ روشن است. به طوری که ما می توانیم سرعت را با استفاده از پتانسیومتر کنترل کنیم.

 

کد

 

int pwmPin = 12; // assigns pin 12 to variable pwm

int pot = A0; // assigns analog input A0 to variable pot

int c1 = 0;   // declares variable c1

int c2 = 0;   // declares variable c2

void setup()  // setup loop

{

  pinMode(pwmPin, OUTPUT); 

  pinMode(pot, INPUT);  

}

void loop()

{

  c2= analogRead(pot); 

  c1= 1024-c2;         // subtracts c2 from 1000 ans saves the result in c1

  digitalWrite(pwmPin, HIGH); 

  delayMicroseconds(c1);   

  digitalWrite(pwmPin, LOW);  

  delayMicroseconds(c2);  

}

 

برای دانلود فایل های این پروژه اینجا کلیک کنید.

ادامه مطلب
3 دیدگاه

1 دیدگاه

یک پاسخ بگذارید

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

مطالب برتر

>