خانه » فروشگاه » ماژول انکودر چرخشی

ماژول انکودر چرخشی

80,000 تومانهر عدد

انکودرها تغییرات مکان(Position)و جهت (Direction) را به سیگنال های الکتریکی ترجمه می کنند.در واقع انکودر حسگری هست که به محور چرخ ،چرخدنده و یا موتور وصل می شود و می تواند میزان چرخش را اندازه گیری کند ، با اندازه گیری میزان چرخش می توان جابجایی،سرعت،شتاب یا زاویه چرخشی را تعیین کرد.

تعداد قیمت تخفیف
10-49 78,400 تومان هر عدد 2%
50+ 77,600 تومان هر عدد 3%

5,000,000 تومان را به سبد خرید اضافه کنید و ارسال رایگان دریافت کنید!

موجود در انبار

Size and packaging guidelines

یکا (واحد) علامت اختصاری شرح انگلیسی مقدار
1 متر m Meter 1
1 سانتی متر cm Canti Meter 2-^10
1 میلی متر mm Mili Meter 3-^10
1 اینچ in Inch 2.54cm
2 اینچ in Inch 5.08cm
3 اینچ in Inch 7.62cm
5 اینچ in Inch 12.7cm
3 افرادی که اکنون این محصول را تماشا می کنند!




توضیحات

ماژول انکودر چرخشی

سنسور دقیق اندازه‌گیری موقعیت و سرعت زاویه‌ای

🔄 انکودر چرخشی: چشم دیجیتال سیستم‌های حرکتی

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

🎯 انواع انکودر چرخشی

🔍 انکودر افزایشی (Incremental):

  • خروجی پالس‌های A و B: تشخیص جهت و موقعیت نسبی

  • پالس Index: نقطه مرجع مطلق در هر دور

  • رزولوشن: معمولاً 100 تا 5000 پالس بر دور (PPR)

🎯 انکودر مطلق (Absolute):

  • کدگذاری موقعیت مطلق: موقعیت دقیق حتی پس از خاموشی

  • خروجی موازی یا سریال: Gray Code, Binary, یا SSI

  • رزولوشن: تا 16 بیت (65536 موقعیت مجزا)

⚡ انکودر نوری (Optical):

  • دقت بالا: تا 0.001 درجه

  • سرعت عملیاتی: تا 10000 RPM

  • مقاوم در برابر نویز: عملکرد عالی در محیط‌های صنعتی

📊 مشخصات فنی پیشرفته

پارامترهای کلیدی:

  • رزولوشن: 100 – 5000 PPR (پالس بر دور)

  • ولتاژ کاری: 3.3V – 24V DC

  • جریان مصرف: 10mA – 50mA

  • فرکانس بیشینه: 100kHz – 1MHz

  • دقت زاویه‌ای: ±0.1° تا ±0.01°

  • سرعت بیشینه: 5000 – 10000 RPM

خروجی‌های استاندارد:

  • کانال A و B: پالس‌های 90 درجه فاز خارج از فاز

  • کانال Z (Index): یک پالس در هر دور کامل

  • خروجی دیفرانسیل: RS422 برای نویزگیری بهتر

  • خروجی Open Collector: سازگاری با سطوح ولتاژ مختلف

🛠 ساختار و طراحی

اجزای اصلی:

انکودر نوری:
[دیسک کدگذاری] → [فرستنده LED] → [گیرنده فوتودیود] → [مدار شرط‌سازی]
          ↓                ↓                ↓               ↓
    شیارهای ریز       نور مادون قرمز     تشخیص نور      شکل‌دهی پالس

کدگذاری کانال‌ها:

// تشخیص جهت از فاز کانال‌های A و B
enum Direction {
    CLOCKWISE,      // A leading B
    COUNTER_CLOCKWISE, // B leading A
    UNKNOWN
};

Direction detectDirection(bool channelA, bool channelB, bool lastA, bool lastB) {
    if (lastA == 0 && channelA == 1) { // لبه بالارونده A
        return (channelB == 0) ? CLOCKWISE : COUNTER_CLOCKWISE;
    }
    if (lastB == 0 && channelB == 1) { // لبه بالارونده B
        return (channelA == 1) ? CLOCKWISE : COUNTER_CLOCKWISE;
    }
    return UNKNOWN;
}

