جدول المحتويات:
فيديو: وحدة فك الشفرة الدوارة البسيطة: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
يصف هذا التوجيه طريقة بسيطة لفك تشفير المشفر الدوار المتسلسل باستخدام Arduino Uno R3.
تُستخدم إجراءات البرامج المدمجة لحساب عدد الانتقالات ، والقضاء على ارتداد التلامس ، وتحديد اتجاه الدوران. المكونات الإضافية وجداول البحث غير مطلوبة.
يتم توفير إصدارات المقاطعة وغير المقاطعة من التعليمات البرمجية.
إصدار المقاطعة من الكود لا يتطلب سوى دبوس مقاطعة واحد.
الصور:
- تُظهر الصورة الافتتاحية برنامج التشفير المُجمَّع.
- تُظهر لقطة الشاشة رمز إصدار المقاطعة والعدد عند تدوير عمود التشفير في اتجاه عقارب الساعة وعكس اتجاه عقارب الساعة.
- يُظهر الفيديو العدد أثناء الدوران السريع.
الخطوة 1: مخطط الدائرة
يظهر مخطط الأسلاك المشفر في الشكل 1.
يتم لحام أسلاك العبور مباشرة إلى دبابيس التشفير.
قم بتبديل السلكين الأزرقين إذا تم عكس اتجاه العد.
الخطوة 2: قائمة الأجزاء
تم الحصول على الأجزاء التالية من
- 1 فقط Arduino UNO R3 مع كابل USB.
- 1 مشفر دوار متسلسل فقط (EC11 أو ما يعادله) مع مفتاح.
- 1 مقبض فقط يناسب العمود.
- 3 فقط أسلاك توصيل أردوينو من الذكور إلى الذكور.
الخطوة الثالثة: النظرية
تولد المشفرات الدوارة المتسلسلة موجتين مربعتين يتم إزاحة كل منهما بمقدار 90 درجة كما هو موضح في الشكل 1.
تختلف الأنماط المنطقية في جهة الاتصال A و Contact B عندما يتم تدوير العمود في اتجاه عقارب الساعة (CW) وعكس اتجاه عقارب الساعة (CCW) من خلال المواضع من 1 إلى 6.
تتضمن الطرق الشائعة لتحديد اتجاه الدوران ما يلي:
- المعدات
- المقاطعات التوأم
- جداول البحث عن الأنماط
يستخدم هذا المشروع طريقة برمجية لا تتطلب جداول بحث. [1]
اتجاه
بدلاً من النظر إلى أنماط الإخراج من جهة الاتصال أ والاتصال ب ، فلنركز على جهة الاتصال أ.
إذا أخذنا عينة جهة الاتصال "ب" بعد كل انتقال لجهة اتصال "أ" ، فإننا نلاحظ ما يلي:
- يحتوي كل من جهة الاتصال A والاتصال B على حالات منطقية معاكسة عند تدوير المشفر CW
- يكون لجهة الاتصال A والاتصال B نفس الحالة المنطقية عندما يتم تدوير المشفر باستخدام CCW
الكود الفعلي:
// ----- عدد الانتقالات
CurrentStateA = stateContactA () ، if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB) ؛ إذا (CurrentStateA == CurrentStateB) Count ++ ؛ إذا (CurrentStateA! = CurrentStateB) Count-- ؛ LastStateA = CurrentStateA ؛ }
تقدم هذه الطريقة المزايا التالية:
- جداول البحث غير مطلوبة
- مطلوب فقط خط مقاطعة واحد
تنازل
تعاني جميع أجهزة التشفير الميكانيكية من "ارتداد التلامس".
إذا لم ينكسر اتصال المحول بشكل نظيف ، فستتأرجح حالته المنطقية بسرعة من HIGH إلى LOW حتى يستقر مفتاح الاتصال. ينتج عن هذا التهم الخاطئة.
تتمثل إحدى طرق منع ارتداد التلامس في إضافة مكثف صغير عبر كل جهة اتصال للمفتاح. يشكل المكثف ومقاوم السحب المرتبط به مكاملاً يعمل على تقليص الترددات العالية بشكل فعال ويسمح لجهد المفتاح بالارتفاع / الانخفاض بأمان.
الجانب السلبي لهذا النهج هو أنه قد يتم تفويت الانتقالات إذا تم تدوير عمود التشفير بسرعة.
برنامج Debouncing
تستخدم هذه الطريقة عدادين (مفتوح ، مغلق) تم ضبطهما على الصفر. [2]
بمجرد اكتشاف انتقال على جهة الاتصال أ:
- استطلاع مستمر اتصل أ.
- قم بزيادة العداد المفتوح ، وأعد ضبط العداد المغلق ، عندما تكون جهة الاتصال A عالية.
- قم بزيادة العداد المغلق ، وأعد ضبط العداد المفتوح ، عندما تكون جهة الاتصال A منخفضة.
- اخرج من الحلقة عندما يصل أحد العدادات إلى عدد محدد مسبقًا. نحن نبحث بشكل فعال عن فترة الحالة المستقرة بعد ارتداد أي جهة اتصال.
الكود الفعلي:
// ----- Debounce Contact أ
while (1) {if (digitalRead (ContactA)) {// ----- ContactA is Open Closed = 0 ؛ // إفراغ المُدمج المعاكس Open ++ ؛ // تكامل إذا كان (Open> MaxCount) يعود بدرجة عالية ؛ } else {// ----- ContactA مغلق مفتوح = 0 ؛ // فارغ مقابل التكامل مغلق ++ ؛ // تكامل إذا كان (مغلق> MaxCount) يعود LOW ؛ }}
ليست هناك حاجة للتخلي عن جهة الاتصال B لأن انتقالات جهة الاتصال "أ" و "جهة الاتصال ب" لا تتطابق.
عد
يعمل "الكاشف" الميكانيكي على مضاعفة العدد بشكل فعال حيث يتم تسجيل عددين بين النقرات (انظر الشكل 1).
يمكن تحديد عدد "الكوابح" باستخدام طريقة الحساب 2 كما هو موضح أدناه.
الكود الفعلي:
// ----- عد "وسائل الاحتجاز"
إذا (Count٪ 2 == 0) {Serial.print ("Count:") ؛ Serial.println (عدد / 2) ؛ }
مراجع
يمكن العثور على مزيد من المعلومات على:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof …
الخطوة 4: البرمجيات
يتطلب هذا المشروع إصدارًا حديثًا من Ardino Uno R3 IDE (بيئة تطوير متكاملة) وهو متاح من
قم بتنزيل كل من رسومات Arduino التالية (مرفقة)
- rotary_encoder_1.ino (نسخة الاقتراع)
- rotary_encoder_2.no (إصدار المقاطعة)
انقر نقرًا مزدوجًا فوق الإصدار المفضل لديك واتبع التعليمات التي تظهر على الشاشة.
يتمتع …
انقر هنا لعرض التعليمات الأخرى الخاصة بي.
موصى به:
راسمة القوارير CNC الدوارة: 9 خطوات (بالصور)
راسمة الزجاجات باستخدام الحاسب الآلي الدوارة: التقطت بعض الأسطوانات ، والتي من المحتمل أن تكون مستخدمة في الطابعة. خطرت لي فكرة تحويلها إلى محور دوران لآلة تخطيط الزجاجة CNC. اليوم ، أود أن أشارك في كيفية بناء آلة رسم الزجاجات باستخدام الحاسب الآلي من هذه الأسطوانات والقصاصات الأخرى
أداة فك الشفرة الثنائية لشجرة مورس: 7 خطوات (بالصور)
Binary Tree Morse Decoder: a.articles {font-size: 110.0٪؛ وزن الخط: عريض ؛ نمط الخط: مائل ؛ زخرفة النص: لا شيء ؛ background-color: red؛} a.articles: hover {background-color: black؛} يشرح هذا الدليل كيفية فك شفرة مورس باستخدام Arduino Uno R3.T
جهاز فك الشفرة عن بعد بالأشعة تحت الحمراء باستخدام أردوينو: 4 خطوات (بالصور)
جهاز فك الشفرة عن بعد بالأشعة تحت الحمراء باستخدام ARDUINO: هذا برنامج تعليمي آخر سهل الاستخدام لصنع وحدة فك ترميز IR عن بعد بسيطة للغاية باستخدام Arduino و IR Receiver. سيغطي هذا البرنامج التعليمي كل شيء بدءًا من إعداد البرنامج وحتى استخدام مستقبل الأشعة تحت الحمراء وفك تشفير الإشارات. هؤلاء
وحدة التغذية التلقائية البسيطة من Cat: 4 خطوات
وحدة التغذية التلقائية البسيطة للقطط: مرحبًا بالجميع ، عندما أغادر المنزل لبضعة أيام ، فإن إطعام قطتي دائمًا ما يمثل تحديًا كبيرًا. يجب أن أسأل الأصدقاء أو الأقارب لرعاية قطتي. لقد بحثت عن حل على الإنترنت ووجدت الكثير من منتجات توزيع الطعام للحيوانات الأليفة ، لكنني
وحدة تحكم الوحدة البسيطة: 5 خطوات
وحدة تحكم بسيطة في الوحدة: الوصف هذا المشروع عبارة عن وحدة تحكم بسيطة للغاية يمكنها تقديم مدخلات إلى Unity عند الضغط على الأزرار التي صممتها للتحكم في لعبة صنعتها حيث يمكن للاعب الانتقال إلى اليسار واليمين. بالطبع يمكنك دائمًا تعديله لمزيد من عناصر التحكم. لا يوجد ن