همواره اندازه گیری سرعت موتور به عنوان یکی از پارامترهای طراحی مدار در نظر گرفته می شود. در اینجا ما با استفاده از یک سنسور ارزان قیمت و پرکاربرد، سرعت موتورهای الکتریکی را اندازه گیری می کنیم.
ماژول اندازه گیری سرعت
از این سنسور عموما در رباتیک، کنترل سرعت موتور(برای اندازهگیری سرعت موتورهای الکتریکی ) و … استفاده میشود. این ماژول کاربردی بسیار فراوان و ساختمانی ساده برای اتصال به برد آردوینو و راه اندازی دارد و با دقت 5% می تواند سرعت موتور را اندازه گیری کند همچنین این ماژول در سرعت های نزدیک به 10000 تست شده است که کاربردی عالی دارد.
این ماژول برپایه رمزگذاری ساخته شده و عملکردی شبیه به انکودر دارد. هنگامی که یک شفت شروع به چرخش می کند بعد از یک دور کامل مجددا به موقیعت اصلی خود بر می گردد که برای انجام این کار زمانی صرف می شود. با اندازه گیری زمان بین چرخش دور اول و دوم می توان زمان چرخش در یک دور کامل را به دست بیاوریم. با تکرار شدن این عمل در هر ثانیه و ضرب آن در عدد 60 می توانیم تعداد دور را در هر دقیقه به دست بیاوریم.
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
ماژول مادون قرمز TCRT5000 | 1 عدد |
LCD کاراکتری مدل 16×2 با Backlighting آبی | 1 عدد |
ماژول درایور موتورهای استپر مدل A4988 | 1 عدد |
LCD کاراکتری مدل 16×2 با Backlighting آبی | 1 عدد |
ولوم 10kΩ | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
نحوه اتصال ماژول و قطعات به برد آردوینو
در صورتی که LCD کارکتری تهیه نکرده اید می توانید این مدار را بدون LCD راه اندازی کنید به طوری که برای اتصال کافیست پایه وسطی ماژول را به پین شماره 2 آردوینو، VCC را به پین 5 ولت آردوینو و زمین ماژول را به GND آردوینو اتصال دهید. در این صورت برای نمایش تعداد دور موتور کافیست از سریال مانیتور نرم افزار آردوینو استفاده کنید.
و اما اگر بخواهید، سرعت موتور را از طریق LCD به نمایش بگذارید، برای این کار باید کمی بیشتر از حالت قبل سیم کشی کنید. نحوه اتصال ماژول، LCD و سایر قطعات به برد آردوینو در نقشه شماتیک زیر آمده است.
نحوه اتصال LCD به برد آردوینو
1. پین Vss را به GND متصل کنید.
2. پین Vcc ال. سی. دی را به پایه 5 ولت آردوینو اتصال دهید.
3. VEE را به پایه وسطی پتانسیومتر وصل نمائید.
4. RS و RW ال. سی.دی را به ترتیب به پین 4 و زمین آردوینو متصل کنید.
5. پین های DB4, DB5,DB6,DB7 ال. سی.دی را به ترتیب به پین های 4،5،6،7 برد آردوینو وصل نمائید.
6. پایه های LED+ و LED- را به ترتیب به پین های 5ولت و زمین آردوینو اتصال دهید.
شماتیک زیر نحوه آزمایش مدار برای اندازه گیری دور موتور توسط سنسور را نشان می دهد.
برنامه نویسی پروژه
بعد از اتصال قطعات به یکدیگر، کدهای زیر را در نرم افزار آردوینو کپی نموده سپس به برد آردوینو آپلود کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#include <LiquidCrystal.h> LiquidCrystal lcd(8,9,4,5,6,7); //defining lcd pins const int dataIN = 2; //IR sensor INPUT unsigned long prevmillis; // To store time unsigned long duration; // To store time difference unsigned long lcdrefresh; // To store time for lcd to refresh int rpm; // RPM value boolean currentstate; // Current state of IR input scan boolean prevstate; // State of IR sensor in previous scan void setup() { pinMode(dataIN,INPUT); lcd.begin(16,2); prevmillis = 0; prevstate = LOW; } void loop() { // RPM Measurement currentstate = digitalRead(dataIN); // Read IR sensor state if( prevstate != currentstate) // If there is change in input { if( currentstate == HIGH ) // If input only changes from LOW to HIGH { duration = ( micros() - prevmillis ); // Time difference between revolution in microsecond rpm = (60000000/duration); // rpm = (1/ time millis)*1000*1000*60; prevmillis = micros(); // store time for nect revolution calculation } } prevstate = currentstate; // store this scan (prev scan) data for next scan // LCD Display if( ( millis()-lcdrefresh ) >= 100 ) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Speed of Motor"); lcd.setCursor(0,1); lcd.print("RPM = "); lcd.print(rpm); lcdrefresh = millis(); } } |
با سلام و تشکر از سایت علمی و آموزشهای مفید تون
یک راهنمایی می خواستم، در پروژه شمارش دور موتور با ir مراحل جایگزینی ماژول سون سگمنت بجای ال سی دی کاراکتری چگونه خواهد بود.
سلام دوست عزیز
برای استفاده از ماژول سون سگمنت به جای نمایشگر کاراکتری باید به زبان برنامه نویسی آردوینو تسلط کافی داشته باشید، لطفا توجه داشته باشید توسعه یک پروژه نیاز به صرف زمان دارد که با توجه به حجم سوالات زیاد که روزانه توسط کاربران مطرح می شود و حجم کاری بالا تیم تخصصی الکترونیک98 این موضوع از زمان ما خارج است. همچنین شما می توانید با توجه به پروژه های زیر با نحوه راه اندازی ماژول سون سگمنت TM1637 با برد آردوینو آشنا شوید
پروژه های انجام شده با ماژول سون سگمنت TM1637
سلام من سنسور دور موتر سنج آردواینو رو نصب کردم ولی کد فایل فکر می کنم اشتباه باشه نوشته درستی روی ال سی دی ظاهر نمی شه لطفا راهنمایی کنید با تشکر
سلام دوست عزیز
شما نیازی به فایل Hex ندارید، تنها لازم است کدهای ارائه شده در توضیحات را درون نرم افزار آردوینو کپی کنید و در نهایت با زدن دکمه پروگرام یا آپلود در نرم افزار آردوینو برنامه را بر روی برد آردوینو پروگرام کنید.
همچنین توجه داشته باشید در مدار از یک پتانسیومتر 10 کیلو اهمی برای تنظیم کنتراست صفحه استفاده شده است که با چرخاندن حداکثری آن نوشته های روی نمایشگر ناپدید خواهد شد، لطفا با چرخاندن پتانسیومتر مدارتان را یکبار دیگر آزمایش کنید و اگر باز هم مشکل پابرجا بود بهتر است اتصالات نمایشگر خود را با دقت بررسی کنید.
سلام دقیقا فرمایشات شما رو دوباره انجام دادم مدار رو بستم وبرنامه رو چندین بار کوپی و آپلود کردم نوشته روی ال سی دی با زبان چینی روی ال سی دی میاد وثابت نیست لطفا راهنمایی درست کنید ممنون از زحمات شما
سلام دوست عزیز
ابتدا پروژه زیر را جهت اطمینان از سالم بودن برد آردوینو و نمایشگر انجام دهید و سپس نتیجه آنرا اعلام کنید:
[ “آموزش اتصال و راه اندازی ال سی دی کاراکتری با آردوینو” ]
سلام
با همین سنسور و دانستن محیط چرخ، میشه مسافت طی شده رو اندازه گیری کرد؟
اگر نه چه سنسوری پیشنهاد میدید؟
سلام دوست عزیز
بله می شود، برای این منظور تنها لازم است بدانید با یک بار چرخش کامل چرخ چه مقدار فاصله طی می شود. سپس با یک فرمول ساده می توانید مسافت طی شده را محاسبه کنید.
سلام
جناب اکبری برای پروژه ای میخوام که تعداد دور دقیق یک چرخ رو برای محاسبه مسافت طی شده داشته باشم
تو این پروژه مشکلی که دارم اینه که قبل از اینکه چرخ شروع به چرخش کنه نمایشگر عددی رو نشون میده که همین باعث میشه عدد خروجی دقیق نباشه
برای رفع این مشکل چکار باید کنم؟
سلام دوست عزیز
اگر سنسور و موتور به صورت ثابت و بدون حرکت و لغزش در هنگام اندازه گیری نصب شوند، مقدار اندازه گیری شده عدد دقیقی خواهد بود، ضمن اینکه اگر در حال ثابت و بدون وجود موتور، بر روی نمایشگر عدد نمایش داده می شود این موضوع می تواند به دلیل نور محیط تست باشد، چراکه سنسورهای مادون قرمز در نور زیاد محیط و وجود آلودگی های نوری IR دچار خطا می شود.
ممنون از پاسخ شما
مهندس من نیازی به سرعت موتور در دقیقه ندارم چیزی که دقیقا لازم دارم فقط تعداد دورهای زده شده موتور هست
مثلا از لحظه چرخش چرخ تا الان چند دور زده شده که بتونم مسافت طی شده رو دقیق محاسبه کنم
ممنون میشم راهنمایی بفرمایید
سلام دوست عزیز
برای این موضوع لازم است برنامه پروژه را تغییر و توسعه دهید. به طوریکه یک تایمر در برنامه تعریف کنید که پس از هر 24 ساعت یکبار تعداد دورها شمرده شده را برای بدست آوردن مسافت طی شده محاسبه کند.
ممنون از پاسخ شما فکر کنم من نتونستم منظورم رو برسونم ولی بهرحال با استفاده از همین کد شما و سنسور اثر هال تونستم راه اندازی کنم کد رو اینجا میذارم شاید بدرد کسی خورد
سلام میخوام از این مدار بر روی یک موتور استفاده کنم که اگر دور موتور به 5000 دور رسید 12 ولت رو وصل کنه آیا میتونم به جای سنسور ir از تاکومتر مغناطیسی (سنسورمیل لنگ) استفاده کنم؟
سلام دوست عزیز
شما می توانید از هر سنسوری با خروجی 0 و 1 استفاده کنید تنها نکته مهم این است که ولتاژ خروجی سنسور در وضعیت 1 نباید بیشتر از 5 ولت DC باشد در غیر اینصورت برد آردوینو صدمه خواهد دید.