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

آموزش آنالوگ به دیجیتال 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 قرار داده شده است.

مطلب پیشنهادی:  دستور isAlphaNumeric در آردوینو (بررسی الفبا یا عددی بودن)

قطعات مورد نیاز این آموزش 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 کاراکتری با آردوینو

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

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

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

محمد رحیمی

محمد رحیمی

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

12 نظر

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

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

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

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

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

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

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

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

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

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

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