آردوینو آموزش آردوینو سرگرمی پروژه های آردوینو

آموزش ساخت دور شمار فیجت اسپینر آردوینو Arduino Spinner RPM

فیجت اسپینر Fidget-Spinner-RPM-arduino-digispark-
نوشته شده توسط اروند طباطبایی

فیجت اسپینر Fidget Spinner در حال شکستن رکورد فروش اسباب‌بازی در کل تاریخ است. یک سرگرمی بسیار ساده و جذاب که از بازی کردن با آن خسته نمی‌شوید. چند روزی است به این فکر می‌کردم که چطور میشه فیجت اسپینر این سرگرمی جذاب را جذاب‌تر کرد؟ و از حالت بازی انفرادی به بازی گروهی تبدیل کرد. یه نگاهی به ماژول‌های پر کاربرد بازار انداختم. به این نتیجه رسیدم که با سنسور اثر هال می‌توان در اثر میدان مغناطیسی، دوران فیجت اسپینر Spinner را محاسبه کرد. از این رو در این آموزش شیوه ساخت دور شمار فیجت اسپینر Fidget Spinner را آموزش خواهم داد. به این روش می‌توانید با اسپینر Fidget Spinner به حالت گروهی بازی کنید. به این صورت که از قدرت دورانی که هر شخص می‌تواند به اسپینر وارد کند، به عنوان برنده اعلام شود! در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

ساختار فیجت اسپینر Fidget Spinner

فیجت اسپینر دارای یک بلبرینگ مرکزی است. کلیه دوران‌ها بسته به جنس و جایگذاری این بلبرینگ دارد. اسپینرها در شکل‌های مختلفی ساخته شده‌اند. به طور معمول دارای ۳ لبه مجزا هستند. برای تنوع در این لبه‌ها یا بلبرینگ قرار دارد، یا ال ای دی و … که بسته به نوع خلاقیت تولید کننده متفاوت است. کافیست یکی از لبه‌ها را گرفته و به آن نیرو وارد کنید، فیجت اسپینر Fidget Spinnner حول نقطه مرکز شروع به چرخش می‌کند.

 

محاسبه دوران فیجت اسپینر Fidget Spinner

برای محاسبه دوران چند روش وجود دارد. از آنجایی که نمی‌خواهیم در ساختار ظاهری فیجت اسپینر Fidget Spinner تغییر بوجود آوریم. کافیست یک آهنربا مغناطیسی کوچک به یکی از ضلع‌های اسپینر Spinner اتصال دهید. پیشنهاد می‌کنم که حتما از آهنربا قوی، سبک و کوچک استفاده کنید. در ادامه توضیح می‌دهم که چطور می‌توانید تهیه کنید. بخش بعدی در مدار شمارنده دوران اسپینر Spinner، سنسور اثر هال است. این سنسور توانایی تشخیص میدان مغناطیسی را دارد. هدف این است که با آهنربا یک میدان مغناطیسی متحرک ایجاد کنیم، در اثر هر بار حرکت آهنربا از جلوی سنسور اثر هال Hall Effective Sensor شمارنده عمل می‌کند. بخش‌های بعدی مدار برد آردوینو Arduino هر مدلی از آردوینو می‌تواند باشد. و نمایشگر جهت نمایش میزان دوران اسپینر Fidget Spinner است.

 

وسایل مورد نیاز:

آهنربا

چند رشته کابل

برد آردوینو Arduino Board

شیلد ال سی دی LCD 2X16

فیجت اسپینر Fidget Spinner

ماژول اثر هال Hall Sensor Module

 

اتصالات مدار:

شیلد ال سی دی LCD2X16 بدون نیاز به سیم کشی روی برد آردوینو Arduino نصب می‌شود. ماژول اثرهال دارای ۴ پایه است. در این آموزش از پایه آنالوگ آن استفاده شده است. پین AO را به پایه A2 آردوینو متصل می‌کنیم. دو پایه VCC و GND هم تغذیه مدار است. به پایه ۵ ولت و زمین مدار متصل می‌شوند. دانستن این نکته اهمیت دارد، شیلد ال سی دی کاراکتری انواع مختلفی در بازار دارد، مدلی که من در این آموزش استفاده کرده‌ام علاوه بر اینکه روی برد پین‌های آنالوگ را جای دیگری مشخص کرده بود، پایه آنالوگ در بالای برد قرار گرفته بود. پس از انجام این مراحل و آپلود کدها روی آردوینو کافیست آهنربا را به فیجت اسپینر Fidget Spinner اتصال دهید و از جلو سنسور اثر هال عبور دهید. میزان دوران بر اساس دور بر دقیقه مشخص می‌شود. همانند تصویر زیر:

آموزش ساخت دور شمار فیجت اسپینر آردوینو Arduino Fidget Spinner RPM دیجی اسپارک

 

کدهای مدار فیجت اسپینر Fidget Spinner:

 

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

 

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

 

 

حال با چرخاندن فیجت اسپینر Fidget Spinner می‌توانید تعداد دوران و قدرت دستتان را از طریق نمایشگر ال سی دی مشاهده کنید. به ویدیو زیر توجه کنید. برای استفاده از مدار دور شمار فیجت اسپینر Fidget Spinner به صورت Portable پیشنهاد می‌شود تغذیه را از یک باتری لیتیوم پلیمر Li-po استفاده کنید. به عنوان نمونه در ویدیو نمایش داده شده است.

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۷۰ دیدگاه

  • ممنون از اموزش های عالیتون، اگه ممکنه اموزش هایی مثل ساخت یک پخش کننده صدا بلوتوث، یا یک نمایشگر نمایش متن بلوتوث و… چیز های کنترل از راه دور و اینترنت اشیاء بیشتر بزارید مرسی.

    • با سلام
      ضمن تشکر از توجه و پیشنهاد شما، اولویت با آموزش هایى است که بیشترین تقاضا را دارند. پیشنهادتان را بررسى خواهیم کرد.

  • عرض ادب
    اولا تشکر میکنم، آموزش بسیار کاربردییه، دوما اینکه من اومدم با lcd کاراکتری معمولی راه اندازی کنم ولی نمیشه، کدها ریختم روی برد و lcdهم روشن میشه ولی هیچی نمایش نمیده

    • با سلام
      ضمن تشکر از توجه و سرعت عمل شما، در مورد این موضوع احتمالا اتصالات را درست برقرار نکرده‌اید. جهت دریافت راهنمایی دقیق اتصالات ال سی دی را اعلام کنید.

      • با تشکر از پاسخ شما
        غیر از پایه های تغذیه بک لایت و تغذیه برد، پایه ۴ به پین ۱۳، پایه ۵ به پین GND، پایه ۶ به پین ۱۲، پایه ۱۱ به پین ۱۱، پایه ۱۲ به پین ۱۰، پایه ۱۳ به پین ۹ و پایه ۱۴ به پین ۸ آردوینو متصل کرده ام.

        تشکر میکنم ازتون

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

    • با سلام
      بله، البته دقت کنید که نیابد از آهنربا بزرگ و سنگین استفاده کنید. چراکه باعث تداخل در چرخش اسپینر میشود. پیشنهاد میشود از آهنربا کوچک استفاده کنید و اگر قدرت کافی نداشته باشم، باید نزدیک به سنسور گرفته شود.

  • خیلی عالی من با میکرو کنترلر های avr کار میکنم این یکی از جالب ترین سایت هایی بود که دیدیم.

    • با سلام
      از توجه شما سپاسگذارم. نسل امبددها از همان AVR است ولی شیوه کار کردن امبدد دیوایس‌ها ساده‌تر و کاراتر هستند. پیشنهاد میکنم هرچه سریع‌تر به این سمت مهاجرت کنید!

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

  • درود بر شما. من ال سی دی را به آردینیو وصل کردم . هیچ نمینویسه. مدار و سیم ها درسته…برنامه های مختلف هم تست کردم….با تغییر پتانسیومتر مربع های داخل ال سی دی پر رنگ و کم رنگ میشه و لی هیچی نمینویسه.
    چه اشکالی میتونه باشه؟ مرسی

    • با سلام
      ضمن تشکر از توجه شما، در این زمینه باید شیلد ال سی دی را تست کنید. احتمالا تغذیه مدار، یا کتابخانه مورد استفاده با شیلد شما همخوانی ندارد.

  • با سلام
    من تو این اموزش به جای شیلد ال سی دی از خود ال سی دی کاراکتری استفاده کردم.البته به جای سنسور هال هم از رید سوییچ مغناطیسی.یکم هم کد ها و اتصالات رو تغیر دادم تا با پین های جدید جور در بیاد.همه چیز درست و صحیح نمایش داده میشه اما فقط مقدار دوران از مقدار واقعی بیشتره! مثلا تو اموزش شما بیشتر از ۱۰۰۰ نمیشه ولی تو این تا ۶۰۰۰ هم میره!!!مشکل چیه؟

    • با سلام
      ضمن تشکر از توجه شما، خب همانطور که میدانید برای استفاده از ال سی دی کاراکتری بجای شیلد کاراکتری نیاز به تغییرات در کدها است. که شما این کار را انجام داده‌اید. این موضوع بستگی به نوع سنسور شما دارد. اگر سطر ۴۹ کدها را ببینید، ماکزیمم دوران روی ۶۰۰۰ تنظیم شده است و این قضیه فقط مربوط به سنسور و آهنربای مورد استفاده است.

  • ریدسوویچ کلا دو پایه داره که اگر بهش اهنربا نزدیک شه وصل میشه و اگه نباشه قطع میشه.من یکی از پایه هاشو به ۱۳ زدم اونیکیم به ۵v و با ۱۰k ohm به gnd .اهنربا هم نودیومی هست یکم قویه.مشکل چیه؟در ضمن ۶۰ تا ۶۰ تا به سرعت اضافه میشه؟؟

    • با سلام
      بله با عملکرد ریدسوئیچ آشنایی دارم. در این خصوص این سنسور انتخاب مناسبی نمی‌باشد و دقت کافی ندارد. اکیدا توصیه میشود برای دریافت پاسخ درست از سنسور اثر هال استفاده کنید.

  • سلام . من همین شیلد ال سی دی رو به آردوینو uno r3 وصل کردم ولی زمانی که کد اکزمپل هلو ورد رو آپلود میکنم هیچ اتفاقی نمی افتده. کتابخانه لیکوید کیریستال رو هم ریختم. کنتراست رو هم رو ال سی دی تنظیم کردم(مربع ها دیده میشه).
    لطفا کمکم کنید.

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

  • سلام. من میخوام فاصله زمانی بین دو دور کامل اسپینر رو حساب کنم. ینی یه دور زد زمانی که صرف یک دور شد رو حساب کنه. میشه کمکم کنید؟؟؟؟
    یه سوال دیگه هم داشتم. تو کد count تعداد دور در هر ثانیه هست؟؟؟

    • با سلام
      ضمن تشکر از توجه شما، در خصوص سوال اول کار پیچیده‌ای نیست و نیازی به کدنویسی هم نمیباشد. صرفا یک معادله ریاضی ساده است. به عنوان مثال اگر اسپینر شما ۳۶۸ دور در دقیقه بزند، برای بدست آوردن مدت زمان یک دور کافیست عدد ۳۶۸ را به ۶۰ ثانیه تقسیم کنید. حاصل این محاسبه می‌شود ۰٫۱۶۳۰۴ چنانچه قصد دارید این موارد را در کدها انجام دهید، بایستی دانش کدنویسی c++ داشته باشید. در مورد سوال دوم هم تابع count یک شمارنده است.

  • سلام ببخشید باتری باید چند ولت باشه؟؟؟
    بعد یه سوال دیگه من رفتم ماژول اثر هال رو خریدم سه پایه داره نیشه بگین اونو چجوری باید وصل کنم ؟؟ ممنون

    • با سلام
      ضمن تشکر از توجه شما، سلول باتری لیتیوم پلیمر ولتاژ یکسانی دارند، ۳٫۷ تا ۴٫۲ ولت که در این آموزش از آن استفاده شده است. اتصالات که در آموزش توضیح داده شده است. از پایه آنالوگ ماژول استفاده شده است. همانطور که توضیح داده شده است در این آموزش از ۳ پایه استفاده شده است. راه اندازی کنید، اگر مشکلی بود از همین طریق اعلام کنید.

  • باسلام وعرض ادب.
    دستتون درد نکنه از اموزش های عالیتتون واقعا خیلی مفید هست.
    یه سوال داشتم؟من یک lcd همراه با i2c گرفتم و یه مشکل خیلی عجیبی دارم!!!!! با استفاده از برد اردوینو هر متنی که چاپ میکنه فقط حرف اول اون متن رو میاره بقیه رو حذف میکنه//شما احتمال میدید که مشکل از نرم افزاریه(برنامه اردوینو ) یا مشکل از خود برد ویا lcd باشه
    بازم ممنون از اموزش های خوب ومفید تون.

    • با سلام
      ضمن تشکر از توجه شما، در این خصوص موارد بوجود آمده نرم افزاری است. اگر ال سی دی روشن می‌شود و کاراکتر را هم نمایش می‌دهد؛ پس سالم است. مگر اینکه در ظاهر فیزیکی غیر عادی باشد. لطفا آموزش راه اندازی ال سی دی کاراکتری LCD با پروتکل I2C را مطالعه کنید. سپس موارد را در همان پست اعلام کنید.

      • باسلام. خیلی ممنو از راهنمایی تان
        من این کد هایی که توی این اموزش بود رو ازمایش کردم و مشکلی نداشت وقتی که از قسمت سریال چیزی منویسم کاملا نمیش میده.
        ولی موقعی که منویسی lcd.print(arduino) فقط حرف اول روی lcd چاپ میشه و مینویسه a به نظر شما دستور خاصی باید توی برنامه نوشته بشه مثلا استفاده از دستور while البته من این یکی رو امتخان کردم ولی جواب نداد دستور دیگه ای هست که اونو ازمایش کرد.

          • باسلام.ممنون از پاسخگویی شما
            من از این مثال که در برنامه اردوینو هست استفاده کردم و فقط حرف اول یعنی H روی lcd نمایش داده میشه
            البته این کد اینجا یکم جابجا شده اگه مایل باشید تو تلگرام عکس کد رو بفرستم.
            بازم ممنونم از راهنمایی شما.
            #include
            #include
            // Set the LCD address to 0x27 for a 16 chars and 2 line display
            LiquidCrystal_I2C lcd(0x27, 16, 2);
            void setup()
            {
            // initialize the LCD
            lcd.init();
            // Turn on the blacklight and print a message.
            lcd.backlight();
            lcd.print(“Hello, world!”);
            }
            void loop()
            {
            }

  • با سلام در قسمت وسایل مورد نیاز ذکر نکردین که باتری نیاز هست لطفا این مورد رو اضافه کنین و مشخصات باتری هم بفرمایین

    • با سلام و تشکر از شما
      همانطور که در این آموزش میبینید، یک شمارنده با سنسور اثر هال طراحی شده است. لیست اقلام مورد نیاز در متن آموزش قرار دارد. لطفا با دقت و حوصله مطالعه بفرمایید. شما میتوانید بجای سنسور اثر هال از یک میکروسوئیچ استفاده کنید.

  • با سلام و خسته نباشید. سپاس فراوان جهت آموزش های مفیدتون
    این برنامه در هر ۱ثانیه یکبار دور رو میگیره و نمایش میده، من میخوام در چندصد میلی ثانیه(۲۰۰ms) دور رو بگیره و نمایش بده ولی نمیتونم. با کم کردن مقدار sampleTime هم درست کار نمیکنه. آیا امکانش هست این کار انجام بشه؟
    ممنون میشم اگه راهنماییم کنید. باتشکر

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

  • با سلام و تشکر از زحمات شما.
    آیا با این روش میشه سرعت موتور رو اندازه گرفت؟ سنسور اثر هال تا چند rpm رو حساب میکنه؟

    • با سلام
      بله، البته دقت داشته باشید که در این آموزش از سنسور اثر هال استفاده شده است و برای تشخیص دوران نیاز به یک آهنربا می‎باشد. اگر می‌توانید به شافت متصل کنید، چرا که نه.

  • با سلام مندارمdcروکار کنم نیاز به کمک شما میخوام با اردوینو پروژه محاسبه ونمایش دور موتور

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

    • با سلام
      برای این منظور باتوجه به اینکه سیگنال از سنسور اثر هال دریافت می‌شود. الباقی موارد باید به صورت فرمول نویسی شده برای سیگنال دریافتی در کدها نوشته شود. از دستورات ریاضی و با استفاده از کتابخانه Math.h میتوانید این کار را انجام دهید.

  • سلام
    ممنون از دیجی اسپارک
    میخواستم در یک دور خاص یک خروجی دیجیتال داشته باشم و وقتی دور تغییر کرد اون خروجی صفر بشه. میشه راهنمایی کنید.
    با تشکر

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

  • سلام
    جناب طباطبایی : میخاستم سوال کنم ایا میشه از روش پکیج شما ؛ دور(rpm) پروانه ای فلزی رو که با فشار باد یا گاز میچرخه محاسبه کنم؟

  • سلام پ
    لطفا یک شماره تماس واتساپی بدید
    من پروژه از شما تهیه کردم
    ولی به مشکل خوردم
    ممنون میشم پاسخ من رو بدید

  • سلام اقای طباطبایی بزرگوار
    بنده در این پروژه دور یا چرخش رو در خود برنامه میتونم ببینم ولی روی lcdنمیتونم ببینم و چیزی نمایش داده نمیشه و فقط روشن هست
    لطفا کمک کنید
    ممنون

      • سلام
        اقای طباطبایی من این پروژه رو دقیا مثل برنامه خودتون پیاده کردم و کل کتابخانه هایی که لازم بود رو رو بورذ دانلود کردم ولی متاسفانه جواب نداده و ال سی دی هنوز چیزی نشون نمیده
        در ضمن چرا ما نمیتونیم مستقیم با شما ارتباط برقرار کنیم ؟؟؟؟

        لطفا کمکم کنید

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

      • سلام
        چطور در خروجی lcd از پتانسیومتر استفاده کنم
        من هنوز موفق نشدم دور رو از ال سی دی ببینم
        البته از روی برنامه و لپ تاپ میتونم دور رو ببینم
        ممنون از توجه شما

  • سلام
    یه موتور dc دارم که یه دیسک انکودر ۴۰ سوراخه بهش وصله.با استفاده از اپتوکانتر Lm393 میخوام rpm رو محاسبه کنم.
    چه فرمولی داره چه اعدادی در هم ضرب میشن تا rpm به دست بیاد؟
    لطفا راهنمایی کنید