خروجی تصویری و کنترل LED با خروجی دیجیتال و PWM | قسمت 39 آموزش آردوینو

16 بازدید
۱۴۰۴-۰۸-۲۶
6 دقیقه
  • نویسنده: Arduino captain
  • درباره نویسنده: من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!

در قسمت 38 از آموزش آردوینو به بررسی تشخیص چرخش با استفاده از ژیروسکوپ، تشخیص جهت و خواندن شتاب پرداختیم. در این قسمت قصد داریم درباره خروجی تصویری صحبت کنیم.

خروجی تصویری

خروجی‌های تصویری به آردوینو این امکان را می‌دهند که اطلاعات را به کاربران نمایش دهد. در همین راستا، آردوینو از طیف گسترده‌ای از دستگاه‌های LED پشتیبانی می‌کند. در این قسمت ابتدا درباره‌ی خروجی‌های دیجیتال و آنالوگ در آردوینو صحبت می‌کنیم و توضیح می‌دهیم که آردوینو چگونه با دیودهای نورافشان (LED) کار می‌کند. این مقدمه  اگر هنوز با نحوه‌ی استفاده از خروجی‌های دیجیتال و آنالوگ (دستورات digitalWrite و analogWrite) یا با نحوه‌ی استفاده از LED در مدار آشنا نیستید، نقطه‌ی شروع خوبی است.

تمام پین‌هایی که می‌توان از آن‌ها برای ورودی دیجیتال استفاده کرد، می‌توانند برای خروجی دیجیتال نیز مورداستفاده قرار گیرند. خروجی دیجیتال باعث می‌شود که ولتاژ روی یک پین یا در حالت بالا (HIGH) — برابر با ۵ یا ۳.۳ ولت بسته به نوع برد — باشد، یا در حالت پایین (LOW) — یعنی ۰ ولت. برای روشن یا خاموش‌کردن یک وسیله از تابع digitalWrite(outputPin, value) استفاده می‌شود. این تابع دو پارامتر دارد: outputPin پینی است که می‌خواهید کنترل کنید و value مقداری است که یا HIGH ۵ یا ۳.۳ ولت است یا LOW ۰ ولت.

برای اینکه ولتاژ پین نسبت به این فرمان واکنش نشان دهد، پین باید ابتدا در حالت خروجی (OUTPUT) تنظیم شده باشد. این کار با استفاده از دستور pinMode(outputPin, OUTPUT) انجام می‌شود.

خروجی آنالوگ

اصطلاح «آنالوگ» به سطوحی اشاره دارد که می‌توانند به‌صورت تدریجی تا حداکثر مقدار خود تغییر کنند (برای مثال، مثل دیمر چراغ یا کنترل صدا). در آردوینو، تابعی به نام analogWrite وجود دارد که می‌توان از آن برای کنترل مواردی مانند شدت روشنایی یک LED متصل به آردوینو استفاده کرد. تابع analogWrite در واقع به طور واقعی «آنالوگ» نیست، اما می‌تواند مانند یک سیگنال آنالوگ رفتار کند، همان‌طور که در ادامه خواهید دید.

این تابع از تکنیکی به نام مدولاسیون عرض پالس یا PWM (Pulse Width Modulation) استفاده می‌کند که با بهره‌گیری از پالس‌های دیجیتال، یک سیگنال شبیه به آنالوگ را شبیه‌سازی می‌کند. PWM (مدولاسیون عرض پالس) با تغییر نسبت زمان روشن بودن پالس‌ها به زمان خاموش بودن آن‌ها کار می‌کند، همان‌طور که در شکل ۱ نشان‌داده‌شده است. برای شبیه‌سازی خروجی در سطح پایین، پالس‌هایی تولید می‌شود که فقط برای مدت کوتاهی روشن هستند.

