ماژول روتاری انکودر Rotary Encoder با طول شفت 20mm
توجه: طول شفت این روتاری 20 میلی متر و مشابه تصویر رزوه دار است. همچنین دارای مهره و واشر است.
ماژول روتاری انکودر Rotary Encoder
ماژول روتاری انکودر (Rotary Encoder) یک دستگاه الکترونیکی است که برای اندازهگیری و تشخیص حرکت یک ابزار دورانی یا یک شافت استفاده میشود. این ماژول معمولاً دارای یک دیسک دورانی با مقادیر مشخص (مانند سوراخها یا خطوط) است که هنگامی که روی آن فشار یا چرخش اعمال میشود، سیگنالهای الکتریکی را تولید میکند.ماژول روتاری انکودر به صورت عمومی دارای دو نوع خروجی است: خروجی پالس (Pulse Output) و خروجی دوفازی (Quadrature Output).
در خروجی پالس، انکودر تعداد پالسهایی را تولید میکند که به میزان چرخش شافت مرتبط است. این پالسها به صورت دیجیتال ارائه میشوند و میتوان از آنها برای محاسبه مقدار دقیق زاویه چرخش استفاده کرد.در خروجی دوفازی، انکودر دو سیگنال فاز متفاوت تولید میکند. این سیگنالها را میتوان به صورت سیگنالهای A و B نامید. با تحلیل الگوی تغییرات سیگنالهای A و B، میتوان جهت و سمت چرخش را تشخیص داد. این خروجی برای کاربردهایی مانند کنترل موتورها، روباتیک و سیستمهای مکانیکی استفاده میشود.
ویژگی های ماژول روتاری انکودر
- رزولوشن: قابلیت تشخیص دقیق زاویه چرخش با تعداد پالسهای تولید شده در یک دور 360 درجه.
- خروجی پالس: تولید سیگنالهای پالس دیجیتال بر اساس حرکت و چرخش شافت.
- خروجی دوفازی: تولید دو سیگنال فاز متفاوت جهت تشخیص جهت و سمت چرخش.
- نوع اتصال: اتصال باسیم با استفاده از کابلهای مناسب.
- ولتاژ کاری: قابلیت کار با ولتاژهای منطقی مانند 5 ولت یا ولتاژهای بالاتر.
- نوع حرکت: قابلیت تشخیص حرکت دوطرفه یا یکطرفه.
بررسی پایه های ماژول روتاری انکودر
پایههای CLK و DT در روتاری انکودر به پایههایی اشاره دارند که به عنوان خروجیهای فاز A و فاز B استفاده میشوند.CLK (Clock) یا CHA (Channel A) و DT (Data) یا CHB (Channel B) به پایههایی اشاره دارند که سیگنالهای فاز A و فاز B را تولید میکنند. این دو پایه به صورت فوق العاده مهم هستند زیرا با ترکیب و تغییر وضعیت این دو سیگنال، جهت و سمت چرخش را تشخیص میدهند.در برخی از روتاری انکودرها، به جای CLK و DT، از نامهای دیگری مانند A و B، Phase A و Phase B، Channel A و Channel B، یا Phase 1 و Phase 2 استفاده میشود. اما عملکرد آنها مشابه است و به تولید سیگنالهای فاز A و فاز B میپردازند.
راه اندازی روتاری انکودر با آردوینو
در ادامه یک کد آردوینو برای راه اندازی روتاری انکودر نوشته شده است.Rotary Encoder با دو پین خروجی سیگنال (A و B) دارید که به پینهای آردوینو ۲ و ۳ متصل شدهاند. این کد از اینتراپتها برای تشخیص تغییرات در وضعیت پینهای Encoder استفاده میکند که امکان خواندن دقیق و واکنشگرا به موقعیت Encoder را فراهم میکند. متغیر encoderPos مقدار فعلی موقعیت را ذخیره میکند و بر اساس جهت چرخش که با تغییرات در وضعیت پینهای Encoder تعیین میشود، به روزرسانی میشود.در تابع loop میتوانید خط "Serial.println(encoderPos);" را با کد یا عملیات مورد نظر خود بر اساس موقعیت Encoder جایگزین کنید.
// پینهای Rotary Encoder
const int encoderPinA = 2;
const int encoderPinB = 3;
// متغیرها
volatile int encoderPos = 0;
volatile int lastEncoded = 0;
volatile boolean direction = 0;
void setup() {
// تنظیم پینهای Encoder به عنوان ورودی
pinMode(encoderPinA, INPUT_PULLUP);
pinMode(encoderPinB, INPUT_PULLUP);
// اتصال اینتراپت به پین A از Encoder
attachInterrupt(digitalPinToInterrupt(encoderPinA), updateEncoder, CHANGE);
// شروع ارتباط سریال
Serial.begin(9600);
}
void loop() {
// انجام عملیاتی با مقدار Encoder
Serial.println(encoderPos);
// اضافه کردن تاخیر اگر لازم است
delay(100);
}
void updateEncoder() {
int MSB = digitalRead(encoderPinA);
int LSB = digitalRead(encoderPinB);
int encoded = (MSB << 1) | LSB;
int sum = (lastEncoded << 2) | encoded;
if (sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) {
encoderPos++;
direction = true;
}
if (sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) {
encoderPos--;
direction = false;
}
lastEncoded = encoded;
}
راه اندازی روتاری انکودر با میکروپایتون
برای راه اندازی روتاری انکودر با میکروپایتون از نرم افزار Thonny ide استفاده میکنیم. این کد برای یک Rotary Encoder با دو پین خروجی سیگنال (A و B) متصل به پینهای مایکروپایتون 2 و 3 ساخته شده است. شما میتوانید شماره پینها را مطابق با نقشهبندی واقعی خود تنظیم کنید.این کد از اینتراپت برای تشخیص تغییرات در وضعیت پین A از Encoder استفاده میکند، که امکان خواندن دقیق و واکنشگرا به موقعیت Encoder را فراهم میکند. متغیر موقعیت_انکودر مقدار فعلی موقعیت را ذخیره میکند و بر اساس جهت چرخش که با تغییرات در وضعیت پینهای Encoder تعیین میشود، بهروزرسانی میشود.در حلقه while میتوانید خط print(موقعیت_انکودر) را با کد یا عملیات مورد نظر خود بر اساس موقعیت Encoder جایگزین کنید.
from machine import Pin
import utime
# پینهای Rotary Encoder
پین_انکودر_الف = Pin(2, Pin.IN, Pin.PULL_UP)
پین_انکودر_بی = Pin(3, Pin.IN, Pin.PULL_UP)
# متغیرها
موقعیت_انکودر = 0
آخرین_کدگذاری = 0
جهت = 0
def بهروزرسانی_انکودر(پین):
global موقعیت_انکودر, آخرین_کدگذاری, جهت
MSB = پین_انکودر_الف.value()
LSB = پین_انکودر_بی.value()
کدگذاری_شده = (MSB << 1) | LSB
مجموع = (آخرین_کدگذاری << 2) | کدگذاری_شده
if مجموع == 0b1101 or مجموع == 0b0100 or مجموع == 0b0010 or مجموع == 0b1011:
موقعیت_انکودر += 1
جهت = True
if مجموع == 0b1110 or مجموع == 0b0111 or مجموع == 0b0001 or مجموع == 0b1000:
موقعیت_انکودر -= 1
جهت = False
آخرین_کدگذاری = کدگذاری_شده
# اتصال اینتراپت به پین A از Encoder
پین_انکودر_الف.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=بهروزرسانی_انکودر)
while True:
# انجام عملیاتی با مقدار Encoder
print(موقعیت_انکودر)
# اضافه کردن تاخیر اگر لازم است
utime.sleep_ms(100)
مشخصات
- کاربری
- مناسب برای استفاده شخصی
- نوع ماژول
- روتاری انکودر
- سطح تجربه مورد نیاز
- مبتدی
- ولتاژ مورد نياز
- 3.3 تا 5 ولت DC
- چاپ مس
- مشکی
- تعداد پایه ها
- دارای 5 پایه
- اقلام همراه محصول
- دارای ولوم جهت تغییر موقعیت
- ترتیب پایه ها
- GND, VCC, SW, DT, CLK
- وضعیت لوازم جانبی
- ندارد
- زاویه چرخش
- 360 درجه و روتیشن 20
توسط همین ماژول هم میتوانید اقدام به اجرای درخواستتان کنید. البته اگر فقط بخواهید یک سلول باتری لیتیومی را مدیریت شارژ کنید، همان گزینه ماژول TP4056 مناسب خواهد بود.
امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایههای GPIO قابل اتصال به میکروکنترلرها هستند.
برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:
یک برد میکروکنترلر ESP32
یک سنسور دما مثل DHT DS18B20
یک المان سرد کننده
با استفاده از کتابخانه DHT.h، میتوانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، میتوانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.
در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال دادهها به پلتفرم IoT باید استفاده کنید.