در این پروژه ما واحد ADC در برد اردوینو (uno) را راه اندازی می کنیم, در پروژه هایی که در اینده قرار خواهم داد از این قابلیت بردهای اردوینو استفاده خواهیم کرد. قبلا راه اندازی adc در میکروکنترلر avr را اموزش داده بودم که می توانید ان پست را در اینجا مشاهده کنید . قبل از قرار دادن شماتیک پروژه بهتر است کمی با adc در اردوینو اشنا شویم :
همانطور که در پست راه اندازی adc در میکروکنترلر avr گفته شد, ” مبدل انالوگ به دیجیتال (ADC) یک ولت متر دیجیتال است که بر روی پایه های برد Arduino نصب شده است و به وسیله ی آن میتوان ولتاژ پایه های ورودی را با دقت مناسبی اندازه گیری کرد. همانطور که میدانید ما تا به حال در هیچ آی سی نمیتوانستیم شدت ولتاژ ورودی را به دقت اندازه گیری کنیم و فقط میتوانستیم بدانیم آیا ولتاژ ورودی بالای ۲.۵ ولت است یا زیر ۲.۵ ولت، و ورودی هایمان را به صورت ۰ و ۱ بررسی می کردیم. (آی سی ها ورودیهای خود را منطقی می کنن) اما به کمک این قابلیت بردهای اردوینو، ما میتوانیم با دقت مناسبی ولتاژ ورودی خود را بررسی کنیم. “
برای اشنایی با برد اردوینو یونو اینجا کلیک کنید .
برد اردوینو Uno دارای 6 پین انالوگ است که با نام های A0 تا A5 نامگذاری شده اند . از این پین ها می توان برای خواندن مقادیر انالوگ (خروجی سنسورها , مدارات جانبی و …) استفاده کرد, به تصویر زیر دقت کنید:
فرمول تناسب در ADC :
مبدل آنالوگ به دیجیتال در اردوینو به ازای ۰ تا ۵ ولت ورودی که به آن اعمال می شود عددی بین ۰ تا ۱۰۲۳ تولید می کند. پس اگر عدد تولید شده ۵۱۱ بود ولتاژ ورودی ۲.۵ ولت بوده است .
بنابراین هر مقداری را که با تابع analogRead خواندیم درصورتی که بخواهیم به ولتاژ تبدیل کنیم , باید در تناسب قرار داده تا بفهمیم مقدار ولتاژ ورودی چقدر بوده است .
البته در این پروژه نیازی به استفاده از فرمول تناسب نیست ولی در پروژه های اینده حتماً از این فرمول در برنامه استفاده خواهیم کرد
شماتیک پروژه :
همانطور که می بینید قطعات اصلی مدار شامل یک lcd کاراکتری 2*16 و برد اردوینو یونو و دو پتانسیومتر می باشد که یکی از پتانسیومترها برای تنظیم کنتراست lcd و پتانسیومتر دیگر برای ایجاد یک ولتاژ متغیر 0 تا 5 ولت می باشد
عملکرد پروژه به این صورت است که اگر ولتاژ متغیر تولید شده توسط پتانسیومتر کمتز از 2 ولت بود روی lcd عبارت Vin is lower 2V را نمایش می دهد و اگر ولتاژ از 2 ولت بیشتر بود عبارت More Vin of 2V را نمایش می دهد, درواقع این پروژه سطح ولتاژ را تشخیص می دهد که ایا از 2 ولت بیشتر است یا کمتر, این پروژه ساده بیشتر جنبه اموزشی دارد .
برنامه اردوینو :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
////////// WWW.EMIC.IR ////////// #include <LiquidCrystal.h> /* lcd معرفي کتابخانه */ /* متصل شود LCD تابع زیر مشخص می کند که کدام پین های اردوینو به */ LiquidCrystal lcd(13, 12, 11, 10, 9, 8, 7); void setup() { // اردوینو مشخص میکند ADC دستور زیر مقدار ولتاژ مبنا یا رفرنس را برای کار با واحد // analogReference(DEFAULT); pinMode(A0, INPUT); /*ورودی کردن پین انالوگ 0*/ lcd.begin(16, 2); /*(LCD بررسي اتصال) LCD پيکره بندي */ } void loop() { int a ; // خوانده شده از پین اردوینو در ان adc برای ریختن مقادیر a تعریف متغیر // a = analogRead(A0); // (عددی بین 0 تا 1023) a در متغیر adc ریختن مقادیر // if (a < 410) // را مینویسد Vin is lower 2V عبارت lcd اگر عدد خوانده شده از 410 که با توجه به فرمول تناسب مي شود 2 ولت کمتر بود روي // { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Vin is lower 2V"); delay(300); } if (a > 410) // را مینویسد More Vin of 2V عبارت lcd اگر ولتاژ خوانده شده بیشتر از 2 ولت بود روی // { lcd.clear(); lcd.setCursor(0, 0); lcd.print("More Vin of 2V"); delay(300); } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید
- برای اشنایی با دستورات مهم برنامه نویسی اردوینو اینجا کلیک کنید
- برای اشنایی با دستورات مربوط به lcd کاراکتری اینجا کلیک کنید
- برای اشنایی با نحوه پروگرام کردن برد اردوینو (ریختن برنامه روی برد) اینجا کلیک کنید
کلیپ تست پروژه :
پسورد فایل زیپ : www.emic.ir
پروژه های مشابه:
نظر یادتون نره…
سلام خسته نباشید
برای نمایش دقیق عدد باید چکاری انجام بدیم؟
سلام عالی بود کمک زیادی بهم کردین تا بتونم پروژه خودم رو به نتیجه بریونم ممنونم از زحمات بی دریغتون