- المواد المطلوبة
- كيف يعمل جهاز التشفير الدوار؟
- أنواع التشفير الروتاري
- KY-040 الروتاري التشفير Pinout والوصف
- مخطط دائرة التشفير الروتاري اردوينو
- برمجة Arduino للتشفير الروتاري
- عمل التشفير الروتاري مع اردوينو
A التشفير الروتاري هو جهاز إدخال التي تساعد المستخدم للتفاعل مع النظام. إنه يشبه إلى حد كبير مقياس جهد الراديو ولكنه ينتج سلسلة من النبضات مما يجعل تطبيقه فريدًا. عندما يتم تدوير مقبض جهاز التشفير ، فإنه يدور في شكل خطوات صغيرة مما يساعد على استخدامه للتحكم في محرك السائر / المؤازر ، والتنقل عبر سلسلة من القائمة وزيادة / تقليل قيمة الرقم وأكثر من ذلك بكثير.
في هذه المقالة سوف نتعرف على الأنواع المختلفة من أجهزة التشفير الدوارة وكيفية عملها. سنقوم أيضًا بتوصيله بـ Arduino والتحكم في قيمة عدد صحيح عن طريق تدوير جهاز التشفير وعرض قيمته على شاشة LCD مقاس 16 * 2. في نهاية هذا البرنامج التعليمي ، ستكون مرتاحًا لاستخدام التشفير الروتاري لمشاريعك. اذا هيا بنا نبدأ…
المواد المطلوبة
- جهاز التشفير الدوراني (KY-040)
- اردوينو UNO
- شاشة LCD أبجدية رقمية مقاس 16 * 2
- مقياس الجهد 10 كيلو
- اللوح
- توصيل الأسلاك
كيف يعمل جهاز التشفير الدوار؟
التشفير الروتاري هو محول طاقة كهروميكانيكي ، مما يعني أنه يحول الحركات الميكانيكية إلى نبضات إلكترونية. وهو يتألف من مقبض يتحرك خطوة بخطوة عند الدوران وينتج سلسلة من القطارات النبضية بعرض محدد مسبقًا لكل خطوة. هناك العديد من أنواع التشفير لكل منها آلية العمل الخاصة به ، وسوف نتعرف على الأنواع لاحقًا ولكن في الوقت الحالي دعونا نركز فقط على KY040 Incremental Encoder نظرًا لأننا نستخدمه في برنامجنا التعليمي.
يظهر الهيكل الميكانيكي الداخلي لجهاز التشفير أدناه. يتكون بشكل أساسي من قرص دائري (لون رمادي) مع وسادات موصلة (لون نحاسي) موضوعة فوق هذا القرص الدائري. يتم وضع هذه الوسادات الموصلة على مسافة متساوية كما هو موضح أدناه. يتم تثبيت دبابيس الإخراج أعلى هذا القرص الدائري ، بحيث تتلامس الوسادات الموصلة مع دبابيس الإخراج عندما يدور المقبض. يوجد هنا دبوسان للإخراج ، الإخراج A والمخرج B كما هو موضح في الشكل أدناه.
يظهر الشكل الموجي الناتج من طرف الإخراج A والإخراج B باللون الأزرق والأخضر على التوالي. عندما تكون الوسادة الموصلة أسفل الدبوس مباشرة ، فإنها ترتفع ، مما يؤدي إلى حدوثها في الوقت المحدد وعندما تتحرك الوسادة الموصلة بعيدًا ، ينخفض الدبوس مما يؤدي إلى توقف شكل الموجة الموضح أعلاه. الآن ، إذا قمنا بحساب عدد النبضات ، فسنكون قادرين على تحديد عدد الخطوات التي تم نقل التشفير.
الآن قد يطرح السؤال التالي ، لماذا نحتاج إلى إشارتين من النبض عندما تكون إحداها كافية لحساب عدد الخطوات التي تم اتخاذها أثناء تدوير المقبض. هذا لأننا نحتاج إلى تحديد الاتجاه الذي تم فيه تدوير المقبض. إذا ألقيت نظرة على النبضتين ، يمكنك ملاحظة أنهما خارج الطور بزاوية 90 درجة. ومن ثم عندما يتم تدوير المقبض في اتجاه عقارب الساعة ، سيرتفع المخرج A أولاً ، وعندما يتم تدوير المقبض عكس اتجاه عقارب الساعة ، يرتفع المخرج B أولاً.
أنواع التشفير الروتاري
هناك العديد من أنواع المشفرات الدوارة في السوق ، ويمكن للمصمم اختيار أحدها وفقًا لتطبيقه. الأنواع الأكثر شيوعًا مذكورة أدناه
- التشفير التزايدي
- التشفير المطلق
- التشفير المغناطيسي
- التشفير البصري
- التشفير بالليزر
يتم تصنيف أجهزة التشفير هذه بناءً على إشارة الخرج وتقنية الاستشعار ، ويتم تصنيف التشفير الإضافي والتشفير المطلق على أساس إشارة الإخراج ويتم تصنيف التشفير المغناطيسي والبصري والليزر على أساس تقنية الاستشعار. و يستخدم التشفير هنا هو تزايدي نوع التشفير.
KY-040 الروتاري التشفير Pinout والوصف
يتم عرض pinouts لجهاز التشفير الدوار من النوع التزايدي KY-040 أدناه
يتم استخدام أول دبابيس (أرضي و Vcc) لتشغيل جهاز التشفير ، وعادة ما يتم استخدام مصدر طاقة + 5 فولت. بصرف النظر عن تدوير المقبض في اتجاه عقارب الساعة وعكس اتجاه عقارب الساعة ، يحتوي المشفر أيضًا على مفتاح (نشط منخفض) يمكن الضغط عليه بالضغط على المقبض بالداخل. يتم الحصول على الإشارة من هذا المفتاح من خلال الدبوس 3 (التبديل). أخيرًا ، يحتوي على دبابيس الإخراج التي تنتج أشكال الموجة كما تمت مناقشته أعلاه. الآن دعونا نتعلم كيفية التفاعل مع Arduino.
مخطط دائرة التشفير الروتاري اردوينو
يظهر الرسم التخطيطي الكامل للدائرة الخاصة بربط التشفير الروتاري مع Arduino في الصورة أدناه
يحتوي جهاز التشفير الدوار على 5 دبابيس بالترتيب الموضح في الملصق أعلاه. أول دبابيس هما Ground و Vcc المتصلان بالأرض و + 5V pin من Arduino. يتم توصيل مفتاح التشفير بالدبوس الرقمي D10 ويتم سحبه أيضًا على الرغم من المقاوم 1 كيلو. يتم توصيل دبابيس الإخراج بـ D9 و D8 على التوالي.
لعرض قيمة المتغير الذي سيتم زيادته أو إنقاصه بتدوير المشفر الدوار ، نحتاج إلى وحدة عرض. الشاشة المستخدمة هنا متاحة بشكل شائع 16 * 2 شاشة عرض LCD رقمية ألفا. لقد قمنا بتوصيل الشاشة ليتم تشغيلها في وضع 4 بت وقمنا بتشغيلها باستخدام دبوس + 5V من Arduino. يستخدم مقياس الجهد لضبط تباين شاشة LCD. إذا كنت تريد معرفة المزيد عن واجهة شاشة LCD مع Arduino ، فاتبع الرابط. يمكن بناء الدائرة الكاملة أعلى اللوح ، بدا لي شيئًا مثل هذا أدناه بمجرد الانتهاء من جميع الاتصالات.
برمجة Arduino للتشفير الروتاري
من السهل والمباشر إلى حد ما برمجة لوحة Arduino للتفاعل مع جهاز تشفير دوار إذا كنت قد فهمت مبدأ عمل جهاز التشفير الروتاري. علينا ببساطة قراءة عدد النبضات لتحديد عدد الدورات التي قام بها المشفر والتحقق من ارتفاع النبضة أولاً لمعرفة الاتجاه الذي تم فيه تدوير المشفر. سنعرض في هذا البرنامج التعليمي الرقم الذي يتم زيادة أو إنقاصه في الصف الأول من شاشة LCD واتجاه جهاز التشفير في السطر الثاني. و برنامج كامل ويمكن الاطلاع على لتفعل الشيء نفسه في أسفل هذه الصفحة مع مظاهرة الفيديو ، أنها لا تتطلب أي مكتبة. الآن ، دعنا نقسم البرنامج إلى أجزاء صغيرة لفهم العمل.
نظرًا لأننا استخدمنا شاشة LCD ، فقد قمنا بتضمين مكتبة الكريستال السائل الموجودة افتراضيًا في Arduino IDE. ثم نحدد دبابيس لتوصيل LCD بـ Arduino. أخيرًا نقوم بتهيئة شاشة LCD على تلك المسامير.
#تضمن
بعد ذلك ، داخل وظيفة الإعداد ، نعرض رسالة تمهيدية على شاشة LCD ، ثم ننتظر لمدة ثانيتين بحيث يمكن للمستخدم قراءة هذه الرسالة. هذا للتأكد من أن شاشة LCD تعمل بشكل صحيح.
lcd.print ("جهاز تشفير دوار") ؛ // سطر رسالة المقدمة 1 lcd.setCursor (0 ، 1) ؛ lcd.print ("مع Arduino") ؛ // تأخير سطر الرسالة 2 (2000) ؛ lcd.clear () ؛
يشتمل المشفر الدوار على ثلاثة دبابيس إخراج والتي ستكون بمثابة دبابيس INPUT لـ Arduino. هذه الدبابيس الثلاثة هي Switch و Output A و Output B على التوالي. تم الإعلان عن هذه كإدخال باستخدام وظيفة pinMode كما هو موضح أدناه.
// pinMode إعلان وضع الدبوس (Encoder_OuputA ، INPUT) ؛ pinMode (Encoder_OuputB ، INPUT) ؛ pinMode (Encoder_Switch ، INPUT) ؛
داخل وظيفة الإعداد الفارغ ، نقرأ حالة الإخراج A pin للتحقق من الحالة الأخيرة للدبوس. سنستخدم بعد ذلك هذه المعلومات للمقارنة بالقيمة الجديدة للتحقق من أي دبوس (الإخراج A أو الإخراج B) ارتفع.
Previous_Output = digitalRead (Encoder_OuputA) ، // اقرأ القيمة الأولية للإخراج أ
أخيرًا داخل وظيفة الحلقة الرئيسية ، يتعين علينا مقارنة قيمة المخرجات A والإخراج B مع الإخراج السابق للتحقق من أيهما يرتفع أولاً. يمكن القيام بذلك ببساطة عن طريق مقارنة قيمة المخرجات الحالية لـ A و B مع الناتج السابق كما هو موضح أدناه.
if (digitalRead (Encoder_OuputA)! = Previous_Output) { if (digitalRead (Encoder_OuputB)! = Previous_Output) { Encoder_Count ++ ؛ lcd.clear () ؛ lcd.print (Encoder_Count) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("باتجاه عقارب الساعة") ؛ }
في الكود أعلاه ، يتم تنفيذ الشرط الثاني إذا تم تغيير الإخراج B عن الإخراج السابق. في هذه الحالة ، تزداد قيمة متغير المشفر وتعرض شاشة LCD أن المشفر يدور في اتجاه عقارب الساعة . وبالمثل إذا كان ذلك إذا فشلت الشرط، في احقة شيء آخر حالة ونحن إنقاص متغير وعرض أن التشفير هو استدارة في عكس اتجاه عقارب الساعة الاتجاه. يظهر رمز نفسه أدناه.
آخر { Encoder_Count-- ؛ lcd.clear () ؛ lcd.print (Encoder_Count) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("عكس اتجاه عقارب الساعة") ؛ } }
أخيرًا ، في نهاية الحلقة الرئيسية ، يتعين علينا تحديث قيمة الإخراج السابقة بقيمة الإخراج الحالية بحيث يمكن تكرار الحلقة بنفس المنطق. الكود التالي يفعل الشيء نفسه
Previous_Output = digitalRead (Encoder_OuputA) ،
شيء اختياري آخر هو التحقق من الضغط على المفتاح الموجود في Encoder. يمكن مراقبة ذلك عن طريق التحقق من دبوس التبديل على المبرمج الدوار. هذا الدبوس هو دبوس منخفض نشط ، مما يعني أنه سينخفض عند الضغط على الزر. إذا لم يتم الضغط على الدبوس يظل مرتفعًا ، فقد استخدمنا أيضًا مقاومًا للسحب للتأكد من أن يظل مرتفعًا عند عدم الضغط على المفتاح وبالتالي تجنب حالة النقطة العائمة.
if (digitalRead (Encoder_Switch) == 0) {lcd.clear () ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("مفتاح مضغوط") ؛ }
عمل التشفير الروتاري مع اردوينو
بمجرد أن يصبح الجهاز والكود جاهزًا ، ما عليك سوى تحميل الكود إلى لوحة Arduino وتشغيل لوحة Arduino. يمكنك إما تشغيله من خلال كابل USB أو استخدام محول 12 فولت. عند تشغيل شاشة LCD ، يجب أن تعرض رسالة المقدمة ثم تصبح فارغة. الآن قم بتدوير المشفر الدوار وسترى القيمة تبدأ في الزيادة أو النقصان بناءً على الاتجاه الذي تقوم بتدويره. سيوضح لك السطر الثاني ما إذا كان يتم تدوير المشفر في اتجاه عقارب الساعة أو عكس اتجاه عقارب الساعة. الصورة أدناه تظهر نفس الشيء
أيضًا عند الضغط على الزر ، سيعرض السطر الثاني أنه تم الضغط على الزر. يمكن العثور على العمل الكامل في الفيديو أدناه. هذا مجرد نموذج لبرنامج لواجهة Encoder مع Arduino والتحقق مما إذا كان يعمل كما هو متوقع. بمجرد وصولك إلى هنا ، يجب أن تكون قادرًا على استخدام المشفر لأي من مشاريعك وبرنامجك وفقًا لذلك.
آمل أن تكون قد فهمت البرنامج التعليمي وعملت الأشياء كما هو مفترض. إذا كانت لديك أي مشاكل ، فاستخدم قسم التعليقات أو المنتديات للحصول على المساعدة الفنية.