🖐️ سنسور خمش (فلکس) (Flex Sensor)
| اسم انگلیسی | Flex Sensor |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | 🌡️ سنسورها |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
سنسور خمش یا فلکس (Flex Sensor) یک نوار پلاستیکی باریک است که رویش جوهر رسانا چاپ شده؛ وقتی آن را خم کنی، ذرههای رسانا از هم فاصله میگیرند و مقاومت بالا میرود. مدل رایج ۲٫۲ اینچی در حالت صاف حدود ۲۵ کیلواهم است و با خم شدن کامل به حدود ۱۰۰ کیلواهم میرسد. معروفترین کاربردش دستکش هوشمند است: یک سنسور روی هر انگشت و یک دست رباتیک که حرکت انگشتها را تکرار میکند. در این صفحه یک انگشت رباتیک با سروو میسازیم.
سنسور خمش در ووکوی (Wokwi)
تا جایی که میدانیم ووکوی نسخهی آمادهی این قطعه را ندارد. چون فلکس در مدار مقسم ولتاژ فقط یک ولتاژ متغیر روی A0 میسازد، یک wokwi-potentiometer جای آن را میگیرد. سروو هم در ووکوی با wokwi-servo وجود دارد، پس کل پروژه را میشود آنجا دید:
{
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-potentiometer", "id": "pot1", "top": -120, "left": 120, "attrs": {} },
{ "type": "wokwi-servo", "id": "servo1", "top": -140, "left": 280, "attrs": {} }
],
"connections": [
[ "pot1:VCC", "uno:5V", "red", [] ],
[ "pot1:SIG", "uno:A0", "orange", [] ],
[ "pot1:GND", "uno:GND.1", "black", [] ],
[ "servo1:GND", "uno:GND.1", "black", [] ],
[ "servo1:V+", "uno:5V", "red", [] ],
[ "servo1:PWM", "uno:9", "green", [] ]
]
}
| پایه در ووکوی | وصل به |
|---|---|
pot1:SIG (جای فلکس) | uno:A0 |
pot1:VCC و pot1:GND | uno:5V و uno:GND.1 |
servo1:PWM | uno:9 |
servo1:V+ و servo1:GND | uno:5V و uno:GND.1 |
خود سنسور خمش در تینکرکد فارسی در هر دو مود رایگان شبیهسازی میشود.
سیمکشی با آردوینو
| پایهی قطعه | وصل به |
|---|---|
| پایهی اول فلکس | 5V |
| پایهی دوم فلکس | A0 |
| مقاومت ۴۷ کیلواهم | بین A0 و GND |
| سیم قهوهای یا مشکی سروو | GND |
| سیم قرمز سروو | 5V |
| سیم نارنجی یا زرد سروو | پین 9 |
مقاومت ثابت را نزدیک مقاومت میانهی سنسور انتخاب کن تا بیشترین تغییر ولتاژ را بگیری؛ برای مدل ۲٫۲ اینچی، ۴۷ کیلو انتخاب خوبی است. با ماشینحساب مقسم ولتاژ عددهای سنسور خودت را امتحان کن. با این سیمکشی، خم کردن عدد A0 را کم میکند.
کد نمونه
برنامه عدد سنسور را با یک فیلتر ساده آرام میکند، با map بین دو عدد کالیبراسیون «صاف» و «خم» به زاویهی ۰ تا ۱۸۰ درجه تبدیل میکند و سروو را همانقدر میچرخاند.
// Flex sensor (47k divider on A0) drives a robot finger servo on pin 9.
#include <Servo.h>
const int FLEX_PIN = A0;
const int FLAT_VALUE = 670; // reading when straight - measure yours
const int BENT_VALUE = 330; // reading when fully bent - measure yours
Servo finger;
int smooth = FLAT_VALUE;
void setup() {
Serial.begin(9600);
finger.attach(9);
}
void loop() {
int raw = analogRead(FLEX_PIN);
smooth = (smooth * 3 + raw) / 4; // calm the jitter
int angle = map(smooth, FLAT_VALUE, BENT_VALUE, 0, 180);
angle = constrain(angle, 0, 180);
finger.write(angle);
Serial.print("raw:");
Serial.print(raw);
Serial.print(" angle:");
Serial.println(angle);
delay(20);
}
عدد صاف و خم سنسور خودت را با سریال مانیتور پیدا کن و در دو ثابت بالای برنامه بنویس. ماشینحساب map کمک میکند خروجی را قبل از اجرا حدس بزنی.
اشتباههای رایج
- خم کردن در جهت اشتباه: بیشتر فلکسها فقط وقتی سمت چاپشده رو به بیرون خم شود تغییر درستی میدهند. خم کردن برعکس تغییر کمی میدهد و به سنسور آسیب میزند.
- خم شدن از ریشه: محل اتصال پایهها به نوار نقطهی ضعیف است. آن قسمت را با چسب یا یک تکه پلاستیک سفت کن تا فقط نوار خم شود.
- چند سروو روی یک USB: یک سروو کوچک معمولاً مشکلی ندارد، ولی پنج سروو برای پنج انگشت هنگام حرکت ولتاژ را میاندازند و آردوینو ریست میشود. برای چند سروو تغذیهی جدا با زمین مشترک بگذار.
- لرزش سروو: عدد آنالوگ همیشه کمی میلرزد و سروو هم با آن. فیلتر میانگین در کد یا یک «منطقهی مرده» چند درجهای این را برطرف میکند.
آموزشهای مرتبط
- سروو موتور با آردوینو و کنترل با پتانسیومتر
- سروو موتور در ووکوی
- سنسور فشار FSR برای نوک انگشت
- راهاندازی سروو با ESP32
سؤالهای رایج
مقاومت سنسور فلکس چقدر است؟
مدل رایج ۲٫۲ اینچی در حالت صاف حدود ۲۵ کیلواهم است و با خم شدن به حدود ۱۰۰ کیلواهم میرسد. مدلهای بلندتر عددهای دیگری دارند؛ عدد سنسور خودت را با مولتیمتر بخوان.
سنسور خمش را در ووکوی چطور شبیهسازی کنم؟
ووکوی سنسور فلکس ندارد، ولی یک پتانسیومتر روی A0 همان ولتاژ متغیر را میسازد. کد بدون تغییر کار میکند؛ فقط عددهای کالیبراسیون را با بازهی پتانسیومتر تنظیم کن.
قطعههای دیگرِ سنسورها
سنسور لمسی TTP223
TTP223 Capacitive Touch Sensor
ماژول سنسور لرزش SW-420
SW-420 Vibration Sensor Module
سنسور فاصله اولتراسونیک (HC-SR04)
HC-SR04 Ultrasonic Sensor
سنسور دما و رطوبت DHT11 / DHT22
DHT22 / DHT11 Temperature & Humidity Sensor
سنسور نور LDR (فتورزیستور)
Photoresistor (LDR)
سنسور حرکت PIR
PIR Motion Sensor (HC-SR501)