ساعت دندهسیارهای مکانیکی با آردوینو
ساعتهای مکانیکی همیشه با اون چرخدندههای در هم تنیده و صدای تیکتاک نوستالژیکشون، جذابیت خاصی دارن. حالا تصور کن همین سیستم مکانیکی جذاب رو با دنیای دیجیتال و میکروکنترلرها ترکیب کنیم! تو این پروژه قراره با هم یک ساعت دندهسیارهای (Planetary Gear) بسازیم که ظاهرش کاملا مکانیکی و کلاسیکه، اما مغز متفکرش یک برد آردوینوئه که با دقت بالا زمان رو کنترل میکنه.
تیم آیسیمدار تو این آموزش سعی کرده یه چالش ترکیبی از مکانیک و الکترونیک برات آماده کنه. ساخت این ساعت علاوه بر اینکه یه وسیله دکوری بینظیر برای میز کار یا دیوار اتاقت میشه، بهت یاد میده چطور از استپر موتورها و سیستمهای کاهنده سرعت برای حرکتهای دقیق استفاده کنی.
این پروژه طوری طراحی شده که کل ساعت فقط با یه موتور حرکت میکنه و چرخدندهها نسبت زمان بین عقربه ساعتشمار و دقیقهشمار رو تنظیم میکنن. پس قطعات و ابزارهات رو آماده کن تا بریم سراغ ساخت این شاهکار مهندسی و هنری!
قطعات موردنیاز
- ورق چوب و پلکسی اکریلیک 5 میلیمتری
- پیچهای سرتخت M5، واشر و مهره
- اسپیسر برای برد (PCB)
- پیچ M3 برای استپر موتور
- درایور استپر موتور (مثل L293d)
- هر مدل برد آردوینو که دم دستت بود
- ماژول ساعت زمان واقعی (RTC) مدل DS3231
- سنسور اثر هال مدل A3144
- آهنربای نئودیمیوم 5 میلیمتری
- چند تا دکمه فشاری (پوشباتن)
- مقاومت 10 کیلواهم
- خازن 100 میکروفاراد 25 ولت
- سوکت تغذیه (DC Jack)
- آداپتور 5 ولت 2 آمپر
- باتری سکهای CR2032 برای ماژول ساعت
- استپر موتور 1.8 درجه با شفت 5 میلیمتری
- تسمه تایم GT2 به طول 400 میلیمتر
- پولی 60 دندانه GT2 برای شفت 5 میلیمتری
- پولی 20 دندانه GT2 برای شفت 5 میلیمتری
- 3 عدد بلبرینگ 5 در 16 در 5 میلیمتری
- 2 عدد بلبرینگ لبهدار 5 در 16 در 5 میلیمتری
- میله رزوه شده (پیچ متری) M5 در طول 50 میلیمتر
اولین قدم: طراحی و ساخت چرخدندهها
یکی از اهداف اصلی این پروژه اینه که مثل یه ساعت مکانیکی واقعی، کل سیستم فقط با یه موتور حرکت کنه. اما عقربه دقیقهشمار باید 12 دور بچرخه تا عقربه ساعتشمار فقط یک دور بزنه. برای همین به یه گیربکس با نسبت تبدیل 1 به 12 نیاز داریم تا بتونیم هر دو عقربه رو با یک موتور کنترل کنیم.
بهترین راه برای این کار، استفاده از گیربکس دندهسیارهای (Planetary Gearbox) هست. تو این سیستم چند چرخدنده داخل هم کار میکنن تا نسبتهای دقیقی رو بهمون بدن.
قدم بعدی محاسبه تعداد دندانههای هر چرخدنده برای رسیدن به نسبت 1:12 بود. تو این طراحی، چرخدنده خورشیدی (Sun Gear) به عقربه دقیقهشمار متصل میشه، حامل سیارهای (Planet Carrier) به عقربه ساعتشمار و چرخدنده حلقوی (Ring Gear) هم کاملا ثابت میمونه. حالا بریم سراغ یه کم ریاضیات جذاب برای طراحی چرخدندهها:
- S = تعداد دندانههای چرخدنده خورشیدی (Sun gear)
- R = تعداد دندانههای چرخدنده حلقوی بیرونی (Ring gear)
- P = تعداد دندانههای چرخدنده سیارهای (Planet gear)
نسبت دنده (i) با این فرمول محاسبه میشه: i = S / (R + S). نکته جالب اینجاست که تعداد دندانههای چرخدنده سیارهای تو این نسبت تأثیری نداره، اما برای اینکه چرخدندهها درست تو هم چفت بشن باید از این قانون پیروی کنن: P = (R - S) / 2
با کمی محاسبه و تست، این اعداد بهترین نتیجه رو برای ما دارن: S = 10 و R = 110 و P = 50. با این اعداد فاصله بین دندهها خیلی کمه ولی سیستم بدون مشکل کار میکنه! برای ساخت این قطعات میتونی فایلها رو تو نرمافزارهای طراحی سهبعدی رسم کنی یا از فایلهای آماده استفاده کنی.
حواست باشه که همه چرخدندهها با وجود تفاوت تو اندازههاشون، باید گام دندانه (Pitch) یکسانی داشته باشن تا تو هم گیر نکنن.
بهترین و تمیزترین روش برای ساخت این چرخدندهها، استفاده از دستگاه برش لیزر روی ورقهای پلکسی اکریلیک (ترجیحا دودی رنگ) 5 میلیمتریه. البته اگه به برش لیزر دسترسی نداری، خیلی راحت میتونی فایلهای STL رو با پرینتر سهبعدی پرینت بگیری. فقط ممکنه نیاز باشه چرخدنده حلقوی بزرگ رو به چند تیکه تقسیم کنی تا رو صفحه پرینترت جا بشه.
بعد از ساخت چرخدندهها، باید بلبرینگها رو با فشار داخل چرخدندههای سیارهای جا بزنی. برای اینکه سوراخها دقیق باشن، بهتره قبلش روی یه تیکه پلکسی باطله، چند تا سوراخ با اختلاف قطر خیلی کم تست کنی تا ببینی کدوم یکی بلبرینگ رو محکمتر نگه میداره. این کار به خاطر تفاوت تو دقت دستگاههای لیزر یا پرینترهای مختلف به شدت پیشنهاد میشه.
مونتاژ فیزیکی سیستم دندهسیارهای
برای سرهم کردن چرخدندهها، به بدنه اصلی ساعت نیاز داریم. تو این بخش میتونی حسابی خلاقیت به خرج بدی و ظاهر ساعت رو هرطور که دوست داری طراحی کنی؛ فقط جای سوراخهای پیچها باید دقیقا با استاندارد مکانیزم یکی باشه. استفاده از سوراخهای زیاد روی بدنه و صفحه جلویی باعث میشه حرکت چرخدندهها کاملا دیده بشه و حس مکانیکی خوبی رو منتقل کنه.
عقربهها و حاملهای سیارهای هم میتونن از جنس پلکسی شفاف یا سوراخدار باشن تا زیبایی کار دوچندان بشه. برای قطعات بدنه از ترکیب چوب و پلکسی 5 میلیمتری استفاده کن. حتما سوراخهای روی صفحه جلویی و حاملها رو خزینه (Countersink) کن تا پیچهای سرتخت دقیقا همسطح بدنه بشن و موقع چرخش به جایی گیر نکنن.
محور مرکزی ساعت داخل دو تا بلبرینگ که روی حاملهای سیارهای قرار دارن میچرخه. برای این محور میتونی از یه پیچ متری (میله رزوه شده) M5 استفاده کنی تا کار باز و بسته کردنش هم راحتتر باشه.
برای اینکه چرخدنده خورشیدی دور محور نلغزه و هرز نچرخه، سوراخ وسطش به شکل حرف D طراحی شده. بنابراین باید یه طرف میله محورت رو با سوهان کمی صاف کنی تا دقیقا تو این سوراخ چفت بشه.
وقتی چرخدنده خورشیدی رو روی محور جا زدی، میتونی حاملهای سیارهای رو با در نظر گرفتن بلبرینگهای لبهدار اضافه کنی. برای درک بهتر ترتیب قطعات، حتما به تصاویر سهبعدی انفجاری (Exploded view) تو همین مرحله دقت کن.
حالا نوبت چرخدندههای سیارهایه. موقع قرار دادن این چرخدندهها، از واشرهای کوچیک استفاده کن تا فاصله مناسبی ایجاد بشه و همهچیز روان بچرخه. بعد از مونتاژ، با دست محور رو بچرخون و مطمئن شو که هیچ اصطکاک اضافهای وجود نداره.
نصب این مکانیزم روی بدنه اصلی ساعت ممکنه کمی حوصله بخواد. یه ترفند خوب اینه که پیچها رو از صفحه جلویی رد کنی و موقتا با چسب نواری نگهشون داری تا قطعات رو روشون سوار کنی.
میتونی با گذاشتن چند تیکه کاغذ یا واشر خیلی نازک بین چرخدنده حلقوی و صفحه پشتی، یکم فاصله (لقمه) ایجاد کنی تا چرخدندهها تحت فشار نباشن.
در نهایت موقع سفت کردن پیچها حواست باشه که عقربه ساعتشمار و دقیقهشمار با هم همخوانی داشته باشن (مثلا وقتی دقیقهشمار روی 12 هست، ساعتشمار دقیقا روی یکی از اعداد باشه، نه بینشون).
اضافه کردن استپر موتور و سنسور موقعیت
حالا که سیستم چرخدندهها آماده شده، باید نیروی محرکهاش رو تأمین کنیم. دلیل استفاده از استپر موتور اینه که میتونه بدون نیاز به سنسورهای زاویه، حرکتهای بهشدت دقیقی داشته باشه. علاوه بر این، استپر موتور صدای "تیک" خفیفی تولید میکنه که حس واقعی یه ساعت مکانیکی رو بهمون میده!
یه استپر موتور معمولی تو هر دور 200 قدم (Step) میزنه. اگه اینو مستقیم به دقیقهشمار وصل کنیم، تو هر ساعت فقط 200 حرکت داریم که میشه هر 18 ثانیه یه تیک؛ این خیلی شبیه صدای ساعت نیست! برای همین از یه سیستم انتقال قدرت تسمهای با نسبت 1 به 3 بین موتور و محور ساعت استفاده میکنیم تا موتور برای هر دور، 600 قدم بزنه.
حالا اگه تو تنظیمات درایور موتور رو رو حالت نیمقدم (Half-step) بذاری، این عدد میشه 1200 قدم تو هر ساعت، یعنی دقیقا هر 3 ثانیه یه تیک. عالیه نه؟
یکی از چالشهای استپر موتورها اینه که وقتی روشن میشن، نمیدونن تو چه زاویه و موقعیتی قرار دارن (مثل پرینترهای سهبعدی که به سنسورهای محدودکننده یا End-stop نیاز دارن). اما تو ساعت نمیتونیم از یه مانع فیزیکی استفاده کنیم چون عقربهها باید مدام بچرخن.
راهحل این مشکل استفاده از سنسور اثر هال (Hall-effect) مدل A3144 هست. این سنسور میتونه میدان مغناطیسی رو تشخیص بده. با چسبوندن یه آهنربای نئودیمیوم کوچیک روی حامل سیارهای، آردوینو موقع روشن شدن موتور رو میچرخونه تا آهنربا به سنسور برسه و موقعیت صفر (ساعت 12) رو پیدا کنه.
برای مونتاژ موتور، اول اون رو روی صفحه پشتی با پیچهای M3 نصب کن ولی پیچها رو تا ته سفت نکن تا موتور بتونه یه کم حرکت کنه. پولی کوچیک رو روی شفت موتور ببند و تسمه تایم رو بنداز.
حالا موتور رو به سمت عقب بکش تا تسمه سفت بشه و پیچها رو محکم کن. تسمه باید یه مقدار خیلی کمی لقی داشته باشه تا فشار بیش از حد به چرخدندهها و محور اصلی نیاد.
سنسور اثر هال رو هم با یه قطره چسب سر جاش محکم کن. البته بهتره قبلش سیمها رو به پایههای سنسور لحیم کنی و حتما از وارنیش حرارتی استفاده کنی تا پایهها به هم اتصالی نکنن. جهت قرارگیری سنسور خیلی مهم نیست، اما قطبهای آهنربا بهشدت مهمه! سنسور هال فقط به یک قطب مغناطیسی حساسه.
قبل از چسباندن آهنربا روی قطعه مکانیکی، اون رو نزدیک سنسوری که به مدار متصله ببر. وقتی سنسور واکنش نشون داد (مثلا با روشن شدن یه الایدی تستی)، همون سمتی از آهنربا که رو به سنسور بوده رو علامت بزن و دقیقا به همون شکل رو بدنه حامل سیارهای بچسبونش.
مدار الکترونیکی و قلب تپنده ساعت
میشه با یه کد خیلی ساده به آردوینو گفت که موتور رو یک قدم بچرخونه، 3000 میلیثانیه صبر کنه و دوباره این کار رو تکرار کنه. اما ساعت داخلی خود آردوینو اونقدرها دقیق نیست و بعد از چند روز میبینی ساعتت حسابی عقب یا جلو افتاده. تازه با هر بار قطع شدن برق، زمان هم ریست میشه.
برای رفع این مشکل از ماژول ساعت زمان واقعی (RTC) مدل DS3231 استفاده میکنیم. این ماژول یه چیپ فوقالعاده دقیقه که از طریق پروتکل I2C با آردوینو ارتباط برقرار میکنه و سیمکشی خیلی سادهای داره. این ماژول یه باتری سکهای CR2032 داره که باعث میشه حتی اگه برق مدار قطع بشه، چیپ به شمردن زمان ادامه بده و ساعتت تنظیم بمونه.
برای کنترل استپر موتور هم از درایور L293d استفاده میکنیم. درایورهای حرفهایتر معمولا از سیگنالهای PWM برای کنترل جریان موتور استفاده میکنن که باعث تولید اون صدای سوتمانند و رو اعصاب موتور میشه (اگه پرینتر سهبعدی داشته باشی میدونی چی میگم).
از اونجایی که این ساعت قراره تو فضای خونه و اتاق کار قرار بگیره، باید کاملا بیصدا باشه. به همین خاطر درایور کلاسیک L293d یه انتخاب عالیه تا هیچ نویز فرکانس بالایی نداشته باشیم و فقط از صدای تیکتاک مکانیکی لذت ببریم. برای کاهش مصرف برق و جلوگیری از داغ شدن موتور، ولتاژ کاریش رو روی 5 ولت تنظیم کردیم که کاملا جوابگوئه.
عملکرد سنسور هال هم که همونطور که تو مرحله قبل گفتیم خیلی سادهست؛ وقتی آهنربا بهش نزدیک میشه، یه سیگنال دیجیتال صفر یا یک به آردوینو میفرسته و موقعیت کالیبراسیون رو بهش اعلام میکنه. Check out
تو مدار این ساعت 4 تا دکمه فشاری هم در نظر گرفتیم تا کاربر بتونه ساعت رو دستی تنظیم کنه. برای سیمکشی راحتتر، این دکمهها مستقیما به زمین متصل میشن و از مقاومتهای Pull-up داخلی خود آردوینو براشون استفاده میکنیم.
میتونی روی مدارت پینهدرهایی هم برای توسعههای آینده در نظر بگیری تا اگه خواستی ماژول جدیدی مثل بلوتوث یا وایفای بهش اضافه کنی، جای کافی داشته باشی.
برای شروع، مدار رو روی بردبورد ببند و تست کن. وقتی همهچیز درست کار کرد، میتونی قطعات رو روی یه برد سوراخدار لحیم کنی یا حتی براش یه برد مدار چاپی اختصاصی طراحی کنی و پشت ساعت پیچ کنی تا ظاهر کار تمیز و حرفهای بمونه. Use this link to my google drive.
کدنویسی آردوینو و تنظیمات نرمافزاری
کدهای این پروژه با وجود اینکه وظایف مهمی دارن، اما در کل پیچیده نیستن. برای اینکه درگیر نوشتن کدهای پایه نشیم، از چند تا کتابخونه کاربردی استفاده میکنیم که باید رو نرمافزار آردوینوت نصب باشن:
- Accelstepper <- برای کنترل نرم و حرفهای استپر موتور. با این کتابخونه میتونی به راحتی دستوراتی مثل چرخش به یه موقعیت خاص یا حرکت با سرعت مشخص رو پیاده کنی.
- Wire <- کتابخونه پیشفرض آردوینو برای ارتباط I2C که برای ماژول ساعت واجبه.
- RTClib <- برای ارتباط سریع و راحت با ماژول RTC و استخراج مقادیر ساعت، دقیقه و ثانیه.
- OneButton <- یه کتابخونه عالی برای مدیریت دکمههای فشاری که حتی کلیک دوبل یا نگهداشتن دکمه رو هم به راحتی تشخیص میده.
تو برنامهنویسی دستگاههایی مثل ساعت که قراره 24 ساعته و برای سالها روشن بمونن، یه نکته حیاتی وجود داره: نباید متغیری داشته باشی که مقدارش مدام در حال افزایش باشه. اگه اینطور باشه، بعد از یه مدت کوتاه حافظه سرریز (Overflow) میشه و دستگاه هنگ میکنه.
به همین دلیل تو کدها هیچوقت به موتور دستور نمیدیم که به یه "موقعیت مطلق" بره، بلکه بهش میگیم یه "مقدار مشخص" در یک جهت حرکت کنه. اینطوری هیچ متغیری تا بینهایت بزرگ نمیشه.
اولین باری که ماژول RTC رو به مدار وصل میکنی، باید زمانش رو تنظیم کنی. تو فایل کدها خطی وجود داره که زمان ماژول رو با زمان کامپیوترت (تو همون لحظه کامپایل) سینک میکنه.
کافیه اون خط رو از حالت کامنت خارج کنی، کد رو آپلود کنی تا ساعت تنظیم بشه. بعد دوباره همون خط رو کامنت کن و یه بار دیگه کد رو آپلود کن. اگه این کار رو نکنی، با هر بار ریست شدن آردوینو، ساعت به زمان قبلی برمیگرده!
فایل کدهای پروژه رو باز کن و روی برد آپلود کن. تمام بخشهای کد به خوبی مرتب شدن و میتونی منطق کارکرد ساعت رو به راحتی متوجه بشی.
پایان کار و لذت تیکتاک ساعت مکانیکی
بعد از متصل کردن تمام قطعات الکترونیکی و آپلود کدها، حالا میتونی نتیجه زحماتت رو ببینی! طراحی پایه این ساعت به قدری منعطف و جذابه که میتونی اون رو تو ابعاد و شکلهای مختلفی پیاده کنی. از اونجایی که مغز این ساعت یک آردوینوئه، دستت برای اضافه کردن امکانات جانبی کاملا بازه. میتونی براش آلارم تعریف کنی، سنسور دما بهش اضافه کنی، یا حتی به اینترنت متصلش کنی تا خودش به صورت اتوماتیک زمان رو تنظیم کنه.
این پروژه فقط یه ماکت آموزشی نیست؛ مکانیزم و کدهای اون به قدری پایدار طراحی شدن که میتونه سالها بدون هیچ مشکلی گوشه اتاقت کار کنه و با صدای تیکتاک جذابش حس خوبی به فضا بده.
امیدوارم از ساخت این ساعت دندهسیارهای لذت برده باشی و ایدههای جدیدی برای ترکیب مکانیک و الکترونیک به ذهنت رسیده باشه. تو اپلیکیشن آیسیمدار منتظر دیدن عکسها و ویدیوهای پروژهات هستیم؛ حتما تجربهات رو با ما و بقیه به اشتراک بگذار!
فایلهای پیوست
تو میتونی اولین سازنده باشی!
اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر
این آموزش با استانداردهای اختصاصی آیسیمدار بازنویسی و بهینهسازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.








































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