💻 برنامه‌نویسی و راه‌اندازی

اتصال پایه به آردوینو:

// اتصال انکودر افزایشی
#define ENCODER_A 2    // پین با قابلیت وقفه
#define ENCODER_B 3    // پین با قابلیت وقفه
#define ENCODER_Z 4    // پین Index (اختیاری)

volatile long encoderCount = 0;
volatile long lastPosition = 0;
unsigned long lastTime = 0;
float rpm = 0.0;

void setupEncoder() {
    Serial.begin(115200);
    
    // تنظیم پین‌ها
    pinMode(ENCODER_A, INPUT_PULLUP);
    pinMode(ENCODER_B, INPUT_PULLUP);
    pinMode(ENCODER_Z, INPUT_PULLUP);
    
    // تنظیم وقفه‌ها
    attachInterrupt(digitalPinToInterrupt(ENCODER_A), encoderISR, CHANGE);
    attachInterrupt(digitalPinToInterrupt(ENCODER_B), encoderISR, CHANGE);
    
    Serial.println("انکودر چرخشی راه‌اندازی شد");
}

void encoderISR() {
    static uint8_t oldState = 0;
    uint8_t newState = (digitalRead(ENCODER_B) << 1) | digitalRead(ENCODER_A);
    
    // جدول حالت برای انکودر افزایشی
    static const int8_t transitionTable[16] = {
        0,  // 00 -> 00
        -1, // 00 -> 01
        1,  // 00 -> 10
        0,  // 00 -> 11
        1,  // 01 -> 00
        0,  // 01 -> 01
        0,  // 01 -> 10
        -1, // 01 -> 11
        -1, // 10 -> 00
        0,  // 10 -> 01
        0,  // 10 -> 10
        1,  // 10 -> 11
        0,  // 11 -> 00
        1,  // 11 -> 01
        -1, // 11 -> 10
        0   // 11 -> 11
    };
    
    uint8_t index = (oldState << 2) | newState;
    encoderCount += transitionTable[index];
    oldState = newState;
}

کلاس مدیریت پیشرفته انکودر:

class RotaryEncoder {
private:
    int pinA, pinB, pinZ;
    volatile long count;
    volatile long lastCount;
    unsigned long lastTime;
    float velocity; // دور بر دقیقه
    float position; // درجه
    int ppr; // پالس بر دور
    
public:
    RotaryEncoder(int a, int b, int z = -1, int resolution = 1000) {
        pinA = a;
        pinB = b;
        pinZ = z;
        ppr = resolution;
        count = 0;
        velocity = 0.0;
        position = 0.0;
        
        pinMode(pinA, INPUT_PULLUP);
        pinMode(pinB, INPUT_PULLUP);
        if (pinZ != -1) pinMode(pinZ, INPUT_PULLUP);
        
        // وقفه با رزولوشن 4X
        attachInterrupt(digitalPinToInterrupt(pinA), isrA, CHANGE);
        attachInterrupt(digitalPinToInterrupt(pinB), isrB, CHANGE);
    }
    
    // ISR برای کانال A
    static void isrA() {
        static RotaryEncoder* instance = nullptr;
        if (!instance) return;
        
        bool a = digitalRead(instance->pinA);
        bool b = digitalRead(instance->pinB);
        
        if (a == b) {
            instance->count--;
        } else {
            instance->count++;
        }
    }
    
    // ISR برای کانال B
    static void isrB() {
        static RotaryEncoder* encoder = nullptr;
        if (!encoder) return;
        
        bool a = digitalRead(encoder->pinA);
        bool b = digitalRead(encoder->pinB);
        
        if (a == b) {
            encoder->count++;
        } else {
            encoder->count--;
        }
    }
    
    // محاسبه سرعت
    void updateVelocity() {
        unsigned long currentTime = micros();
        if (lastTime == 0) {
            lastTime = currentTime;
            lastCount = count;
            return;
        }
        
        unsigned long deltaTime = currentTime - lastTime;
        long deltaCount = count - lastCount;
        
        if (deltaTime > 0) {
            // محاسبه RPM
            velocity = (deltaCount * 60000000.0) / (ppr * 4 * deltaTime);
            
            // محاسبه موقعیت در درجه
            position = fmod((count * 360.0) / (ppr * 4), 360.0);
            
            lastTime = currentTime;
            lastCount = count;
        }
    }
    
