در این پست از سایت اِمیک شما با نحوه راه اندازی PWM در اردوینو اشنا می شوید. واحد PWM کاربردهای مختلفی دارد که در پروژه های اینده مانند کنترل سرعت موتور و … استفاده خواهد شد.
PWM چیست؟ PWM یا Pulse Width Modulation ( مدولاسیون عرض پالس ) یک موج مربعی است که به طور متناوب ۰ و ۱ می شود. دامنه این موج می تواند بر حسب نیاز ما متغیر باشد, که با تغییر Duty Cycle (نسبت سطح ۱ در یک دوره تناوب) می توان برای کنترل موتور و… از ان استفاده کرد. به تصویر زیر دقت کنید بهتر متوجه می شوید :
در این پروژه ما از برد اردوینو UNO استفاده خواهیم کرد, برد اردوینو یونو دارای 6 پین برای تولید موج PWM می باشد که شماره ی این پین ها در اردوینو یونو 3,5,6,9,10,11 می باشد که اگر به کنار این پین ها دقت کنید با علامت ~ مشخص شده اند. در ادامه شماتیک این پروژه ساده قرار داده شده است :
همانطور که در شماتیک بالا می بینید, ما از ADC برد اردوینو هم برای اندازه گیری ولتاژ انالوگ تولیدی توسط پتانسیومتر استفاده کرده ایم که با توجه به این ولتاژ موج PWM در پین 11 برد اردوینو تولید می شود و در نتیجه با تغییر پتانسیومتر نور LED متصل به پین 11 کم و زیاد خواهد شد
برنامه پروژه :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//////// WWW.EMIC.IR //////// void setup() { analogReference(DEFAULT); //دستور روبرو ولتاژ رفرنس را برای کار با واحد انالوگ اردوینو مشخص میکند// pinMode(A0, INPUT); //دستور روبرو پین انالوگ صفر اردوینو را ورودی می کند// } void loop() { int i ; i = analogRead(A0) / 4.015; //اردوینو و تقسیم کردن ان بر 4.015 تا در بازه ی 0 تا 255 شود A0 خواندن مقادیر انالوگ از پین// analogWrite(11, i); //روی پین 11 اردوینو i با توجه به مقدار PWM ایجاد موج// delay(100); } |
برنامه بسیار ساده هست و توضیحات داخل برنامه نوشته شده است. فقط در خط 9 برنامه دلیل اینکه مقدار خوانده شده از پین انالوگ ما بر 4.015 تقسیم شده است این است که مقدار خوانده شده انالوگ ما در بازه 0 تا 1024 می باشد و ما باید این عدد را در بازه 0 تا 255 تبدیل کنیم تا بشود در دستور analogWrite از ان استفاده کرد. به همین خاطر با یک نسبت ساده 1024 را بر 255 تفسیم میکنیم و حاصل 4.015 می شود.
در صورتی که با دستورات تخصصی اردوینو اشنا نیستید بهتر است این پست را مطالعه کنید, اگه سوالی در مورد برنامه یا هر قسمت پروژه داشتید می تونید در قسمت نظرات مطرح کنید .
کلیپ تست پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…
سلام
دستور توضیح دهید؟ عدد 4.015 از کجا آوردید؟
اردوینو و تقسیم کردن ان بر 4.015 تا در بازه ی 0 تا 255 شود A0
سلام, عددی که پین انالوگ اردوینو به ما می دهد بین 0 تا 1023 هست و ما می خواهیم بین 0 تا 255 باشد که با تقسیم 1023 بر 255 این عدد بدست می اید.
خوب بود ممنون