جدول المحتويات:

التشفير الروتاري - فهم واستخدامه (Arduino / وحدة تحكم أخرى): 3 خطوات
التشفير الروتاري - فهم واستخدامه (Arduino / وحدة تحكم أخرى): 3 خطوات

فيديو: التشفير الروتاري - فهم واستخدامه (Arduino / وحدة تحكم أخرى): 3 خطوات

فيديو: التشفير الروتاري - فهم واستخدامه (Arduino / وحدة تحكم أخرى): 3 خطوات
فيديو: Extract GPS location in Arduino with Ublox Neo-6 and Neo 7m GPS modules 2024, يوليو
Anonim
التشفير الروتاري - فهمه واستخدامه (Arduino / وحدة تحكم أخرى)
التشفير الروتاري - فهمه واستخدامه (Arduino / وحدة تحكم أخرى)

المشفر الدوار هو جهاز كهروميكانيكي يحول الحركة الدورانية إلى معلومات رقمية أو تمثيلية. يمكن أن تدور في اتجاه عقارب الساعة أو عكس اتجاه عقارب الساعة. هناك نوعان من التشفير الدوار: المطلق والنسبية (تزايدي) التشفير.

بينما ينتج المشفر المطلق قيمة تتناسب مع زاوية العمود الحالية ، يقوم المشفر التزايدي بإخراج خطوة العمود واتجاهه (في هذه الحالة لدينا مشفر تزايدي)

أصبحت أجهزة التشفير الدوارة أكثر شيوعًا لأنك قادر على استخدام وظيفتين في وحدة كهربائية واحدة: مفتاح بسيط لتأكيد العمليات وجهاز التشفير الدوار للتنقل ، على سبيل المثال من خلال قائمة الطعام.

يولد المشفر الدوراني التزايدي إشارتين للخرج أثناء دوران عمود الدوران. اعتمادًا على الاتجاه ، تقود إحدى الإشارات الأخرى. (انظر أدناه)

الخطوة 1: فهم بيانات الإخراج

فهم بيانات الإخراج
فهم بيانات الإخراج

كما ترى عندما يبدأ عمود التشفير في الدوران في اتجاه عقارب الساعة ، ينخفض الإخراج A إلى LOW أولاً ويتبعه الإخراج B. في اتجاه عكس عقارب الساعة ، تتحول العملية إلى الاتجاه المعاكس.

الآن علينا فقط تنفيذ هذا على µController (لقد استخدمت Arduino Nano).

الخطوة الثانية: بناء الدائرة

بناء الدائرة
بناء الدائرة
بناء الدائرة
بناء الدائرة

كما وصفت من قبل ، تخلق النواتج جانبًا مرتفعًا ومنخفضًا. للحصول على درجة عالية نظيفة عند دبوس البيانات A و B من µController ، يتعين علينا إضافة مقاومات Pull-Up. يذهب الدبوس C المشترك مباشرة إلى الأرض للجناح المنخفض.

للحصول على معلومات حول المفتاح الداخلي (زر الضغط) ، سنستخدم الدبابيس الأخرى. يذهب أحدهما إلى VCC والآخر إلى دبوس البيانات الخاص بـ µController. يتعين علينا أيضًا إضافة المقاوم المنسدل إلى دبوس البيانات للحصول على قيمة منخفضة نظيفة.

من الممكن أيضًا استخدام مقاومات السحب والسحب الداخلية الخاصة بـ Controller!

في حالتي ، يبدو pinout كما يلي:

  • +3 ، 3V => +3 ، 3V (Arduino) (أيضًا + 5V ممكن)
  • GND => GND (اردوينو)
  • أ => دبوس 10
  • ب =>

    دبوس

    11

  • C => GND
  • SW =>

    دبوس

    12

الخطوة الثالثة: كتابة الكود

int pinA = 10 ؛ // مفتاح داخلي A int pinB = 11 ؛ // مفتاح داخلي B int pinSW = 12 ؛ // التبديل (التشفير المضغوط) int encoderPosCount = 0 ؛ // يبدأ من الصفر ، غيّر إذا أردت

موقع int؛

منطقي التبديل ؛ int mrotate آخر ؛ int mrotate

الإعداد باطل() {

int mrotateLast = digitalRead (pinA) ؛ Serial.begin (9600) ؛ تأخير (50) ؛ }

حلقة باطلة () {readencoder () ، إذا (readswitch () == 1) {Serial.println ("Switch = 1") ؛ }}

قارئ int () {

mrotate = digitalRead (pinA) ؛ if (mrotate! = mrotateLast) {// يدور المقبض إذا (digitalRead (pinB)! = mrotate) {// switch A تم تغييره أولاً -> تدوير encoderPosCount ++ ؛ Serial.println ("مستدير في اتجاه عقارب الساعة") ؛ } else {// switch B تم تغييره أولاً -> rotating عكس اتجاه عقارب الساعة encoderPosCount-- ؛ Serial.println ("مستدير عكس اتجاه عقارب الساعة") ؛ }

Serial.print ("موضع التشفير:") ؛ Serial.println (encoderPosCount) ؛ Serial.println ("") ؛ } mrotateLast = mrotate ؛ عودة encoderPosCount ؛ } قراءة منطقية () {

إذا (digitalRead (pinSW)! = 0) تم الضغط على مفتاح {//

while (digitalRead (pinSW)! = 0) {} // مفتاح التبديل مضغوط حاليًا switchval = 1 ؛ } else {switchval = 0 ؛} // switch غير مضغوط return switchval ؛ }

يمكنك الآن تشغيل المشفر وسيتم احتساب عدد وحدات التشفير المتغيرة إذا قمت بالتدوير في اتجاه عقارب الساعة والعد التنازلي إذا قمت بالتدوير في عكس اتجاه عقارب الساعة.

هذا كل شيء! ببساطة ومفيد.

لا تتردد في تغيير وتنفيذ الكود. يمكنك تنفيذه في مشروعك.

سأقوم أيضًا بتحميل مشروع LED حيث استخدمت المشفر لضبط سطوع مصابيح LED الخاصة بي.

موصى به: