سنسور شیب Arduino؛ آموزش اتصال، عملکرد و کدنویسی
سنسور شیب Arduino یکی از سادهترین و ارزانترین روشها برای تشخیص
تغییر وضعیت، حرکت یا کج شدن یک جسم در پروژههای الکترونیکی است. این سنسور برخلاف
شتابسنجها اطلاعات دقیق زاویه و شتاب را اندازهگیری نمیکند، بلکه مانند یک کلید
مکانیکی عمل میکند و با تغییر وضعیت، اتصال الکتریکی را برقرار یا قطع میکند.
در این مقاله با ساختار Ball Tilt Switch، نحوه عملکرد سنسور شیب،
روش تست با مولتیمتر، نحوه اتصال آن به Arduino، استفاده از مقاومت Pull-up،
مشکل Switch Bounce و روش Debounce نرمافزاری آشنا میشویم و در نهایت یک کد
عملی برای استفاده مطمئنتر از سنسور در اختیار شما قرار میدهیم.
📌 سنسور شیب Arduino در یک نگاه
Ball Tilt Switch
سوئیچی / دیجیتال
توپ فلزی متحرک
Digital Input
داخلی یا خارجی
تشخیص شیب و حرکت
سنسور شیب Arduino چیست؟
سنسور شیب Arduino در واقع یک سوئیچ مکانیکی است که برای تشخیص
تغییر وضعیت یا کج شدن یک جسم استفاده میشود. در ساختار رایج این قطعه، یک
توپ فلزی کوچک داخل یک محفظه قرار گرفته و با تغییر زاویه حرکت میکند.
زمانی که توپ فلزی به کنتاکتهای داخلی برسد، مسیر الکتریکی برقرار میشود و
وقتی توپ از کنتاکتها فاصله بگیرد، اتصال قطع خواهد شد. بنابراین Arduino
میتواند تغییر وضعیت سنسور را مانند یک ورودی دیجیتال بخواند.
💡 نکته مهم
سنسور شیب را با یک شتابسنج اشتباه نگیرید. این قطعه معمولاً مقدار دقیق
زاویه، شتاب یا میزان حرکت را به شما نمیدهد؛ بلکه بیشتر برای تشخیص
«وضعیت» یا «تغییر وضعیت» مناسب است.
Ball Tilt Switch چگونه کار می کند؟
ساختار Ball Tilt Switch بسیار ساده است. درون محفظه سنسور یک توپ فلزی کوچک
قرار دارد و در یک طرف آن دو کنتاکت رسانا وجود دارد.
با قرار گرفتن سنسور در یک وضعیت خاص، توپ روی کنتاکتها قرار میگیرد و
اتصال الکتریکی برقرار میشود. با تغییر زاویه، توپ حرکت کرده و اتصال
قطع میشود. به این ترتیب خروجی سنسور میتواند بین دو وضعیت منطقی تغییر کند.
وضعیت اول
توپ با کنتاکت تماس دارد → مدار بسته
وضعیت دوم
توپ از کنتاکت جدا شده → مدار باز
تفاوت سنسور شیب با شتاب سنج چیست؟
یکی از اشتباهات رایج این است که تصور کنیم Ball Tilt Switch همان عملکرد
شتابسنج را دارد. این دو قطعه برای کاربردهای متفاوتی طراحی شدهاند.
| ویژگی | سنسور شیب | شتاب سنج |
|---|---|---|
| نوع خروجی | سوئیچی | آنالوگ یا دیجیتال |
| تشخیص وضعیت | ✅ | ✅ |
| اندازهگیری دقیق زاویه | ❌ | ✅ بسته به مدل و روش محاسبه |
| پیچیدگی مدار | کم | بیشتر |
| قیمت | معمولاً پایینتر | معمولاً بالاتر |
سنسور شیب چه کاربردهایی دارد؟
سادگی این سنسور باعث شده در پروژههایی که فقط نیاز به تشخیص وضعیت یا حرکت
وجود دارد، بدون نیاز به پردازش پیچیده قابل استفاده باشد.
- تشخیص کج شدن یک دستگاه
- تشخیص حرکت یا تکان خوردن
- سیستمهای هشدار ساده
- اسباببازیها و پروژههای آموزشی
- رباتیک ساده
- تشخیص وضعیت درب یا محفظه
- پروژههای DIY
- ساخت کلیدهای حساس به وضعیت
🎯 چه زمانی این سنسور انتخاب خوبی است؟
وقتی فقط لازم است بدانید یک جسم در وضعیت خاصی قرار گرفته، حرکت کرده
یا کج شده است، یک Tilt Switch ساده میتواند راهحل بسیار کمهزینهتری
نسبت به استفاده از شتابسنج باشد.
چگونه سنسور شیب را با مولتی متر تست کنیم؟
قبل از اتصال سنسور شیب به Arduino بهتر است ابتدا عملکرد خود قطعه را با
مولتیمتر بررسی کنید. این کار بسیار ساده است و به شما کمک میکند مطمئن شوید
سوئیچ مکانیکی داخل سنسور سالم است.
مرحله اول؛ مولتی متر را روی تست اتصال قرار دهید
مولتیمتر را در حالت Continuity یا تست بوق قرار دهید و پرابها را به دو پایه
سنسور متصل کنید.

