ورکشاپ آموزشی - آیسی مدار
رفتن به محتوا

تراز دیجیتال دو محوره با آردوینو و سنسور MPU6050

ابزار و گجت
۰ نظر
۴۲ نفر
کد ۳۲۰۷

ترازهای حبابی و کلاسیک سال‌هاست که ابزار دست مهندس‌ها و نجارها هستن، اما وقتی پای پروژه‌های دقیق وسط باشه، خوندن دقیق حباب همیشه راحت نیست و بعضی وقت‌ها خطای دید کار رو خراب می‌کنه. تو این پروژه قراره ابزاری بسازیم که تراز کردن رو به یه سطح جدید و دیجیتال ارتقا بده.

تراز دیجیتال ما که بهش "IncliSense" می‌گیم، یه گجت مهندسی‌ساز دو محوره است که با مغز متفکر آردوینو نانو و سنسور 6 محوره MPU6050 کار می‌کنه. به جای حباب آب، یه ستون از 11 تا ال‌ای‌دی پرنور داره که دقیقا زاویه شیب رو بهت نشون می‌دن. جذاب‌ترین بخشش اینه که وقتی سطح کاملا تراز (صفر درجه) بشه، دستگاه بوق می‌زنه؛ یعنی حتی نیازی نیست بهش نگاه کنی!

طراحی سه‌بعدی مقاوم، سیم‌کشی فشرده و کدنویسی دقیق ریاضی، این پروژه رو به یکی از کاربردی‌ترین ابزارها تبدیل کرده. اگر دوست داری یه ابزار اندازه‌گیری حرفه‌ای با دست‌های خودت بسازی، تو این آموزش از آیسی‌مدار همراه ما باش تا قدم‌به‌قدم این تراز دیجیتال رو مونتاژ کنیم.

قطعات موردنیاز

  • میکروکنترلر: آردوینو نانو (Atmega328P) – به خاطر ابعاد کوچیک و پین‌های زیادش انتخاب شده تا راحت تو قاب جا بشه و 11 تا ال‌ای‌دی رو همزمان کنترل کنه.
  • سنسور حرکت: ماژول MPU6050 (6 محوره) – قلب تپنده پروژه که با شتاب‌سنج و جایرو خود، زاویه دقیق گرانش و شیب رو می‌خونه.
  • 11 عدد ال‌ای‌دی پرنور – به عنوان رابط کاربری و نمایشگر خطی روی بدنه دستگاه نصب می‌شن.
  • بازر اکتیو 5 ولت – وقتی سطح کاملا تراز (صفر درجه) شد بوق می‌زنه تا بدون نگاه کردن به دستگاه متوجه بشی.
  • 2 عدد باتری لیتیومی 3.7 ولت – برای رسیدن به ولتاژ 7.4 ولت سری می‌شن تا آردوینو و ال‌ای‌دی‌ها با نهایت قدرت کار کنن.
  • کلید فشاری (Push Button) – برای قطع و وصل کردن سریع برق دستگاه تا باتری الکی مصرف نشه.
  • بدنه پرینت سه‌بعدی با کیفیت صنعتی – یه قاب مستحکم که کج نمی‌شه و بیس دستگاه رو کاملا صاف نگه می‌داره.
  • سیم‌های مسی روکش‌دار – برای سیم‌کشی مستقیم (بدون PCB) تا فضای داخل قاب اشغال نشه.
  • وارنیش حرارتی و چسب برق – برای عایق‌بندی اتصالات و جلوگیری از اتصالی تو فضای تنگ بدنه.
  • چسب قطره‌ای قوی – برای فیکس کردن سنسور کف بدنه تا کوچک‌ترین لرزشی دقت کار رو پایین نیاره.
  • نرم‌افزار Arduino IDE – برای نوشتن کدهای مثلثاتی و تبدیل دیتای خام سنسور به درجه.
  • هویه و ابزار لحیم‌کاری دقیق – چون از برد سوراخ‌دار استفاده نمی‌کنیم، کیفیت لحیم‌ها برای استحکام مدار حیاتیه.
  • مولتی‌متر دیجیتال – برای چک کردن ولتاژ باتری و قطعی نداشتن سیم‌ها حین مونتاژ.
مرحله ۱

طراحی بدنه صنعتی تو محیط فیوژن ۳۶۰