برای شبیه‌سازی خروجی در سطح بالاتر، پالس‌ها بیشتر روشن می‌مانند و زمان خاموش بودنشان کمتر است. وقتی این پالس‌ها به اندازه‌ی کافی سریع تکرار شوند (در بردهای آردوینو حدود ۵۰۰ بار در ثانیه یا بیشتر)، چشم انسان دیگر نمی‌تواند این چشمک‌زدن‌ها را تشخیص دهد. در نتیجه، خروجی وسایلی مانند LED به نظر می‌رسد که به‌صورت یکنواخت و نرم تغییر می‌کند، درحالی‌که در واقع فقط نسبت زمان روشن و خاموش پالس‌ها در حال تغییر است.

خروجی تصویری و کنترل LED با خروجی دیجیتال و PWM | قسمت 39 آموزش آردوینو

شکل 1: خروجی PWM برای مقادیر مختلف تابع analogWrite

آردوینو تنها تعداد محدودی پین دارد که می‌توان از آن‌ها برای خروجی PWM استفاده کرد. در بردهای مختلف، این پین‌ها متفاوت هستند. در Arduino Uno و بردهای مشابهی که بر پایه‌ی تراشه‌ی ATmega328 ساخته شده‌اند، پین‌های زیر برای PWM قابل استفاده‌اند:

3، 5، 6، 9، 10 و 11.

در Arduino Mega می‌توان از پین‌های 2 تا 13 و همچنین 44 تا 46 برای خروجی PWM استفاده کرد. در Arduino Nano تنها پنج خروجی PWM وجود دارد. در بردهای جدیدتر مانند Arduino Zero ،SparkFun RedBoard Turbo و Adafruit Metro Express M0، تقریباً تمام پین‌های دیجیتال از PWM پشتیبانی می‌کنند، به جز پین‌های 2 و 7. بسیاری از پروژه‌هایی که در ادامه معرفی می‌شوند از پین‌هایی استفاده می‌کنند که هم برای خروجی دیجیتال و هم PWM مناسب‌اند، تا در صورت تغییر مدار یا آزمایش پروژه‌های مختلف، نیاز به سیم‌کشی مجدد نباشد.

اگر می‌خواهید از پین‌های دیگری برای خروجی PWM استفاده کنید، به یاد داشته باشید که باید یکی از پین‌هایی را انتخاب کنید که از تابع analogWrite پشتیبانی کند، زیرا سایر پین‌ها هیچ خروجی‌ای تولید نخواهند کرد. بردهای Zero ،RedBoard Turbo و Metro Express M0 همچنین دارای یک پین ویژه به نام DAC مبدل دیجیتال به آنالوگ هستند که معمولاً همان پین A0 است. این پین برخلاف PWM، سیگنال آنالوگ واقعی تولید می‌کند. البته این خروجی برای کنترل مواردی مانند شدت روشنایی LED یا سرعت موتور مناسب نیست، زیرا در این موارد PWM عملکرد بهتری دارد، اما برای تولید سیگنال‌های صوتی بسیار مفید است.

کنترل نور

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

شاید برای شما مفید باشد:
آموزش پردازش تصویر در پایتون – جلسه 15: حذف پس زمینه

مشخصات LED

LED یا دیود نوری، یک قطعه‌ی نیمه‌هادی است که از دو پایه تشکیل شده است: آند و کاتد. زمانی که ولتاژ پایه‌ی آند از ولتاژ پایه‌ی کاتد بیشتر باشد (به اندازه‌ی مقداری که آن را ولتاژ مستقیم می‌نامند)، LED  روشن شده و نور ساطع می‌کند. به طور معمول، پایه‌ی بلندتر LED نشان‌دهنده‌ی آند است و روی بدنه‌ی آن معمولاً یک قسمت صاف یا بریدگی کوچک وجود دارد که محل کاتد را مشخص می‌کند. رنگ نور LED و مقدار دقیق ولتاژ لازم برای روشن‌شدن آن، به جنس و ساختار داخلی دیود بستگی دارد.