    // گرفتن موقعیت مطلق
    float getAbsolutePosition() {
        return position;
    }
    
    // گرفتن موقعیت نسبی (درصد)
    float getRelativePosition() {
        return fmod(position, 360.0) / 3.6; // درصد
    }
    
    // گرفتن RPM
    float getRPM() {
        return velocity;
    }
    
    // گرفتن سرعت زاویه‌ای (rad/s)
    float getAngularVelocity() {
        return velocity * 0.10472; // RPM به rad/s
    }
    
    // ریست کردن شمارنده
    void reset() {
        count = 0;
        position = 0.0;
        velocity = 0.0;
    }
    
    // تشخیص عبور از نقطه صفر
    bool passedZeroPoint() {
        if (pinZ == -1) return false;
        static bool lastZ = HIGH;
        bool currentZ = digitalRead(pinZ);
        
        if (lastZ == HIGH && currentZ == LOW) {
            lastZ = currentZ;
            return true;
        }
        lastZ = currentZ;
        return false;
    }
};

// استفاده
RotaryEncoder encoder(2, 3, 4, 1000); // 1000 PPR

void setup() {
    Serial.begin(115200);
    Serial.println("انکودر با رزولوشن 1000 PPR راه‌اندازی شد");
}

void loop() {
    encoder.updateVelocity();
    
    static unsigned long lastPrint = 0;
    if (millis() - lastPrint > 100) {
        lastPrint = millis();
        
        Serial.print("موقعیت: ");
        Serial.print(encoder.getAbsolutePosition(), 1);
        Serial.print("° | RPM: ");
        Serial.print(encoder.getRPM(), 1);
        Serial.print(" | سرعت: ");
        Serial.print(encoder.getAngularVelocity(), 2);
        Serial.println(" rad/s");
        
        if (encoder.passedZeroPoint()) {
            Serial.println("📍 عبور از نقطه مرجع");
        }
    }
}

⚙️ کاربردهای پیشرفته

۱. سیستم کنترل موقعیت بسته:

class PositionControlSystem {
private:
    RotaryEncoder encoder;
    float targetPosition;
    float kp, ki, kd;
    float integral, lastError;
    
public:
    PositionControlSystem(int a, int b, float p, float i, float d)
        : encoder(a, b, -1, 2000), kp(p), ki(i), kd(d) {
        targetPosition = 0.0;
        integral = 0.0;
        lastError = 0.0;
    }
    
    void setTarget(float positionDegrees) {
        targetPosition = fmod(positionDegrees, 360.0);
        Serial.print("هدف موقعیت تنظیم شد: ");
        Serial.print(targetPosition);
        Serial.println("°");
    }
    
    float calculateControlOutput() {
        encoder.updateVelocity();
        float currentPosition = encoder.getAbsolutePosition();
        
        // محاسبه خطا
        float error = calculateShortestPathError(currentPosition, targetPosition);
        
        // کنترل PID
        integral += error;
        float derivative = error - lastError;
        
        float output = (kp * error) + (ki * integral) + (kd * derivative);
        
        lastError = error;
        
        // محدود کردن خروجی
        return constrain(output, -100.0, 100.0);
    }
    
    float calculateShortestPathError(float current, float target) {
        float error = target - current;
        
        // پیدا کردن کوتاه‌ترین مسیر دایره‌ای
        if (error > 180.0) {
            error -= 360.0;
        } else if (error < -180.0) {
            error += 360.0;
        }
        
        return error;
    }
    
    bool isPositionReached(float tolerance = 0.5) {
        float error = calculateShortestPathError(
            encoder.getAbsolutePosition(), 
            targetPosition
        );
        return abs(error) < tolerance;
    }
};

۲. سیستم اندازه‌گیری طول:

class LengthMeasurementSystem {
private:
    RotaryEncoder encoder;
    float wheelDiameter; // قطر غلتک بر حسب mm
    float circumference;
    float totalLength;
    
public:
    LengthMeasurementSystem(int a, int b, float diameter)
        : encoder(a, b, -1, 500), wheelDiameter(diameter) {
        circumference = PI * wheelDiameter;
        totalLength = 0.0;
    }
    
