وحدة مشفر دوار KY-040

20,00 DH

التوفر:

139 متوفر في المخزون

رمز المنتج: 0158 التصنيفات: ,

الوصف

وحدة مشفر دوار KY-040

KY-040 مشفر دوار كهروميكانيكي تزايدي. تتيح إشارتا التربيع قراءة الحركة النسبية واتجاه الدوران بواسطة المتحكم. تتضمن الوحدة أيضًا مفتاح ضغط يمكن استخدامه للاختيار أو التأكيد.

🔧 المواصفات المذكورة

  • التغذية: 5 V DC وفق القائمة
  • نوع المشفر: تزايدي بإشارات تربيع
  • الدقة: عدة نبضات لكل دورة؛ ولا تحدد القائمة العدد بدقة
  • مفتاح ضغط مدمج: مفتوح عادةً (N.O.)
  • وحدة صغيرة مناسبة للوحات التحكم ومشاريع الروبوتات

⚙️ طريقة العمل

أثناء دوران المحور تتغير حالتا الخرج CLK وDT بالتتابع. وتساعد مقارنة الإشارتين على تحديد اتجاه الدوران، بينما يتيح عد الانتقالات قياس الحركة النسبية. يؤدي الضغط على المحور إلى تشغيل مفتاح SW.

💡 الاستخدامات

  • مقابض دوارة لواجهات المستخدم
  • ضبط سرعة المحرك نسبيًا
  • عناصر تحكم للملاحة الروبوتية
  • واجهات تفاعلية
  • مشاريع إلكترونيات DIY

📌 مخطط الأطراف

  • GND: الأرضي
  • VCC: التغذية (5 V وفق القائمة)
  • SW: خرج مفتاح الضغط (N.O.)
  • DT: خرج التربيع B
  • CLK: خرج التربيع A

🔌 الاستخدام مع Arduino Uno

صِل GND وVCC بأرضي Arduino ومصدر تغذية متوافق. صِل DT وCLK بمدخلين رقميين لقراءة الدوران، وSW بمدخل رقمي لاكتشاف الضغط. أُبقيت الأمثلة أدناه كما وردت في قائمة المصدر؛ أضف معالجة مناسبة لارتداد التلامس إذا كانت القراءات غير مستقرة.

مثال Arduino أساسي

#define CLK 4
#define DT 3
#define SW 2


int counter = 0;
int currentStateCLK;
int lastStateCLK;
String currentDir = "";


void setup() {
  Serial.begin(9600);
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP);
  lastStateCLK = digitalRead(CLK);
}


void loop() {
  currentStateCLK = digitalRead(CLK);
  if (currentStateCLK != lastStateCLK) {
    if (digitalRead(DT) != currentStateCLK) {
      counter--;
      currentDir = "CCW";
    } else {
      counter++;
      currentDir = "CW";
    }
    Serial.print("Direction: ");
    Serial.print(currentDir);
    Serial.print(" | Counter: ");
    Serial.println(counter);
  }
  lastStateCLK = currentStateCLK;


  if (digitalRead(SW) == LOW) {
    Serial.println("Button Pressed");
  } else {
    Serial.println("Button Released");
  }
  delay(50);
}

تقرأ هذه الشيفرة إشارات المشفر وتعرض الاتجاه والعداد وحالة مفتاح الضغط في Serial Monitor.

مثال متقدم مع شاشة I2C LCD

#include <Wire.h>
#include <LiquidCrystal_I2C.h>


LiquidCrystal_I2C lcd(0x27, 16, 2);
#define CLK 4
#define DT 3
#define SW 2


int counter = 0;
int currentStateCLK;
int lastStateCLK;
String currentDir = "";


void setup() {
  lcd.begin();
  lcd.backlight();
  Serial.begin(9600);
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP);
  lastStateCLK = digitalRead(CLK);
}


void loop() {
  currentStateCLK = digitalRead(CLK);
  if (currentStateCLK != lastStateCLK) {
    if (digitalRead(DT) != currentStateCLK) {
      counter--;
      currentDir = "CCW";
    } else {
      counter++;
      currentDir = "CW";
    }
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Pos: ");
    lcd.print(counter);
    lcd.setCursor(0, 1);
    lcd.print("Dir: ");
    lcd.print(currentDir);
  }
  lastStateCLK = currentStateCLK;


  if (digitalRead(SW) == LOW) {
    Serial.println("Button Pressed");
  } else {
    Serial.println("Button Released");
  }
  delay(50);
}

يعرض هذا المثال العداد النسبي والاتجاه على شاشة I2C LCD ويعرض حالة الزر.

مكونات المثال المتقدم

  • Arduino Uno
  • وحدة المشفر الدوار KY-040
  • شاشة I2C LCD ‏1602
  • أسلاك توصيل

شرح الشيفرة

  1. إدراج المكتبات: #include <Wire.h> و#include <LiquidCrystal_I2C.h> للشاشة.
  2. التهيئة: تهيئة الاتصال التسلسلي والشاشة وأطراف المشفر.
  3. القراءة والعرض: قراءة مخارج المشفر لعرض الاتجاه والعداد النسبي على الشاشة وفي Serial Monitor.

التوصيلات المتقدمة

  • VCC: ‏5V (Arduino)
  • GND: ‏GND (Arduino)
  • CLK: ‏D4 (Arduino)
  • DT: ‏D3 (Arduino)
  • SW: ‏D2 (Arduino)
  • VCC الشاشة: ‏5V (Arduino)
  • GND الشاشة: ‏GND (Arduino)
  • SCL الشاشة: ‏A5 (Arduino Uno)
  • SDA الشاشة: ‏A4 (Arduino Uno)

تثبيت المكتبة

لاستخدام شاشة I2C LCD، ثبّت مكتبة LiquidCrystal I2C من مدير المكتبات في Arduino IDE: افتح Sketch → Include Library → Manage Libraries، وابحث عن “LiquidCrystal I2C”، ثم ثبّتها.

تحقّق من علامات الأطراف قبل التوصيل. قد يختلف عدد النبضات والسلوك الدقيق بين إصدارات المشفر، ولا تحدد قائمة المصدر قيمة دقة معينة.

شكرًا لولائك!

AR