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

اتصال سنسور فلکس به آردوینو

سنسور فلکس یک مقاومت متغیر ارزان قیمت و با کاربری آسان است که برای اندازه گیری میزان خم شدن طراحی شده است. زمانی که سنسور فلکس صاف باشد، مقاومت کمی دارد و زمانی که آن را خم کنید مقاومت آن افزایش می یابد. سنسور های فلکس در پروژه های مختلف مثل ردیاب ها، دستگاه های زیست پزشکی، کنترل کننده ربات ها و … استفاده میشوند. در این مقاله با سنسور فلکس و نحوه راه اندازی آن با برد آردوینو آشنا میشویم.

سنسور فلکس چیست؟

سنسور فلکس دارای دو پایه است، یکی P1 و دیگری P2 است، از این دو پایه می توان برای دریافت اطلاعات از سنسور فلکس استفاده کرد. سنسور بیشتر شبیه یک مقاومت متغیر عمل می کند که مقاومت آن بر اساس میزان خم شدن آن تغییر می کند. پین های سنسور فلکس در تصویر زیر مشخص شده است.

سنسور فلکس چیست؟

مقاومت ها دو پایه دارند که هیچ قطبیتی ندارد. بنابراین میتواند از هر طرف به مدار متصل شود. از آنجایی که سنسور فلکس به عنوان یک مقاومت عمل می کند، پایه های P1 و P2 دقیقاً یکسان هستند.

سنسور فلکس چگونه کار می کند؟

به زبان ساده، یک حسگر فلکس مقاومت متغیری است که مقاومت خود را در هنگام خم شدن تغییر می دهد. از آنجایی که مقاومت سنسور به طور مستقیم با میزان خمش متناسب است، اغلب به آن پتانسیومتر انعطاف پذیر می گویند. این سنسور معمولاً در دو اندازه موجود است که اندازه اولی 2.2 اینچی و دومی 4.5 اینچی است. هنگامی که سنسور صاف است، مقاومت حدود 10K اهم است، و زمانی که سنسور خم می شود، مقدار آن 22K اهم است.

سنسور فلکس چگونه کار می کند

هنگامی که سنسور خم می شود، لایه رسانای داخل سنسور کشیده می شود، سطح مقطع سنسور نازک می شود و مقاومت سنسور افزایش می یابد. همانطور که در بالا نشان داده شده است، حداکثر مقاومتی که می توانیم به دست آوریم 22K اهم است. هنگامی که سنسور دوباره صاف می شود، مقاومت به مقدار طبیعی خود باز می گردد.

مدار اتصال سنسور فلکس به آردوینو

اکنون که درک کاملی از نحوه عملکرد سنسور فلکس داریم، میتوانیم اتصال سنسور به آردوینو را انجام دهیم.

مدار اتصال سنسور فلکس به آردوینو

مدار راه اندازی سنسور فلکس با آردوینو بسیار ساده و قابل درک است. برای خواندن سنسور فلکس باید یک مدار تقسیم کننده ولتاژ با سنسور فلکس درست کنیم. ما از یک مقاومت 15K اهم با آردوینو برای ساخت این مدار تقسیم کننده ولتاژ استفاده کرده ایم. همچنین برای نمایش عملکرد، ما یک LED را به پایه 6 PWM متصل کرده‌ایم.

مدار تقسیم کننده ولتاژ سنسور flex

مدار تقسیم کننده ولتاژ یک مدار بسیار رایج در الکترونیک است که ولتاژ بالاتری می گیرد و با استفاده از یک جفت مقاومت آن را به ولتاژ کمتری تبدیل می کند. فرمول محاسبه ولتاژ خروجی بر اساس قانون اهم است و در نمودار بالا نشان داده شده است. سنسوری که ما استفاده می کنیم حداقل مقدار 16K را در حالت صاف و حداکثر مقدار 17.5K را در حالت خم به ما می دهد. اگر این مقادیر را در فرمول نشان داده شده در بالا قرار دهید، ولتاژ خروجی را از سنسور دریافت خواهید کرد.

کد آردوینو برای سنسور فلکس

کد آردوینو برای راه اندازی سنسور فلکس بسیار ساده است. در این کد داده های خروجی از سنسور با استفاده از مبدل آنالوگ به دیجیتال دریافت میشود و روشنایی ال ای دی با توجه به خروجی سنسور تنظیم میشود.

کد سنسور فلکس آردوینو را با تعریف پین های حسگر فلکس و LED شروع می کنیم. در مرحله بعد، متغیرهایی را تعریف می کنیم که در آن تمام پارامترهای مورد نیاز مانند VCC، مقدار مقاومت مورد استفاده برای ایجاد تقسیم کننده ولتاژ، حداقل و حداکثر مقدار سنسور تعریف شده است.

#define sensorPin = A0; // پایه سنسور فلکس
#define PWMPin = 6; // پایه ال ای دی
float VCC = 5; // ولتاژ تغذیه 5 است
float R2 = 10000; // مقاومت 10 کیلو اهم
float sensorMinResistance = 16000; // مقدار صاف
float sensorMaxResistance = 17500; // مقدار خم

در مرحله بعد، تابع setup() را داریم. در تابع setup، ارتباط سریال را شروع میکنیم و sensorPin را به عنوان ورودی تعریف کرده ایم.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
void setup() {
  Serial.begin(9600); // Initialize the serial with 9600 baud
  pinMode(sensorPin, INPUT); // Sensor pin as input
}

سپس تابع loop را داریم. در تابع loop، هدف اصلی ما محاسبه مقاومت است. برای اینکار، پین آنالوگ A0 را می خوانیم و مقادیر را در متغیر ADCRaw ذخیره می کنیم.

int ADCRaw = analogRead(sensorPin);

در مرحله بعد، مقدار ولتاژ را از مقدار ADC با کمک یک فرمول تقسیم کننده ولتاژ ساده محاسبه کرده ایم.

float ADCVoltage = (ADCRaw * VCC) / 1023; //-->> (512 * 5) / 1023 = 2.5V

در مرحله بعد، مقاومت سنسور فلکس را با استفاده از فرمول اصلی تقسیم ولتاژ محاسبه کرده و برای کنترل LED با استفاده از تابع map به مقدار بین 0 تا 255 تبدیل میکنیم.

float Resistance = R2 * (VCC / ADCVoltage - 1);
float ReadValue = map(Resistance, sensorMinResistance, sensorMaxResistance, 0, 255);

سپس، از مقدار بدست آمده برای تابع analogWrite و در نتیجه برای کنترل روشنایی LED استفاده کردیم و همچنین این مقدار را در سریال مانیتور چاپ میکنیم.

analogWrite(PWMPin, ReadValue);
Serial.println(ReadValue);
delay(100);

گیف زیر عملکرد سنسور فلکس با آردوینو را نشان می دهد. در ابتدا می بینید که نور LED روی برد بورد بسیار کم است اما وقتی سنسور را کمی خم می کنیم، شدت نور LED افزایش می یابد. به این ترتیب می توانید ببینید که حسگر فلکس دقیقاً همانطور که می خواستیم کار می کند.

موارد موجود در فایل : سورس

دانلود فایل های پروژه

5/5 - (1 امتیاز)

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

محمد رحیمی

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

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

نشانی ایمیل شما منتشر نخواهد شد.