قدم اول این پروژه، طراحی یه قاب صنعتی و محکم برای ترازه. چون دقت تو این پروژه حرف اول رو می‌زنه، بدنه باید کفی کاملا صافی داشته باشه تا دیتایی که سنسور می‌خونه دقیقا با سطح واقعی یکی دربیاد.

  1. روند طراحی در Fusion 360:
  2. اسکچ اولیه: اول از همه یه فرم مستطیلی و بلند کشیدم که شبیه ترازهای بنایی کلاسیک باشه تا هم راحت تو دست جا بگیره و هم سطح تماس خوبی داشته باشه.
  3. تنظیم دقیق سوراخ‌ها: با ابزار Rectangular Pattern، دقیقا 11 تا سوراخ دایره‌ای با فاصله‌های مساوی روی وجه بالایی ایجاد کردم. این سوراخ‌ها جایگاه ال‌ای‌دی‌ها هستن و باید از نظر ریاضی کاملا وسط باشن تا کاربر موقع خوندن تراز گیج نشه.
  4. توخالی کردن بدنه: با دستور Shell دل کار رو خالی کردم تا آردوینو و باتری‌ها توش جا بشن. ضخامت دیواره‌ها رو زیاد گرفتم تا بدنه اصلا خم نشه؛ چون این یه ابزار کالیبراسیونه و کوچک‌ترین تاب برداشتن دقتش رو خراب می‌کنه.
  5. جایگذاری قطعات: برای کلید و بازر هم شیارها و سوراخ‌های مخصوصی روی بدنه درآوردیم تا بعد از مونتاژ، همه‌چیز فیکس و حرفه‌ای به نظر برسه.
مرحله ۲

پرینت سه‌بعدی و انتخاب متریال مناسب

بعد از طراحی نرم‌افزاری، نوبت ساخت فیزیکی بدنه رسید. انتخاب متریال برای ابزاری که قراره اندازه‌گیری دقیق انجام بده خیلی مهمه.

  1. انتخاب متریال (ABS): من به جای PLA معمولی، از فیلامنت ABS استفاده کردم. ABS مقاومت خیلی بالایی در برابر ضربه و گرما داره. این یعنی اگه تراز زیر آفتاب یا تو ماشین بمونه، دفرمه نمی‌شه و دقت کفی دستگاه سر جاش می‌مونه.
  2. تنظیمات پرینت:
  3. تراکم (Infill): برای اینکه بدنه حسابی سفت بشه و تاب برنداره، تراکم رو روی 40 درصد و مدل Gyroid تنظیم کردم.
  4. دما و محیط پرینت: برای جلوگیری از جمع شدن (Warping) پلاستیک، پرینت رو تو یه محفظه گرم با دمای بالای صفحه و نازل مخصوص ABS انجام دادم.
  5. پرداخت نهایی: بعد از پرینت، صاف بودن کفی رو با یه خط‌کش دقیق مهندسی چک کردم. نتیجه کار یه بدنه سبک ولی به‌شدت جون‌دار شد که آماده نصب قطعاته.
مرحله ۳

معماری مدار و ارتباط قطعات

تو فاز دوم باید مغز متفکر تراز رو سرهم کنیم. برای اینکه دستگاه باریک بمونه و داخل قاب پرینت‌شده راحت جا بشه، بی‌خیال استفاده از برد سوراخ‌دار و PCB شدیم و تصمیم گرفتیم قطعات رو مستقیم با سیم به هم لحیم کنیم (Point-to-Point).

  1. پردازشگر مرکزی: آردوینو نانو نقش هاب مرکزی رو بازی می‌کنه. این برد با پروتکل I2C (از طریق پین‌های SDA و SCL) به سنسور MPU6050 وصل می‌شه و دیتای زاویه رو لحظه‌ای می‌خونه.
  2. آرایه 11 تایی ال‌ای‌دی: از پین‌های دیجیتال آردوینو، 11 تا سیم روکش‌دار رو مستقیم به پایه‌های مثبت ال‌ای‌دی‌ها لحیم کردم. اینطوری کدها می‌تونن هر ال‌ای‌دی رو جداگانه کنترل کنن و افکت "حرکت نور" رو متناسب با زاویه دستگاه بسازن.
  3. فیدبک صوتی: بازر 5 ولت به یه پین دیجیتال وصل شد. برنامه طوری نوشته شده که وقتی سنسور دقیقا زاویه صفر درجه رو تشخیص می‌ده، بازر یه بوق ممتد می‌زنه تا بدون نگاه کردن به دستگاه متوجه بشی کارت تراز شده.
  4. تامین برق: برای اینکه دستگاه پرتابل باشه، دو تا باتری 3.7 ولت رو سری کردم تا ولتاژ 7.4 ولت به دست بیاد. این برق از طریق یه کلید فشاری به پین VIN آردوینو وصل می‌شه. کلید بهت اجازه می‌ده فقط موقع اندازه‌گیری دستگاه رو روشن کنی تا باتری هدر نره.