مرحله دوم؛ سنسور را در وضعیت مختلف قرار دهید
سنسور را آرام بچرخانید و به تغییر وضعیت مولتیمتر توجه کنید. در یکی از
وضعیتها باید اتصال برقرار و در وضعیت دیگر اتصال قطع شود.

🔧 تست سریع قبل از اتصال به Arduino
اگر در هیچ زاویهای وضعیت اتصال تغییر نمیکند، ابتدا سالم بودن سنسور،
کیفیت پرابها و حالت اندازهگیری مولتیمتر را بررسی کنید.
توجه داشته باشید که زاویه عملکرد دقیق به نوع و ساختار خود سنسور بستگی دارد
و برای همه مدلها یکسان نیست.
اتصال سنسور شیب به Arduino
برای اتصال یک Ball Tilt Switch به Arduino به مدار پیچیدهای نیاز ندارید.
یک پایه سنسور به ورودی دیجیتال Arduino و پایه دیگر به GND متصل میشود.
برای جلوگیری از شناور شدن ورودی، میتوان از مقاومت Pull-up داخلی Arduino
استفاده کرد یا یک مقاومت خارجی، برای مثال 10KΩ، در مدار قرار داد.
این روش نیز در آموزش مرجع مورد استفاده قرار گرفته است.
🔌 اتصال پیشنهادی
پایه اول سنسور → Digital Pin 2
پایه دوم سنسور → GND
ورودی Arduino → استفاده از Pull-up داخلی
کد ساده سنسور شیب Arduino
برای شروع میتوانیم یک پروژه ساده بسازیم که با تغییر وضعیت سنسور،
LED داخلی Arduino را روشن یا خاموش کند.
const int tiltPin = 2;
const int ledPin = 13;
void setup() {
pinMode(tiltPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int tiltState = digitalRead(tiltPin);
if (tiltState == LOW) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
در این برنامه پایه D2 بهعنوان ورودی سنسور و پایه 13 برای LED استفاده شده است.
با فعال بودن Pull-up داخلی، ورودی در حالت عادی HIGH خواهد بود و هنگام بسته شدن
مسیر توسط سوئیچ، وضعیت ورودی تغییر میکند.
✅ این کد برای شروع مناسب است
اگر هدفتان فقط بررسی عملکرد سنسور است، همین کد ساده کافی است.
اما برای پروژه واقعی ممکن است با مشکل Bounce مواجه شوید.
Switch Bounce در سنسور شیب چیست؟
یکی از مهمترین نکات هنگام استفاده از سنسور شیب Arduino
پدیدهای به نام Switch Bounce است.
وقتی توپ فلزی داخل سنسور به کنتاکت میرسد، الزاماً اتصال الکتریکی در یک لحظه
و بهصورت کاملاً پایدار برقرار نمیشود. توپ ممکن است برای مدت کوتاهی
چند بار روی کنتاکت حرکت کند و در نتیجه سیگنال به شکل باز، بسته، باز، بسته
تغییر کند تا در نهایت پایدار شود.
از دید انسان این تغییرات بسیار سریع هستند، اما برای میکروکنترلر ممکن است
چندین تغییر واقعی به نظر برسند. در نتیجه ممکن است یک حرکت را چند بار
ثبت کنید یا LED هنگام تکان دادن سنسور چشمک بزند.
🚨 چرا خروجی سنسور گاهی می پرد؟
علت اصلی در بسیاری از موارد خود رفتار مکانیکی سوئیچ است، نه خرابی Arduino.
توپ فلزی هنگام برخورد با کنتاکت میتواند برای مدت کوتاهی چند بار قطع و وصل شود.
Debounce سنسور شیب چیست؟
فرآیند حذف تغییرات ناخواسته ناشی از Bounce را Debouncing
مینامند. این کار میتواند به روش سختافزاری یا نرمافزاری انجام شود.
برای بسیاری از کاربردهای ساده، میتوان پس از تشخیص تغییر وضعیت، مدت کوتاهی
صبر کرد و سپس دوباره وضعیت ورودی را بررسی کرد. زمان مناسب به نوع سنسور،
مدار و سرعت موردنیاز بستگی دارد؛ آموزش مرجع برای نمونه یک بازه حدود 50ms
را برای Debounce بررسی میکند.
کد مطمئن تر برای سنسور شیب Arduino
در این نسخه از millis() استفاده میکنیم تا بعد از تغییر وضعیت،
ورودی برای یک بازه کوتاه پایدار بماند و سپس تغییر معتبر ثبت شود.
const int tiltPin = 2;
const int ledPin = 13;
int ledState = LOW;
int tiltState = HIGH;
int lastTiltState = HIGH;
unsigned long lastChangeTime = 0;
const unsigned long debounceDelay = 50;
void setup() {
pinMode(tiltPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(tiltPin);
if (reading != lastTiltState) {
lastChangeTime = millis();
}
if ((millis() - lastChangeTime) >= debounceDelay) {
if (reading != tiltState) {
tiltState = reading;
if (tiltState == LOW) {
ledState = HIGH;
}
else {
ledState = LOW;
}
}
}
digitalWrite(ledPin, ledState);
lastTiltState = reading;
}
چرا در کد Debounce از millis استفاده کردیم؟
استفاده از millis() اجازه میدهد زمان سپریشده از آخرین تغییر
ورودی را اندازهگیری کنیم و بدون متوقف کردن کامل برنامه، وضعیت سنسور را
بررسی کنیم.
این روش برای پروژههایی که علاوه بر سنسور شیب باید کارهای دیگری نیز انجام دهند،
معمولاً انعطاف بیشتری نسبت به قرار دادن یک delay() ساده دارد.
⚙️ نکته برنامه نویسی
اگر پس از Debounce هنوز چند تغییر ناخواسته ثبت میشود،
مقدار debounceDelay را متناسب با سنسور و کاربرد خود تنظیم کنید.
آیا سنسور شیب برای اندازه گیری زاویه مناسب است؟
اگر منظور از اندازهگیری زاویه، بهدست آوردن یک مقدار دقیق مانند 15، 30 یا
45 درجه باشد، این سنسور انتخاب مناسبی نیست.
Tilt Switch بیشتر برای تشخیص عبور از یک وضعیت یا آستانه مشخص کاربرد دارد.
برای اندازهگیری پیوسته زاویه یا شتاب، استفاده از شتابسنج مناسبتر است.
سنسور شیب برای چه پروژه هایی مناسب است؟
- تشخیص واژگونی دستگاه
- تشخیص باز یا بسته شدن یک محفظه
- ساخت سیستم هشدار ساده
- پروژههای رباتیک آموزشی
- اسباببازیهای الکترونیکی
- تشخیص تکان یا حرکت
- پروژههای DIY
- کنترل یک خروجی با تغییر وضعیت
مزایا و معایب سنسور شیب
| مزایا | معایب |
|---|---|
| قیمت پایین | اندازهگیری دقیق زاویه ندارد |
| مدار ساده | دارای Bounce مکانیکی |
| مصرف توان بسیار پایین در حالت سوئیچ | دقت آن به نوع سنسور و وضعیت نصب وابسته است |
| مناسب پروژههای ساده | برای اندازهگیری چندمحوره مناسب نیست |
برای پروژه سنسور شیب Arduino چه قطعاتی لازم است؟
برای یک مدار ساده به Arduino، سنسور شیب، سیم اتصال و در صورت نیاز LED و
مقاومت نیاز دارید. اگر از Pull-up داخلی استفاده کنید، حتی نیاز به مقاومت
خارجی Pull-up نیز ندارید.
🛒 قطعات پروژه را از پژوهشگران تهیه کنید
اگر برای پروژه خود به Arduino، سنسورهای الکترونیکی، مقاومت، LED،
سیم، بردبورد و سایر قطعات نیاز دارید، میتوانید محصولات موجود در
فروشگاه قطعات الکترونیکی پژوهشگران را بررسی کنید.
مقالات بیشتر درباره Arduino و الکترونیک
مقالات بیشتر پژوهشگران
اگر به دنبال آموزشهای بیشتر درباره Arduino، ESP32، سنسورها،
ماژولها و سایر مباحث کاربردی الکترونیک هستید، مجموعه مقالات پژوهشگران را ببینید.📖 مشاهده همه مقالات
برای انتخاب قطعه یا طراحی مدار مشاوره فنی می خواهید؟
برای انتخاب قطعه نیاز به مشاوره دارید؟
اگر در انتخاب سنسور شیب، Arduino، ماژولها یا سایر قطعات پروژه خود
سوال دارید، قبل از خرید و ساخت مدار میتوانید برای مشاوره فنی با
مجموعه پژوهشگران در ارتباط باشید.
انتخاب درست قطعه در ابتدای پروژه میتواند از هزینههای اضافی و
تغییرات ناخواسته در مدار جلوگیری کند.
جمع بندی سنسور شیب Arduino
سنسور شیب Arduino یک راهکار ساده و کمهزینه برای تشخیص
تغییر وضعیت، حرکت و کج شدن یک جسم است. این قطعه از یک توپ فلزی متحرک
و کنتاکتهای داخلی تشکیل شده و با تغییر زاویه، اتصال الکتریکی را
برقرار یا قطع میکند.
مهمترین مزیت این سنسور سادگی مدار و هزینه پایین آن است، اما نباید از
آن انتظار اندازهگیری دقیق زاویه یا شتاب را داشت. همچنین هنگام استفاده
در پروژه واقعی باید پدیده Switch Bounce را در نظر گرفت و در صورت نیاز
از Debounce نرمافزاری یا سختافزاری استفاده کرد.
تجربه شما از کار با سنسور شیب چیست؟
اگر قبلاً با Ball Tilt Switch یا سنسورهای شیب در پروژههای
الکترونیکی کار کردهاید، تجربه خود را با ما و سایر کاربران به اشتراک بگذارید.
اگر در پروژه خود با مشکل Bounce، تشخیص وضعیت، زاویه عملکرد یا اتصال
سنسور به Arduino مواجه شدهاید، راهحل خود را
در بخش نظرات همین پایین بنویسید.
سوالات متداول درباره سنسور شیب Arduino
سنسور شیب Arduino چگونه کار می کند؟
در مدلهای Ball Tilt Switch، یک توپ فلزی داخل محفظه با تغییر وضعیت حرکت
میکند و باعث باز یا بسته شدن اتصال بین کنتاکتهای داخلی میشود.
آیا سنسور شیب همان شتاب سنج است؟
خیر. سنسور شیب یک سوئیچ ساده برای تشخیص وضعیت یا حرکت است، در حالی که
شتابسنج میتواند دادههای بیشتری درباره شتاب و در برخی کاربردها وضعیت
و زاویه در اختیار سیستم قرار دهد.
چرا سنسور شیب هنگام حرکت چند بار تغییر وضعیت می دهد؟
دلیل رایج این مشکل Switch Bounce است. حرکت مکانیکی توپ میتواند باعث
قطع و وصل شدن سریع کنتاکت شود و برای جلوگیری از آن باید از Debounce استفاده کرد.