یک LED قرمز معمولی دارای ولتاژ مستقیم (Forward Voltage) حدود ۱٫۸ ولت است. اگر ولتاژ پایه‌ی آند حداقل ۱٫۸ ولت بیشتر از ولتاژ پایه‌ی کاتد نباشد، هیچ جریانی از LED عبور نمی‌کند و در نتیجه نوری تولید نخواهد شد. زمانی که ولتاژ آند حدود ۱٫۸ ولت بیشتر از کاتد شود، LED روشن می‌شود (هدایت می‌کند) و در عمل مانند یک اتصال کوتاه عمل می‌کند. به همین دلیل، برای جلوگیری از عبور جریان بیش از حد، باید حتماً از یک مقاومت محدودکننده‌ی جریان در مدار استفاده کنید؛ در غیر این صورت، LED در مدت کوتاه یا بلندمدت خواهد سوخت.

ممکن است نیاز باشد به دیتاشیت LED مراجعه کنید تا LED مناسب برای کاربرد خود را انتخاب کنید، به‌ویژه برای تعیین ولتاژ مستقیم (Forward Voltage) و حداکثر جریان مجاز.

جدول‌های 1 و 2 مهم‌ترین مشخصاتی را که باید در دیتاشیت LED بررسی کنید، نشان می‌دهند.

خروجی تصویری و کنترل LED با خروجی دیجیتال و PWM | قسمت 39 آموزش آردوینو

جدول 1: مشخصات کلیدی دیتاشیت: حداکثر مقادیر مطلق (Absolute Maximum Ratings)

خروجی تصویری و کنترل LED با خروجی دیجیتال و PWM | قسمت 39 آموزش آردوینو

جدول 2: مشخصات کلیدی دیتاشیت: ویژگی‌های الکترو-اپتیکی (Electro-Optical Characteristics)

پین‌های آردوینو در بردهای Uno ،Leonardo و Mega می‌توانند تا ۴۰ میلی‌آمپر جریان تأمین کنند. این مقدار برای LEDهای با شدت نور متوسط کافی است، اما برای LEDهای با روشنایی بالا یا چند LED متصل به یک پین کافی نیست. در پروژه 3 نشان داده شده است که چگونه می‌توان با استفاده از ترانزیستور جریان عبوری از LED را افزایش داد. بردهایی با ولتاژ ۳٫۳ ولت ظرفیت جریان کمتری دارند؛ بنابراین لازم است دیتاشیت برد خود را بررسی کنید تا از عبور جریان بیش از حد مجاز جلوگیری شود.

LEDهای چند رنگ (Multicolor LEDs) از دو یا چند LED در یک بسته فیزیکی تشکیل شده‌اند. این LEDها ممکن است بیش از دو پایه داشته باشند تا امکان کنترل جداگانه رنگ‌های مختلف فراهم شود. باتوجه‌به تنوع بسته‌بندی‌ها، بهتر است دیتاشیت LED خود را بررسی کنید تا نحوه اتصال پایه‌ها به‌درستی مشخص شود.

مالتی‌پلکسینگ (Multiplexing)

در کاربردهایی که نیاز به کنترل تعداد زیادی LED دارند، می‌توان از روشی به نام مالتی‌پلکسینگ استفاده کرد. مالتی‌پلکسینگ با تعویض گروهی LEDها (معمولاً به‌صورت ردیف‌ها یا ستون‌ها) به‌صورت متوالی کار می‌کند.

۸ پین برای کنترل بخش‌های یک رقم برای تمام ارقام استفاده می‌شوند.

۴ پین برای انتخاب اینکه کدام رقم فعال باشد استفاده می‌شوند.

اگر این ارقام به اندازه‌ی کافی سریع (حداقل ۲۵ بار در ثانیه) اسکن شوند، چشم انسان تصور می‌کند که LEDها همواره روشن هستند و پالس‌ها قابل‌مشاهده نیستند، این پدیده به نام پایداری دید (Persistence of Vision) شناخته می‌شود.