مرحله ۴

جاسازی قطعات و لحیم‌کاری

حالا مدار روی کاغذ باید تبدیل بشه به یه ابزار واقعی و جون‌دار. چون این تراز قراره تو محیط‌های کارگاهی استفاده بشه، باید حسابی در برابر لرزش مقاوم باشه و قطعات تو دل هم فیکس بشن.

  1. نصب ال‌ای‌دی‌ها: هر 11 تا ال‌ای‌دی رو دستی توی سوراخ‌های قاب فشار دادم. چون ابعاد تو فیوژن دقیق طراحی شده بود، ال‌ای‌دی‌ها کاملا کیپ شدن و ظاهر دستگاه تمیز دراومد.
  2. لحیم‌کاری مستقیم: برای حفظ ظرافت دستگاه، سیم‌کشی‌ها رو بدون واسطه انجام دادیم:
  3. پایه مثبت (آند): پایه مثبت هر ال‌ای‌دی به یکی از پین‌های دیجیتال آردوینو (D2 تا D12) لحیم شد.
  4. پایه مشترک (کاتد): برای پایه‌های منفی یه "ریل گراند" ساختم؛ یعنی تمام کاتدها رو با یه سیم مسی به هم وصل کردم و بعد یه سر اون رو به پین GND آردوینو زدم.
  5. تراز کردن خود سنسور: ماژول MPU6050 حساس‌ترین قطعه‌ست. با چسب قطره‌ای قوی اون رو کف بدنه چسبوندم. موقع چسبوندن، با یه تراز حبابی چک کردم که سنسور دقیقا موازی با کفی خارجی دستگاه باشه.
  6. برق و کلید: دو تا باتری سری شدن و کلید فشاری سر راه سیم مثبت قرار گرفت. تمام اتصالات لخت رو هم با وارنیش حرارتی پوشوندم تا داخل قاب اتصالی نکنن.
  7. نصب بازر: بازر رو نزدیک به سطح بالایی قاب با چسب حرارتی فیکس کردم و مستقیم به آردوینو لحیم کردم تا صداش واضح و بلند بیرون بیاد.
مرحله ۵

منطق برنامه‌نویسی و کالیبراسیون

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

  1. خواندن دیتا: آردوینو از طریق پروتکل I2C مدام از سنسور MPU6050 دیتا می‌گیره و با محاسبه بردار گرانش، زاویه دستگاه رو می‌فهمه.
  2. محاسبات زاویه: از یه فرمول مثلثاتی استفاده کردیم تا مقادیر خام محورها تبدیل به زاویه (درجه) بشه:
  3. فرمول: Pitch = arctan(Y / sqrt(X^2 + Z^2)) * (180 / π)
  4. نگاشت نوری: الگوریتمی نوشتیم که بازه‌های مختلف زاویه رو به 11 تا ال‌ای‌دی اختصاص می‌ده. وقتی تراز رو کج می‌کنی، ال‌ای‌دی روشن هم شیفت پیدا می‌کنه و دقیقا نشون می‌ده شیب به کدوم سمته.
  5. قفل تراز صوتی (Level-Lock): یه آستانه حساس (مثبت/منفی 5 درجه) تعریف کردیم. وقتی زاویه به این محدوده می‌رسه، بازر بوق می‌زنه و می‌فهمی کارت کاملا تراز شده.
  6. کالیبراسیون دقیق: برای اینکه تراز کاملا صنعتی و دقیق باشه، یه آفست نرم‌افزاری تو کد گذاشتم. تراز رو روی یه سطح کاملا صاف گذاشتم و با کدنویسی هر خطای فیزیکی کوچیکی که تو نصب سنسور وجود داشت رو صفر کردم تا دستگاه بی‌نقص کار کنه.
مرحله ۶

برنامه‌نویسی و منطق دو محوره دستگاه

پردازش دیتای سنسور تو فریم‌ور

