آردوینوآموزش آردوینو

آموزش گام به گام آردوینو قسمت هفتم: ورودی و خروجی آنالوگ

در قسمت های قبل از سری آموزش های آردوینو با ورودی و خروجی های دیجیتال آشنا شدیم. یعنی متوجه شدیم که از همه پایه های میکرو کنترلر میتوان به عنوان خروجی ۵ ولت یا ۰ ولت یا تشخیص ورودی ۵ ولت و ۰ ولت استفاده کرد. حال تصور کنید میخواهیم به جای ولتاژ ۵ ولت، بر روی خروجی پایه های آردوینو ورودی ۳.۵ ولت را داشته باشیم، و یا بجای تشخیص آنکه ورودی ۵ ولت و یا ۰ ولت منطقی است، انواع ولتاژ های ورودی را تشخیص دهیم. برای این کار استفاده از همه ی پایه های میکرو کنترلر امکان پذیر نیست و باید از پایه های خاصی استفاده کرد. این پایه ها ورودی و خروجی آنالوگ هستند که در مورد آنها توضیح خواهیم داد.

توابع ورودی آنالوگ

()analogReference

این دستور مرجع ولتاژ مورد استفاده برای ورودی آنالوگ است. که معمولا حداکثر مقدار ورودی برای آن انتخاب می شود.

(analogReference(type

که پارامتر type یکی از موارد زیر است:

  • DEFAULT در این حالت ولتاژ مرجع در حالت پیش فرض که ۵ یا ۳.۳ ولت (بر اساس نوع برد) است تنظیم می شود.
  • INTERNAL این مورد ولتاژ مرجع در آردوینوهای برپایه Atmega328 را ۱.۱ ولت در نظر می گیرد و در دیگر بردها این دستور کاربردی ندارد.
  • INTERNAL1V1 این مورد مخصوص بورد Arduino Mega می باشد و ولتاژ مرجع را ۱.۱ ولت در نظر میگیرد.
  • INTERNAL2V56 این مورد مخصوص بورد Arduino Mega می باشد و ولتاژ مرجع را۲.۵۶ ولت در نظر میگیرد.
  • EXTERNAL این حالت در تمامی بردها کاربرد دارد و باید ولتاژی بین ۰ تا ۵ ولت را به پایه AREF اعمال کنید (در بردهای ۳.۳ ولتی حداکثر ۳.۳ ولت)

هشدار: هرگز ولتاژ کمتر از ۰ و بیشتر از ۵ یا ۳.۳ به AREF اعمال نکنید و وقتی اعمال کردید حتما پارامتر EXTERNAL  را در کد وارد کنید. در غیر اینصورت ولتاژ ورودی با ولتاژ داخلی پایه AREF اتصال کوتاه می شود و چیپ را می سوزاند!

()analogRead

مقدار ولتاژ آنالوگ را از پین مشخص شده می خواند:

(analogRead(pin

پارامتر pin شماره پایه آنالوگ را مشخص می کند (A0,A1,…). پایه های آنالوگ ورودی در آردوینو ۱۰ بیتی هستند به این معنی که ولتاژ از ۰ تا حداکثر(۵ یا ۳.۳ولت) را تبدیل به ۰ تا ۱۰۲۳ می کنند. که دقت این تبدیل برابر ۴.۹میلی ولت در هر واحد بین ۰ تا ۱۰۲۳ می باشد. حداکثر ولتاژ وردی برای پایه های آنالوگ ورودی توسط دستور analogReference() مشخص می گردد.

سرعت نمونه برداری آنالوگ حدود ۱۰۰ میکرو ثانیه می باشد به این معنی که در هر ثانیه حدودا ۱۰۰۰۰ مرتبه مقدار ورودی خوانده می شود.

مدار زیر را ببندید و کد ارایه شده را روی اردوینو بریزید. با چرخاندن پتانسیومتر می توانید مقادیر ولتاژ خوانده شده را از ۰ تا ۱۰۲۳ در سریال مانیتور مشاهده کنید:

ورودی و خروجی آنالوگ
int val = 0;         
void setup()
 
{
 
  Serial.begin(9600);          
 
}

void loop()
 
{
 
  val = analogRead(A0);    //خواندن مقدار و ذخیره در متغیر
 
  Serial.println(val);     //نمایش مقدار آنالوگ
  delay(100);
}

توابع خروجی آنالوگ

()analogWrite

این دستور برای ساختن ولتاژ آنالوگ در پین مشخص شده به کار می رود. این ولتاژ آنالوگ توسط موج های مربعی PWM ساخته می شوند و می توانید از مقدار ۰ تا ۲۵۵ را به آن اختصاص دهید. فرکانس پین های PWM معمولا حدود ۴۹۰ هرتز است در بردهای UNO و مدل های مشابه پین های شماره ۵ و ۶ فرکانس ۹۸۰هرتز دارند.

در بردهای آردوینو معمولا پین هایی که علامت ~ در کنرشان باشد قابلیت PWM دارند.

در برد آردوینو Due پین های DAC1 و DAC2 نیز قابلیت آنالوگ دارند با این تفاوت که در این پین ها ولتاژ آنالوگ واقعی تولید می شود.

برای فراخوانی analogWrite() نیازی به استفاده از دستور pinMode() نیست.

در مدار شکل قبل یک LED به پایه ۹ وصل کنید و برنامه زیر را روی آردوینو بریزید:

ورودی و خروجی آنالوگ
int ledPin = 9;     
  int val = 0;      
  void setup()
  {
   Serial.begin(9600);
  }
  void loop()
  {
    val = analogRead(A0);   // ریختن مقدار ورودی در متغیر
    analogWrite(ledPin, val / 4);  //چون وروی ما بر حسب ۰ تا ۱۰۲۳ است، برای آنکه خرجی عددی بین ۰ تا ۲۵۵ باشد، آنرا بر ۴ تقسیم میکنیم.
    Serial.println(val/4);
    delay(100);
  }

دستور analogRead() مقدار عددی بین ۰ تا ۱۰۲۳ باز می گرداند و دستور analogWrite مقادیر بین ۰ تا ۲۵۵ را قبول می کند به همین دلیل یک تقسیم بر ۴ به کار رفته است.
با چرخاندن پتانسیومتر ورودی و خروجی آنالوگ در سریال مانیتور نمایش داده خواهد شد و نور LED نیز کم و زیاد میشود.


این قسمت از آموزش نیز به پایان رسید، امیدواریم مطلب مورد توجه شما عزیزان قرار گرفته باشد.
همچنین میتوانید از مطالب زیر دیدن کنید:
arduino analog project
قسمت بعدی آموزش

برچسب ها
نمایش بیشتر

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

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

دکمه بازگشت به بالا
بستن