سنسورها
با اتصال سنسورهای مختلف به آردوینو می توان ویژگیهای محیط از قبیل دما، رطوبت و غیره را از طریق اطلاعات دریافتی سنسور بر روی مانیتور سریال یا پلاتر سریال در محیط IDE Arduino نمایش داد. آردوینو میتواند با مقایسه سیگنال سنسور با یک مقدار آستانه مشخص یک دستورالعمل را انجام دهد، مانند روشن کردن یک لامپ در صورت تاریک شدن اتاق. در این مقاله و مقاله های بعدی، نحوه ارتباط سنسورهای مختلف را با برد آردوینو بررسی می کنیم.
سنسور دما
LM35DZ یک سنسور دمای دقیق با گستره دمای کاری 0 تا 100 درجه سانتیگراد می باشد که به ازای یک درجه سانتیگراد تغییر دما، 10میلیولت ولتاژ خروجی را تغییر می دهد. حداکثر ولتاژ خروجی سنسور LM35DZ میلیولت 100×10یا 1 ولت است. مبدل آنالوگ به دیجیتال (ADC) در آردوینو ولتاژ خوانده شده از سنسور را به مقدار دیجیتالی بین 0 تا 1023 تبدیل میکند. حداکثر ولتاژ اندازه گیری ADC در آردوینو بصورت پیش فرض 5 ولت (معادل با مقدار 1023) می باشد، بنابراین مقدار ولتاژ خروجی آنالوگ سنسور 0 تا 205 (= 1023/5) است. اگر حداکثر ولتاژ اندازه گیری ADC را بجای 5 ولت روی 1.1 ولت تنظیم کنیم، گستره آنالوگ ولتاژ خروجی سنسور 0 تا 930 (=1023/1.1) می شود، و دقت سنسور دما افزایش می یابد. به عنوان مثال، با 1 درجه سانتی گراد افزایش دما و تنظیم حداکثر ولتاژ اندازه گیری ADC در مقدار پیش فرض 5 ولت مقدار 2 از سنسور خوانده می شود اما در صورت تنظیم حداکثر ولتاژ اندازه گیری ADC در 1.1 ولت این مقدار به 9 افزایش می یابد. ولتاژ اندازه گیری ADC آردوینو با دستور analog Reference(INTERNAL) از 5 به 1.1 ولت کاهش مییابد.
آردوینو 3 مقدار مرجع آنالوگ دارد:
- با دستور analogReference(DEFUALT) ولتاژ 5 ولت معادل 1023= 1- 210 می شود.
- با دستور analogReference(INTERNAL) ولتاژ 1.1 ولت معادل 1023 می شود.
- با دستور analogReference(EXTERNAL) ولتاژ 3.3 ولت هنگامیکه پایه 3.3 به پایه AREF متصل شده معادل 1023 می شود.
با تنظیم ولتاژ مرجع ADC در 1.1 ولت، مقدار خوانده شده از سنسور دما برای تبدیل به میلی ولت ضرب در 1100/1023 و برای تبدیل به درجه سانتی گراد تقسیم بر 10 می شود. همانند شکل 1، اتصال سنسور دمای LM35DZ به برد آردوینو باید به گونه ای باشد که سمت راست سطح صاف آن به 5 ولت متصل شده؛ در غیر این صورت، سنسور LM35DZ به سرعت بیش از حد گرم می شود. پایه خروجی سنسور دما را به یکی از شش پایه آنالوگ آردوینو، که با A0 تا A5 مشخص شدهاند، متصل می کنیم. جدول 1 را مشاهده کنید
جدول 1. اتصال های سنسور دما
آردوینو | سنسور |
Arduino GND | LM35DZ GND |
Arduino A0 | LM35DZ OUT |
Arduino 5V | LM35DZ VCC |
مقدار دمای خوانده شده از LM35DZ با استفاده از پلاتر سریال Arduino IDE از بخش Tools زیر بخش Serial Plotter بصورت گرافیکی نمایش داده شده است. سرعت ارتباط بین آردوینو و پلاتر سریال را روی 9600 بایت بر ثانیه تنظیم کردیم (شکل 3 را مشاهده کنید). پلاتر سریال دائما مقادیر حداقل و حداکثر محور Y را به روز رسانی میکند. برای جلوگیری از به روز رسانی، مقادیر min و max تعریف شده و سپس با مقدار خوانده شده از سنسور در یک رشته با سه متغیر- max، مقدار سنسور (temp)، و min ادغام و بطور همزمان رسم میشوند.
دستورات سنسور دما
float temp; //define temp as a real number
int min=20; //define minimum plot value
int max=30; //define maximum plot value
int reading; // define reading as an integer
() void setup
{
Serial.begin(9600); // define serial outpur baud rate
analogReference(INTERNAL); // Set ADC voltage to 1.1 rather than 5v
}
() void loop
{
reading=analogRead(A0); //read temperature sensor pin
temp= (reading*110.0)/1023; // convert reading to temperature
String axis = String(min) +" "+ String(temp) +" "+ String(max); // convert minimum, temperature and maximum to a string
Serial.println(axis); // update plot
delay(500); // delay 10ms between readings
}
دستور temp= (reading*110.0)/1023 زمانیکه مقدار خواندهشده از سنسور مقداری حقیقی باشد، عددی حقیقی را برای temp برمیگرداند. اگر تمام اعداد در محاسبه صحیح باشند، مقداری صحیح برگردانده میشود اگرچه temp عددی حقیقی تعریف شده باشد. برای مثال، مقدار خواندهشده (reading) 500 با دستورهای temp = (reading * 110.0)/1023 و temp = (reading * 110)/1023 بهترتیب مقادیر 53.76 و 53 را برای temp برمیگرداند.