تو فاز نهایی کدنویسی به زبان ++C، کاری کردیم که دیتای خام حرکت تبدیل بشه به یه نمایشگر بصری دو محوره. این کد می‌تونه همزمان شیب محور X (چپ و راست) و Y (عقب و جلو) رو هندل کنه.

  1. کتابخانه‌ها و ارتباط: از کتابخانه Wire.h برای برقراری ارتباط I2C بین آردوینو و سنسور استفاده کردم. سنسور همون اول تو تابع setup چک می‌شه تا مطمئن بشیم اتصالات درسته.
  2. محاسبه شیب: برای پیدا کردن زاویه دقیق، برنامه شتاب‌های خام رو می‌خونه و با استفاده از تابع مثلثاتی atan2، بردار گرانش رو برای هر دو محور به درجه تبدیل می‌کنه:
  3. محور X (Pitch): atan2(ax, az) * 180.0 / PI
  4. محور Y (Roll): atan2(ay, az) * 180.0 / PI
  5. کنترل دو محوره ال‌ای‌دی‌ها:
  6. قفل مرکزی: اگه زاویه هر دو محور X و Y تو بازه مثبت/منفی 5 درجه باشه، ال‌ای‌دی وسط روشن می‌شه و بازر بوق می‌زنه؛ یعنی سطح کاملا ترازه.
  7. محور X (چپ و راست): 6 تا ال‌ای‌دی برای شیب‌های چپ و راست در نظر گرفته شده. شیب‌های ملایم (5 تا 20 درجه) ال‌ای‌دی‌های داخلی رو روشن می‌کنن و شیب‌های تند (30 درجه به بالا) ال‌ای‌دی‌های بیرونی رو.
  8. محور Y (عقب و جلو): ال‌ای‌دی‌های باقی‌مونده به شیب عقب و جلو حساسن؛ اینطوری می‌تونی همزمان دو بعد رو تراز کنی.
  9. پایداری سیستم: برای اینکه نمایشگر گیج نزنه و چندتا ال‌ای‌دی با هم روشن نمونن، اول هر لوپ تابع clearAllLEDs اجرا می‌شه. یه تاخیر 100 میلی‌ثانیه‌ای هم تو کد گذاشتم تا پرش‌های ریز سنسور حذف بشن و نور نرم و پیوسته‌ای داشته باشیم.
مرحله ۷

تست عملکرد، دقت و نتیجه نهایی

مرحله آخر این بود که تراز دست‌سازمون رو حسابی تست کنیم تا ببینیم تو دنیای واقعی چقدر به درد می‌خوره.

  1. مقایسه شونه‌به‌شونه: دستگاه IncliSense رو کنار یه تراز حرفه‌ای حبابی گذاشتم و روی سطوح مختلف تست کردم. حرکت نور ال‌ای‌دی‌ها کاملا با حرکت حباب فیزیکی سینک و هم‌قدم بود.
  2. دقت اندازه‌گیری: با وصل کردن دستگاه به کامپیوتر و مانیتور سریال، چک کردم و دیدم دقت سنسور کالیبره‌شده در حد مثبت/منفی 0.5 درجه است. بوق هشدار تراز هم همیشه دقیقا روی نقطه صفر به صدا درمیاد و دیگه نیازی نیست چشمت رو خسته کنی.
  3. پایداری و حذف نویز: به لطف فیلترهای نرم‌افزاری و بدنه سفت و محکم ABS، حتی وقتی دستگاه رو روی سطوح لرزان (مثل میز کارگاهی که روش دستگاه روشنه) می‌ذاری، باز هم اعداد و نور ال‌ای‌دی‌ها پرش ندارن.
  4. باتری و پرتابل بودن: باتری‌های 7.4 ولتی تا 5 ساعت به صورت مداوم کار کردن. وجود کلید فشاری هم باعث می‌شه بتونی فقط موقع نیاز تراز رو روشن کنی و تو بقیه زمان‌ها خیالت از بابت شارژ باتری راحت باشه.

فایل‌های پیوست

STL Top Plate.stl
STL Housing.stl
INO Inclisense_Skecth.ino

تو میتونی اولین سازنده باشی!

اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر

این آموزش با استانداردهای اختصاصی آیسی‌مدار بازنویسی و بهینه‌سازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.

آموزش‌های مشابه

گفتگو‌های کاربران

هنوز نظری ثبت نشده؛ تو شروع کن!