    void update() {
        encoder.updateVelocity();
        
        // محاسبه جابجایی خطی
        float angularChange = encoder.getAngularVelocity() * 0.001; // rad در ms
        float linearDisplacement = (angularChange * wheelDiameter) / 2.0;
        
        totalLength += linearDisplacement;
    }
    
    float getLength() {
        return totalLength;
    }
    
    float getSpeed() {
        return encoder.getAngularVelocity() * wheelDiameter / 2.0;
    }
    
    void resetLength() {
        totalLength = 0.0;
    }
    
    void calibrate(float knownLength) {
        // کالیبراسیون سیستم
        float measuredLength = getLength();
        float correctionFactor = knownLength / measuredLength;
        circumference *= correctionFactor;
        
        Serial.print("کالیبراسیون انجام شد. ضریب اصلاح: ");
        Serial.println(correctionFactor, 4);
    }
};

۳. سیستم شمارنده تولید:

class ProductionCounter {
private:
    RotaryEncoder encoder;
    int itemsPerRevolution;
    int totalCount;
    int batchCount;
    float thresholdAngle;
    
public:
    ProductionCounter(int a, int b, int itemsPerRev)
        : encoder(a, b, -1, 100), itemsPerRevolution(itemsPerRev) {
        totalCount = 0;
        batchCount = 0;
        thresholdAngle = 360.0 / itemsPerRevolution;
    }
    
    void monitor() {
        static float lastPosition = 0.0;
        encoder.updateVelocity();
        float currentPosition = encoder.getAbsolutePosition();
        
        // محاسبه تغییر موقعیت
        float positionChange = currentPosition - lastPosition;
        if (positionChange < 0) positionChange += 360.0;
        
        // شمارش آیتم‌ها
        int itemsDetected = positionChange / thresholdAngle;
        
        if (itemsDetected > 0) {
            totalCount += itemsDetected;
            batchCount += itemsDetected;
            
            Serial.print("تعداد آیتم: ");
            Serial.print(itemsDetected);
            Serial.print(" | کل تولید: ");
            Serial.println(totalCount);
            
            // بررسی سقف تولید
            if (batchCount >= 1000) {
                Serial.println("🎯 دسته تولید 1000 تایی تکمیل شد");
                batchCount = 0;
            }
        }
        
        lastPosition = currentPosition;
    }
    
    int getTotalCount() { return totalCount; }
    int getBatchCount() { return batchCount; }
    void resetBatch() { batchCount = 0; }
    void resetTotal() { totalCount = 0; }
};

🔧 نصب و کالیبراسیون

مراحل نصب مکانیکی:

  1. هممرکز کردن: محور انکودر و شفت موتور باید کاملاً هممرکز باشد

  2. کوپلینگ: استفاده از کوپلینگ انعطاف‌پذیر برای جذب ناهماهنگی

  3. نصب محکم: جلوگیری از لرزش و ارتعاش

  4. محافظت: نصب پوشش ضد گرد و غبار

کالیبراسیون نرم‌افزاری:

void calibrationRoutine() {
    Serial.println("=== کالیبراسیون انکودر ===");
    
    // 1. کالیبراسیون نقطه صفر
    calibrateZeroPoint();
    
    // 2. کالیبراسیون جهت
    calibrateDirection();
    
    // 3. کالیبراسیون رزولوشن
    calibrateResolution();
    
    // 4. تست خطی بودن
    testLinearity();
    
    Serial.println("کالیبراسیون کامل شد");
}

void calibrateResolution() {
    Serial.println("کالیبراسیون رزولوشن:");
    Serial.println("انکودر را دقیقاً 10 دور بچرخانید...");
    
    long startCount = encoderCount;
    delay(10000); // زمان برای چرخاندن
    
    long endCount = encoderCount;
    long pulsesPer10Rev = endCount - startCount;
    
    float calculatedPPR = pulsesPer10Rev / 40.0; // 4X decoding
    Serial.print("رزولوشن محاسبه شده: ");
    Serial.print(calculatedPPR, 1);
    Serial.println(" PPR");
}

⚡ بهینه‌سازی عملکرد

فیلتر دیجیتال برای کاهش نویز:

