ویژگیهای ماژول انکودر فتوالکتریکی - شمارنده نوری
موتورها کاربردهای بسیاری در رباتیک، صنعت و پروژه های تحقیقاتی و آموزشی دارند. در اکثر این کاربردها لازم است سرعت چرخش موتور، جهت چرخش موتور و همچنین موقعیت قرارگرفتن شفت موتور را محاسبه کرد. برای این منظور میتوان از ماژولهای انکودر چرخشی استفاده کرد. ماژولهای انکودر چرخشی ماژولهایی هستند که چرخش را به سیگنالهای الکتریکی تبدیل میکنند. انکودر چرخشی دو پایه خروجی A و B دارد. با نصب صحیح انکودر چرخشی، با چرخش موتور، سیگنالهای الکتریکی بر روی پایههای A و B تشکیل می شود. با بررسی این سیگنالها می توان سرعت چرخش، موقعیت قرار گرفتن و جهت چرخش موتور را به دست آورد.
نحوه عملکرد
ماژول انکودر فتوالکتریک از دو صفحه مقابل هم تشکیل شده است. در یک صفحه یک منبع نور و در صفحه دیگر دو حسگر دریافت کننده نور (فتو رزیستور) قرار دارد. بین این دو صفحه، چرخنده دایره ای که روی آن سوراخهای یکسان دارد، قرار میگیرد .با چرخش این چرخنده، دریافت نور توسط دو حسگر A و B قطع و وصل میشود. با این قطع و وصل شدن ها موج مربعی در خروجی ها تشکیل میشود. با شمارش این پالسها میتوانیم میزان چرخش را حساب کنیم. همچنین دو خروجی A و B با یکدیگر 90 درجه اختلاف فاز دارند و میتوانیم با بررسی اینکه کدام خروجی جلوتر است، جهت چرخش را پیدا کنیم.
معرفی پایه ها (Pinout) ماژول انکودر فتوالکتریکی
ماژول انکودر فتوالکتریکی دارای 4 سیم به شرح زیر است.
- A output (سیم زرد): خروجی A
- B output (سیم آبی): خروجی B
- VCC (سیم قرمز): تغذیه ماژول- 5 ولت
- GND (سیم مشکی): زمین
سپین اوت (Pinout) این ماژول را میتوانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول انکودر فتوالکتریکی
گام اول: سیم بندی
مطابق مدار زیر، ماژول را به آردوینو وصل کنید.
گام دوم: کد
کد زیر را روی برد آردوینو آپلود کنید. پس از آپلود کد، پنجره Serial Monitor را باز کنید.
/*
Made on Jan 30, 2021
By MehranMaleki @ Electropeak
Home
*/
#include "Timer.h"
Timer t;
#define number_of_holes 20
#define interruptPin 3
int i = 0;
void setup() {
pinMode(interruptPin, INPUT);
attachInterrupt(digitalPinToInterrupt(interruptPin), counter, RISING);
Serial.begin(9600);
t.every(500, print_speed);
}
void loop() {
t.update();
}
void print_speed()
{
Serial.print("Speed: ");
Serial.print(i * 120 / number_of_holes);
Serial.println(" rpm");
i = 0;
}
void counter() {
i++;
}
در کد بالا، تعداد تغییر وضعیت خروجی A را در یک دقیقه محاسبه کرده ایم. سپس با تقسیم آن به تعداد سوراخهای چرخنده سرعت چرخش آن را به دست آورده و بر روی Serial Monitor نمایش داده میدهیم.
خروجی کد به شکل زیر است.
Comments (2)
سلام آیا میشه انکودر فتوالکتریکی رو به برد آردینو لیُوناردو r3 وصل کرد یا حتما باید به آردینو uno r3 وصل کرد؟
یه سوُال دیگه دارم اینه که زاویه رو به طور دقیق نمایش میده یا فقط بین سوراخ ها که اگه بین سوراخ ها باشه باید 360 تقسیم بر 100 بشه یعنی 3.6 درجه 3.6 درجه میره جلو ؟ این حالتشم بهم بگین
ممنون.
با سلام
تمامی سنسور ها به انواع میکروکنترلر ها می توانید وصل کنید.(در نتیجه بر روی برد شما نیز کار میکند – نکته ای که باید در سنسور ها رعایت کنید ولتاژ کار آنها می باشد که در این مورد مشکلی ندارد)
در مورد سوال دوم شما نیز بله دقت انکودر به تعداد سوراخ هایش می باشد و در 100 سوراخ شما دقت 3.6 درجه ای دارید و یعنی به ازای هر پالس شما 3.6 درجه به جلو رفته اید.
در صورتی که میخواهید دقت خود را افزایش بدهید می توانید از یکی از 2 روش زیر استفاده کنید
1. استفاده از انکودر با دقت بالاتر (از مدل 100 تا 600 پالس در سایت موجود می باشد)
2. استفاده از گریبکس (یعنی ورودی گریبکس را به موتور یا هر قطعه ای که میخواهید وصل کنید با فرض اینکه این گریبکس سرعت را 2 برابر بکند با وصل کردن انکودر در خروجی به ازای هر یک دور که موتور شما میچرخد انکودر شما 2 دور میچرخد و به صورت مکانیکی شما یک انکودر 200 پالس دارید و دقت شما میشود 1.8 درجه)
در صورتی همین الان از گیریبکس و چرخ استفاده میکنید و سرعت موتور را کاهش میدهید. پیشنهاد میکنم انکودر را قبل از گیربکس کاهنده نصب کنید تا از سمت سرعت بالا تر برای خواند سرعت استفاده کنید تا دقت بالاتری داشته باشید.