موقتا برای پشتیبانی (دوره ها) از طریق پیام رسان آیگپ یا تلگرام با آیدی @irenxdotir در ارتباط باشید.

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

آموزش آنالوگ به دیجیتال ADC در آردوینو

سلام. آموزش کامل آنالوگ به دیجیتال در آردوینو – ADC Arduino (آموزش آردوینو #4) را آماده کردیم. در قسمت قبل به صورت کامل با نحوه برنامه نویسی یک پروژه ساده در Arduino و بارگذاری کد آن در برد آردوینو آشنا شدیم.

قسمت قبل : آموزش کامل کنترل LED RGB با برد Arduino – ال ای دی RGB چیست؟ 

در این قسمت به صورت کامل با مبحث آنالوگ به دیجیتال آشنا میشویم. مبحث ADC را قبلا برای میکروکنترلر های AVR توضیح داده ایم و در اینجا نیز مفهوم کلی کار یکی است.

پیشنهاد میکنم قبل از خواندن ادامه مطلب، مقاله آنالوگ به دیجیتال را بخوانید تا به طور کامل با مبحث ADC آشنا شوید.

آنالوگ به دیجیتال در آردوینو

در این آموزش مفهوم ADC (تبدیل آنالوگ به دیجیتال) را در ARDUINO UNO معرفی می کنیم. همانطور که در شکل زیر نشان داده شده است، برد آردوینو شش کانال ADC دارد. یک یا همه آنها می تواند به عنوان ورودی برای ولتاژ آنالوگ استفاده شود. آنالوگ به دیجیتال در برد Arduini Uno با دقت 10 بیتی (یعنی مقادیر عدد صحیح بین (0- (2 ^ 10) 1023)) است. به این معنی که ولتاژهای ورودی بین 0 تا 5 ولت را به مقادیر عدد صحیح بین 0 تا 1023 تبدیل میکند. بنابراین برای هر واحد 5/1024 = 4.9mV است.

آموزش کامل آنالوگ به دیجیتال در آردوینو

در این آموزش ما پتانسیومتر را به کانال A0 متصل میکنیم و با تغییر آن ، نتیجه تبدیل آنالوگ به دیجیتال را روی ال سی دی کاراکتری نمایش مدهیم.

دستورات آنالوگ به دیجیتال در آردوینو

کانال های Analog Digital Converter دارای مقدار مرجع پیش فرض 5V هستند. این بدان معنی است که ما می توانیم حداکثر ولتاژ ورودی 5 ولت را برای تبدیل ADC در هر کانال ورودی قرار بدهیم. از آنجا که برخی از سنسورها ولتاژ های 0-2.5 ولت را ارائه می دهند ، با استفاده از یک ولتاژ مرجع 5 ولت دقت کمتری می گیریم، بنابراین ما یک دستورالعمل داریم که به ما امکان تغییر این مقدار مرجع را می دهد. بنابراین برای تغییر مقدار مرجع ما از دستور زیر استفاده میکنیم. ولتاژ مرجع مورد نظر را در بین پرانتز قرار دهید.

("analogReference ()")

به صورت پیش فرض ما حداکثر دقت ADC را که در برد آردوینو یونو 10 بیت است دریافت می کنیم، این دقت را می توان با استفاده از دستورالعمل زیر تغییر داد. این تغییر دقت ممکن است برای برخی موارد مفید واقع شود. در دستور زیر بین پرانتز بیت مورد نظر را وارد کنید.

(analogReadResolution(bit))

حالا اگر نمیخواهید این دو دستور که در بالا گفتیم را تغییر دهید نیاز به وارد کردن آنها در کد نیست و میتوانید از همان مقدار پیشفرض آن استفاده کنید. حالا می توانیم مقدار را از کانال آنالوگ به دیجیتال ‘0″ به صورت مستقیم  باتابع “((analogRead(pin)” بخوانیم ، در اینجا “pin” نشانگر پینی است که به آن سیگنال آنالوگ را وصل کردیم، در آموزش “A0” است. مقدار ADC را می توان به یک عدد صحیح تبدیل کرد. به دستور العمل زیر دقت کنید، با استفاده از دستور العمل زیر ما مقدار آنالوگ را در متغیر ADCVALUE ذخیره میکنیم.

int ADCVALUE = analogRead(A0);

توضیحات مدار لازم برای تبدیل آنالوگ به دیجیتال

مدار لازم برای تبدیل آنالوگ به دیجیتال

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

قطعات مورد نیاز این آموزش Arduino

  1. برد آردوینو Uno
  2. منبع تغذیه 5 ولت
  3. ال سی دی کاراکتری 16*2
  4. خازن 100uf
  5. خازن 100nf
  6. پتانسیومتر 100 کیلو اهم
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

کد آنالوگ به دیجیتال در Arduino

در ابتدای کد ما کتابخانه ال سی دی کاراکتری را فراخوانی میکنیم. در خط دوم پین های LCD کاراکتری را پیکربندی میکنیم. یعنی پین های Enable , d4 , d5 , d6 , d7. سپس مقدار دهی اولیه کاراکتر ADC را انجام میدهیم.

#include <LiquidCrystal.h> // فراخوانی کتابخانه ال سی دی کاراکتری
LiquidCrystal lcd(8, 9, 10, 11, 12, 13); // پین های ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
char ADCSHOW[5]; //سایز کاراکتر آ.ب.د برای نمایش در ال سی دی

سپس به تابع void setup میرسیم. همانطور که در قسمت های قبل آموزش آردوینو گفتیم، در این قسمت پیکربندی پروژه را انجام میدهیم. در این پروژه و در این قسمت ما تعداد ستون ها و ردیف های LCD کاراکتری را تنظیم میکنیم.

void setup()
{
lcd.begin(16, 2); // تنظیم ستون ها و ردیف های LCD
}

سپس نوبت به تابع void loop میرسد. همانطور که قبلا گفتیم در این قسمت ما یک چرخه تکرار شونده را تنظیم میکنیم. دستورات این تابع به طور مداوم انجام میشوند.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

در ابتدا ما در خط اول ال سی دی کاراکتری کلمه دلخواه خود را نشان میدهیم. این کلمه میتواند هرچیزی باشد ما از irenx.ir استفاده کرده ایم. در خط بعدی کد ما مکان متن irenx.ir را تنظیم میکنیم. و در خط سوم این کد نیز ، ردیف دوم ال سی دی کاراکتری را تنظیم میکنیم. تا بنویسد Natije ADC :

void loop()
{
lcd.print("IRENX.IR"); //نمایش نام اولیه
lcd.setCursor(0, 1); // تنظیم مکان نام
lcd.print("Natije ADC:"); //نمایش جمله نتیجه ADC

در قسمت بعدی ما در خط اول کد ، مقدار آنالوگ را از پین A0 دریافت میکنیم. در خط دوم با توجه به سایز کاراکتر که در قسمت اول کد انتخاب کردیم این مقدار آنالوگ را به دیجیتال تبدیل میکنیم. و در خط سوم مقدار ADC را در جلوی Natije ADC : نمایش میدهیم. در خط پنجم نیز مکان نمایش ADC را تنظیم میکنیم.

String ADCVALUE = String(analogRead(A0)); //دریافت مقدار اولیه آنالوگ
ADCVALUE.toCharArray(ADCSHOW, 5); //تبدیل مقدار خوانده شده به دیجیتال 
lcd.print(ADCSHOW); //نمایش مقدار ADC
lcd.print(" ");
lcd.setCursor(0, 0); // تنظیم مکان نمایش ADC
}

در باکس زیر کد کامل به همراه توضیح را میبینید.

#include <LiquidCrystal.h> // فراخوانی کتابخانه ال سی دی کاراکتری
LiquidCrystal lcd(8, 9, 10, 11, 12, 13); // پین های ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
char ADCSHOW[5]; //سایز کاراکتر آ.ب.د برای نمایش در ال سی دی

void setup()
  {
lcd.begin(16, 2); // تنظیم ستون ها و ردیف های LCD
}
void loop()
  {
lcd.print(" IRENX.IR"); //نمایش نام اولیه
lcd.setCursor(0, 1); // تنظیم مکان نام
lcd.print("Natije ADC:"); //نمایش جمله نتیجه ADC
String ADCVALUE = String(analogRead(A0)); //دریافت مقدار اولیه آنالوگ
ADCVALUE.toCharArray(ADCSHOW, 5); //تبدیل مقدار خوانده شده به دیجیتال 
lcd.print(ADCSHOW); //نمایش مقدار ADC
lcd.print("   ");
lcd.setCursor(0, 0); // تنظیم مکان نمایش ADC
}

قسمت بعد را بخوانید : راه اندازی LCD کاراکتری با آردوینو

4.8 (22 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

23 نظر

  1. با سلام
    برنامه مربوط به
    دستورات آنالوگ به دیجیتال در آردوینو
    هنگام آپلود کردن خطا میده
    Failed uploading: no upload port provided
    چرا ؟ لطفا راهنمایی کنید

    1. سلام عزیز
      مربوط به کد نیست در حقیقت مربوط به این هست که پورت را در منوی Tools انتخاب نکردید.
      برای یادگیری کار با آردوینو میتونید دوره آموزش آردوینو را مشاهده کنید

  2. سلام وقت بخیر، ممنون از توضیحات خوبتون.
    ببخشید یه سوال داشتم،
    ما اگه بخواییم مقدار گاز ورودی و خروجی یک دستگاه Mass Flow Control رو به کمک برد آردوینو کنترل کنم باید از چه نوع دستوری استفاده کنم؟
    میزان گاز مدنظر میشه از نوع Analog Read؟
    ممنون میشم راهنمایی کنید.

    1. سلام عزیز
      نوع دقیق سنسور مورد نظرتون رو بفرمایید
      بهتر هست در انجمن یک موضوع در رابطه با پروژه ای که دارید ایجاد کنید

  3. با سلام و درود خدمت شما جناب رحیمی ممنون از آموزشتون من در حال کد نویسی هستم که خروجی آنالوگه سنسور را به دیجیتال تبدیل کنم و آن را در lcd نمایش دهم تا اینجا موفق بودم و باید داده های آن را از hc05 به لپ تاپ ارسال کنم در این قسمت از شما کمک و راهنمایی میخواهم تشکر

    1. سلام عزیز
      در دوره آردوینو آموزش داده میشه

  4. سلام و درود جناب رحیمی آموزشتون واقعا عالیه آموزش تون از شما یک راهنمایی و کمک میخواستم من کدی دارم مینویسم که خروجی سنسور که آنالوگه به دیجیتال تبدیل کنم و آن را در lcd نمایان کنم که تا اینجا موفق بود و میخوام داده ها را به لپ تاپ ارسال کنم فقط در این قسمت کمک و راهنمایی میخواهم

    1. سلام عزیز
      از طریق ارتباط سریال در سریال مانیتور آردوینو نمایش بدید
      برای کسب اطلاعات بیشتر میتونید دوره آردوینو رو مشاهده کنید

    1. سلام عزیز
      تصویر شماتیک اتصالات مدار در مطلب قرار داده شده مطابق با اون سیم کشی مدار رو انجام بدید

  5. با عرض سلام چگونه میتوانم خروجی سنسور انالوگ که یک سنسور القایی است را به میلی متر در اردینو برنامه نویسی کنم؟البته با دقت دهم میلی متر ممنونم

  6. با تشکر ازشما . توی آموزش ADC اون قسمت راه اندازی lcd رو من متوجه نشدم . در مورد پایه ها lcd و خروجی هایی که بهشون اختصاص دادید میشه یه توضیح بدید ؟

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

    1. سلام جناب. بسیار خوشحالم که راضی بودین.

    1. سلام جناب. خوشحالم که راضی بودین.

  8. سلام
    امکانش هست که بعد از پروگرام کردن آردوینو اونو از کامپیوتر جدا کرد و بدون اتصال به کامپیوتر از اون استفاده کرد؟؟

    1. سلام جناب. بله بعد از پروگرام کردن میتونید جدا کنید و با تغذیه جداگانه پروژه تون رو اجرا کنید.

  9. سلام جناب آقای رحیمی و عرض ادب از آموزشتون خیلی ممنونم ، خواستم منو راهنمایی کنید چطور میتونم با این روش سنسور مگنومترflc100 رو راه اندازی کنم و داده ها رو به کامپیوتر منتقل کنم ، میشه کدش رو برام بنویسید اگه هزینه ای داره پرداخت میکنم ،

    1. سلام. خسته نباشید. میخواید با آردوینو مگنومتر رو راه اندازی کنید ؟

    2. لطف کنید در تلگرام پیام بدید، شماره و آیدی تلگرام در صفحه تماس با ما در بالای صفحه موجود است.

دیدگاهتان را بنویسید

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