class DigitalFilter {
private:
    float* buffer;
    int size;
    int index;
    float sum;
    
public:
    DigitalFilter(int filterSize) : size(filterSize) {
        buffer = new float[size];
        for (int i = 0; i < size; i++) buffer[i] = 0.0;
        index = 0;
        sum = 0.0;
    }
    
    ~DigitalFilter() {
        delete[] buffer;
    }
    
    float update(float newValue) {
        sum -= buffer[index];
        buffer[index] = newValue;
        sum += newValue;
        
        index = (index + 1) % size;
        return sum / size;
    }
    
    void reset() {
        for (int i = 0; i < size; i++) buffer[i] = 0.0;
        sum = 0.0;
        index = 0;
    }
};

// استفاده
DigitalFilter rpmFilter(10); // فیلتر میانگین متحرک 10 نمونه‌ای

void smoothRPMReading() {
    float rawRPM = encoder.getRPM();
    float filteredRPM = rpmFilter.update(rawRPM);
    
    if (abs(rawRPM - filteredRPM) > 50.0) {
        Serial.println("⚠️ نویز زیاد در خوانش RPM");
    }
}

جبران سازی Backlash:

class BacklashCompensation {
private:
    float backlashAngle; // زاویه لقی مکانیکی
    bool lastDirection;
    float compensation;
    
public:
    BacklashCompensation(float angle) : backlashAngle(angle) {
        lastDirection = true; // CW
        compensation = 0.0;
    }
    
    float compensate(float rawPosition, bool currentDirection) {
        if (currentDirection != lastDirection) {
            // تغییر جهت - اعمال جبران لقی
            compensation = currentDirection ? backlashAngle : -backlashAngle;
            lastDirection = currentDirection;
        }
        
        return rawPosition + compensation;
    }
    
    void calibrate() {
        Serial.println("کالیبراسیون لقی مکانیکی:");
        Serial.println("به آرامی در هر دو جهت حرکت دهید...");
        
        // روش کالیبراسیون
        // ...
    }
};

🛡️ حفاظت و عیب‌یابی

سیستم مانیتورینگ سلامت:

class EncoderHealthMonitor {
private:
    RotaryEncoder& encoder;
    unsigned long lastPulseTime;
    float expectedMinRPM;
    bool encoderFault;
    
public:
    EncoderHealthMonitor(RotaryEncoder& enc, float minRPM = 10.0)
        : encoder(enc), expectedMinRPM(minRPM) {
        lastPulseTime = 0;
        encoderFault = false;
    }
    
    void monitor() {
        encoder.updateVelocity();
        float currentRPM = encoder.getRPM();
        
        // بررسی سرعت
        if (abs(currentRPM) > 0.1 && abs(currentRPM) < expectedMinRPM) {
            Serial.println("⚠️ سرعت غیرعادی پایین");
        }
        
        // بررسی پالس‌ها
        if (currentRPM == 0.0 && millis() - lastPulseTime > 5000) {
            Serial.println("⚠️ عدم دریافت پالس در 5 ثانیه");
            encoderFault = true;
        }
        
        // به‌روزرسانی زمان آخرین پالس
        if (currentRPM != 0.0) {
            lastPulseTime = millis();
            encoderFault = false;
        }
    }
    
    bool hasFault() {
        return encoderFault;
    }
    
    void runDiagnostics() {
        Serial.println("=== تست تشخیصی انکودر ===");
        
        // تست کانال A
        testChannel(encoder.getPinA(), "کانال A");
        
        // تست کانال B
        testChannel(encoder.getPinB(), "کانال B");
        
        // تست کانال Z
        if (encoder.hasIndex()) {
            testChannel(encoder.getPinZ(), "کانال Z");
        }
        
        // تست تغذیه
        testPowerSupply();
        
        Serial.println("تست تشخیصی کامل شد");
    }
};

📈 انتخاب انکودر مناسب

مقایسه انواع انکودر:

پارامترانکودر افزایشیانکودر مطلقانکودر مغناطیسی
قیمتکممتوسط تا زیادمتوسط
دقتبالابسیار بالامتوسط
سرعتبسیار بالابالابالا
پس از خاموشیاز دست می‌رودحفظ می‌شوداز دست می‌رود
مقاومت محیطیمتوسطبالابسیار بالا

راهنمای انتخاب:

enum ApplicationType {
    ROBOTICS,       // نیاز به دقت و سرعت بالا
    CNC_MACHINE,    // نیاز به موقعیت مطلق
    CONVEYOR,       // نیاز به دوام در محیط صنعتی
    LAB_EQUIPMENT,  // نیاز به دقت بسیار بالا
    AUTOMOTIVE,     // نیاز به مقاومت در دماهای شدید
};

RotaryEncoder* selectEncoder(ApplicationType app, int budget, int precision) {
    switch(app) {
        case ROBOTICS:
            return new RotaryEncoder(2, 3, -1, 2000); // 2000 PPR نوری
        case CNC_MACHINE:
            // انکودر مطلق با رابط SSI
            return new AbsoluteEncoder(/* پارامترها */);
        case CONVEYOR:
            return new RotaryEncoder(2, 3, -1, 500); // 500 PPR مغناطیسی
        case LAB_EQUIPMENT:
            return new HighPrecisionEncoder(/* پارامترها */); // 5000 PPR
        case AUTOMOTIVE:
            return new AutomotiveEncoder(/* پارامترها */);
    }
    return nullptr;
}

🚀 پروژه‌های پیشرفته

۱. سیستم CNC خانگی:

class CNCController {
private:
    RotaryEncoder xAxis, yAxis, zAxis;
    float xPos, yPos, zPos;
    
public:
    CNCController() : 
        xAxis(2, 3, 4, 2000),
        yAxis(5, 6, 7, 2000),
        zAxis(8, 9, 10, 1000) {
        
        xPos = yPos = zPos = 0.0;
    }
    
    void updatePositions() {
        xAxis.updateVelocity();
        yAxis.updateVelocity();
        zAxis.updateVelocity();
        
        // انتگرال گیری برای موقعیت
        static unsigned long lastUpdate = 0;
        unsigned long now = micros();
        float dt = (now - lastUpdate) / 1000000.0;
        
        xPos += xAxis.getAngularVelocity() * dt * SCREW_PITCH_X;
        yPos += yAxis.getAngularVelocity() * dt * SCREW_PITCH_Y;
        zPos += zAxis.getAngularVelocity() * dt * SCREW_PITCH_Z;
        
        lastUpdate = now;
    }
    
    void moveTo(float x, float y, float z) {
        // کنترل حلقه بسته موقعیت
        // ...
    }
    
    void printStatus() {
        Serial.print("X: ");
        Serial.print(xPos, 3);
        Serial.print("mm Y: ");
        Serial.print(yPos, 3);
        Serial.print("mm Z: ");
        Serial.print(zPos, 3);
        Serial.println("mm");
    }
};

۲. تست‌بنچ موتور:

class MotorTestBench {
private:
    RotaryEncoder encoder;
    float torqueConstant;
    float noLoadRPM;
    float stallTorque;
    
public:
    MotorTestBench(int a, int b, int ppr) : encoder(a, b, -1, ppr) {
        torqueConstant = 0.0;
        noLoadRPM = 0.0;
        stallTorque = 0.0;
    }
    
    void characterizeMotor(float voltage) {
        Serial.println("=== مشخصه‌یابی موتور ===");
        
        // تست بدون بار
        testNoLoad(voltage);
        
        // تست با بار
        testWithLoad(voltage);
        
        // تست استال
        testStall(voltage);
        
        // محاسبه ثابت‌ها
        calculateConstants();
        
        printMotorSpecs();
    }
    
    void testNoLoad(float voltage) {
        Serial.println("تست بدون بار...");
        // ...
    }
    
    void calculateEfficiency(float inputPower, float outputPower) {
        float efficiency = (outputPower / inputPower) * 100.0;
        Serial.print("راندمان موتور: ");
        Serial.print(efficiency, 1);
        Serial.println("%");
        
        if (efficiency < 60.0) {
            Serial.println("⚠️ راندمان پایین - موتور نیاز به بررسی دارد");
        }
    }
};

📦 مشخصات فنی محصولات رایج

انکودرهای مرسوم بازار:

  1. Omron E6B2-CWZ6C: 1000 PPR، خروجی خط کشیده

  2. Autonics E50S8: 600 PPR، بدنه فلزی

  3. SICK DFS60: 5000 PPR، دقت 0.036 درجه

  4. Baumer BHK: 1024 PPR، خروجی Push-Pull

  5. Pepperl+Fuchs: 4096 PPR، رابط SSI

ویژگی‌های بسته‌بندی:

  • کوپلینگ انعطاف‌پذیر

  • کابل شیلددار

  • براکت نصب

  • پیچ و مهره کامل

  • راهنمای نصب چندزبانه

  • درایور و کتابخانه نرم‌افزاری

⚠️ ملاحظات ایمنی و نگهداری

اقدامات ایمنی:

  1. ایزولاسیون: جداسازی بخش قدرت و سیگنال

  2. گرمابری: استفاده از هیت‌سینک در سرعت‌های بالا

  3. محافظ نویز: فیلتر EMI در ورودی تغذیه

  4. محافظ مکانیکی: پوشش ضد ضربه و گرد و غبار

برنامه نگهداری:

  • روزانه: بررسی اتصالات و تمیزکاری سطحی

  • هفتگی: کالیبراسیون موقعیت صفر

  • ماهانه: تست کامل عملکرد

  • سالانه: تعویض بلبرینگ‌ها در صورت نیاز

🌟 نتیجه‌گیری

ماژول انکودر چرخشی یک جزء حیاتی در سیستم‌های کنترل حرکت مدرن است. با انتخاب نوع مناسب (افزایشی، مطلق، نوری یا مغناطیسی) و رزولوشن کافی، می‌توان به دقت و قابلیت اطمینان مورد نیاز در کاربردهای مختلف دست یافت.

دقت در حرکت، اطمینان در کنترل

توضیحات تکمیلی
ابعاد 2 × 2 × 2 سانتیمتر
ساختار محصول تعیین نوع محصول فیزیکی و مجازی ( شامل نقشه ی شماتیک، مدار چاپی و .. بصورت دانلودی )

لایه های مدارچاپی

نوع مدار

کشور سازنده

نظرات (0)
0 بررسی
0
0
0
0
0

هیچ دیدگاهی برای این محصول نوشته نشده است.

.فقط مشتریانی که این محصول را خریداری کرده اند و وارد سیستم شده اند میتوانند برای این محصول دیدگاه ارسال کنند.

حمل و نقل و تحویل

در تهران فقط

پیک موتوری

تحویل حضوری

روشهای ارسال تهران و شهرستان ها

اداره پست جمهوری اسلامی ایران

پست سفارشی، پیشتاز، بین‌المللی، تیپاکس و پست پیشتاز خارج از کشور

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

در اداره پست جمهوری اسلامی ایران، برای ارسال مرسولات، روش‌های مختلفی وجود دارد که عبارتند از:

۱. پست سفارشی: این روش برای ارسال کالاهای کوچک و سبک و با ارزش کمتر از ۱۰۰ هزار تومان استفاده می‌شود. در این روش، هزینه ارسال بر اساس وزن و مسافت محاسبه می‌شود و زمان تحویل ۳ تا ۷ روز کاری است.

۲. پیشتاز: این روش برای ارسال کالاهایی با ارزش بیشتر از ۱۰۰ هزار تومان و یا کالاهایی که به سرعت باید تحویل داده شوند، استفاده می‌شود. در این روش، هزینه ارسال بر اساس وزن و مسافت محاسبه می‌شود و زمان تحویل ۱ تا ۳ روز کاری است.

۳. بین‌المللی: این روش برای ارسال کالاهایی به خارج از کشور استفاده می‌شود. در این روش، هزینه ارسال بر اساس وزن و مسافت و هزینه گمرکی محاسبه می‌شود و زمان تحویل بسته به مقصد و روش ارسال، متفاوت است.

۴. تیپاکس: این روش برای ارسال کالاهایی است که به سرعت باید تحویل داده شوند. در این روش، هزینه ارسال بر اساس وزن و مسافت و زمان تحویل مورد نظر مشتری محاسبه می‌شود.

۵. پست پیشتاز خارج از کشور: این روش برای ارسال کالاها به خارج از کشور استفاده می‌شود و هزینه ارسال بر اساس وزن و مسافت و هزینه گمرکی محاسبه می‌شود.

در کل، برای ارسال مرسوله در اداره پست جمهوری اسلامی ایران، می‌توانید یکی از روش‌های فوق را انتخاب کنید که بسته به نیاز و شرایط شما، مناسب‌تر است.