چارلی‌پلکسینگ (Charlieplexing) نیز از مالتی‌پلکسینگ استفاده می‌کند و از خاصیت قطبیت LEDها بهره می‌برد (LED تنها زمانی روشن می‌شود که آند مثبت‌تر از کاتد باشد) تا بتوان با معکوس کردن قطبیت بین دو LED جابه‌جا شد و آن‌ها را کنترل کرد.

حداکثر جریان پین

LEDها می‌توانند جریانی بیشتر از آنچه که چیپ آردوینو قادر به تحمل آن است مصرف کنند. دیتاشیت چیپ ATmega328P روی برد Arduino Uno، حداکثر جریان مطلق هر پین را ۴۰ میلی‌آمپر مشخص کرده است.

چیپ همچنین می‌تواند در مجموع تا ۲۰۰ میلی‌آمپر جریان تأمین یا جذب کند، بنابراین باید اطمینان حاصل شود که جمع جریان کل پین‌ها از این مقدار تجاوز نکند. به‌عنوان‌مثال، پنج پین در حالت HIGH (سورس کردن جریان) و پنج پین در حالت LOW (سینک‌کردن جریان) که هر پین ۴۰ میلی‌آمپر جریان دارد، نباید از ۲۰۰ میلی‌آمپر کل تجاوز کند.

برای عملکرد قابل‌اعتماد و ایمن بهتر است که طراحی مدارها جریان را به‌خوبی در محدوده‌ی کمتر از حداکثر مطلق نگه دارد، برای مثال حداکثر ۳۰ میلی‌آمپر برای هر پین، تا حاشیه‌ای ایمنی وجود داشته باشد. در کاربردهای تفریحی و هابی که ممکن است جریان بیشتری موردنیاز باشد و کاهش میزان اطمینان قابل‌قبول است، می‌توان جریان هر پین را تا ۴۰ میلی‌آمپر رساند، البته به شرط آنکه محدودیت‌های ۲۰۰ میلی‌آمپر برای کل جریان خروجی و ۲۰۰ میلی‌آمپر برای کل جریان ورودی (سینک) رعایت شود.

✅نکته

دیتاشیت مقدار ۴۰ میلی‌آمپر را به‌عنوان حداکثر جریان مطلق اعلام کرده است، و برخی مهندسان ممکن است تمایلی نداشته باشند که پین‌ها را نزدیک این مقدار راه‌اندازی کنند. بااین‌حال، این مقدار ۴۰ میلی‌آمپر قبلاً توسط Atmel کاهش‌یافته و به‌عنوان جریانی ایمن برای پین‌ها در نظر گرفته شده است.

شاید برای شما مفید باشد:
واحد DMA در میکروکنترلر WCH - قسمت 15 آموزش CH

در پروژه‌ها و مثال‌هایی که در ادامه آمده است، از همین مقدار ۴۰ میلی‌آمپر به‌عنوان حداکثر جریان استفاده شده است؛ اما اگر قابلیت اطمینان مدار اهمیت دارد، کاهش مقدار به ۳۰ میلی‌آمپر برای هر پین توصیه می‌شود تا یک حاشیه بیشتر ایجاد شود.

به یاد داشته باشید که بردهای ۳٫۳ ولت و حتی برخی بردهای ۵ ولت جریان کمتری تحمل می‌کنند:

  • Uno WiFi Rev 2: حداکثر ۲۰ میلی‌آمپر
  • Arduino Zero: حداکثر ۷ میلی‌آمپر

اگر از برد دیگری استفاده می‌کنید، حتماً دیتاشیت برد خود را بررسی کنید.

اطلاعات
16
0
0
اشتراک و حمایت
profile نویسنده: Arduino captain متخصص الکترونیک

من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!


ویراستار: محمد کبیر
مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله