عالم الإلكترونيات والروبوتات زاخرٌ بالاختراعات الصغيرة الرائعة التي تُمكّننا من التحكم في جميع أنواع الحركات ومراقبتها. ومن أكثر العناصر تنوعًا وفائدةً بلا شكّ المشفر الدوار، سواءً البصري أو المغناطيسي. أصبحت هذه الأجهزة لا غنى عنها في مشاريع أردوينو والأتمتة والتحكم في المحركات. إذا تساءلتَ يومًا عن ماهية المشفر الدوار تحديدًا، فستتساءل. المشفر الدوار البصري أو المغناطيسي: ما هو وأمثلة: KY-040 وAS5600أنت في المكان الصحيح.
في هذه المقالة سوف نتعمق في تشغيل وتطبيقات وأمثلة عملية لمشفرات الدوران، مع التركيز بشكل خاص على وحدتين شائعتين للغاية: KY-040 و AS5600ستتعلم كيفية التمييز بين المشفرات الضوئية والمغناطيسية، وخصائصها الفيزيائية والكهربائية، وكيفية توصيلها وبرمجتها في أردوينو، ومزايا كل منها حسب مشروعك. سنقدم لك أيضًا نصائح لاختيار هذه المستشعرات واستخدامها في مشاريعك الخاصة، مع شرح واضح وجذاب، دون إغفال أي تفاصيل مهمة.
ما هو المشفر الدوار؟
Un مشفر دوار إنه جهاز استشعار مصمم لقياس الموضع الزاوي والسرعة واتجاه الدوران لعمود أو عنصر دوار. يحوّل هذا الجهاز الحركة الدورانية إلى إشارات كهربائية (عادةً نبضات رقمية أو إشارات تناظرية) يمكن تفسيرها بواسطة متحكم دقيق مثل أردوينو أو راسبيري باي أو حتى وحدة تحكم صناعية.
تُعد هذه المستشعرات أساسية في التطبيقات التي تتطلب معرفة الموقع الدقيق للمحور أو عدد دوراته. تُستخدم عادةً في الطابعات، والمحركات المؤازرة، والروبوتات، وأنظمة التحكم العددي، وبالطبع في مشاريع "اصنعها بنفسك"، بدءًا من واجهات القوائم وصولًا إلى أنظمة التحكم في السرعة.
أنواع المشفرات الدوارة: البصرية مقابل المغناطيسية
يمكن تقسيم أجهزة التشفير الدوارة بشكل أساسي إلى بصري y مغناطيسي، على الرغم من وجود أنواع أخرى أقل شيوعًا مثل الأنواع السعوية.
مشفر دوار بصري
المشفر البصري، مثل KY-040يعمل هذا الجهاز على قرص ذي علامات أو ثقوب، ونظام إرسال/استقبال بصري (ثنائي ضوئي أو صمام ثنائي باعث للضوء). عند دوران العمود، تُولّد الانقطاعات الناتجة عن هذه العلامات نبضات كهربائية يستطيع المتحكم الدقيق عدّها، وبالتالي تحديد الإزاحة الزاوية. يتكون هيكله الداخلي عادةً من جزء ثابت (القرص) وجزء دوار (العمود المتصل بالعنصر المراد قياسه).
يتميز هذا النوع من أجهزة التشفير بدقته العالية وسرعة استجابته. وهو مفيد جدًا في التطبيقات التي تتطلب المتانة الميكانيكية وسهولة القراءة الرقمية، مثل واجهات المستخدم، وأدوات التحكم في مستوى الصوت، والقوائم الدوارة، والروبوتات التعليمية.
مشفر دوار مغناطيسي
من ناحية أخرى، يستخدم المشفر المغناطيسي مستشعرًا حساسًا للمجال المغناطيسي (عادةً مستشعر هول أو شريحة متخصصة مثل AS5600)، الذي يكشف عن الموضع الزاوي للمغناطيس المتصل بالعمود. توفر هذه المشفرات دقة أعلى بفضل التحويل الداخلي من تناظري إلى رقمي، وهي أقل عرضة للأوساخ والغبار، لأنها لا تعتمد على مكونات بصرية. علاوة على ذلك، توفر عادةً مخرجات رقمية (I2C أو PWM) و/أو تناظرية، مما يسهل دمجها في الأنظمة الإلكترونية المختلفة.
المشفرات التزايدية والمطلقة: الاختلافات الرئيسية
وينقسم عالم المشفرات إلى: تزايدي y المطلقات.
- مُشفِّر تزايدي: يُصدر النظام إشارةً على شكل نبضات في كل مرة يدور فيها العمود بمقدار معين. يعتمد عدد النبضات لكل دورة على التصميم والطراز. لتحديد الموضع الحالي، يجب على النظام حساب هذه النبضات وحفظها من نقطة مرجعية.
- المشفر المطلق: يُحدد هذا المؤشر الموضع الزاوي الحالي للعمود مباشرةً، حتى لو تحرك أثناء إيقاف تشغيل النظام. عادةً ما يكون مزودًا بترميز خاص على القرص أو مستشعر مغناطيسي عالي الدقة.
في هذه المقالة، سنركز على أجهزة الترميز التزايدية (مثل KY-040) وأجهزة الترميز المغناطيسي المطلق (AS5600)، حيث أنها الأكثر شيوعًا والأسهل في التكامل في مشاريع Arduino.
التشغيل العام لمشفر دوار متزايد
الكثير مُشفِّرات تزايدية (مثل KY-040) تتكون من قناتي إخراج، القناة A والقناة B، اللتين تولدان نبضات رقمية باختلاف طوري 90 درجة. بمقارنة ترتيب تغير هذه القنوات، يمكن استنتاج اتجاه الدوران (في اتجاه عقارب الساعة أو عكس اتجاه عقارب الساعة)، بالإضافة إلى حساب الخطوات (المواضع) المتخذة.
تسمى الإشارة الناتجة "التربيع" وتسمح بدقة مختلفة:
- دقة واحدة: تسجيل حافة واحدة فقط في القناة.
- دقة مزدوجة: تسجيل كلا الجانبين في قناة واحدة.
- دقة رباعية: تسجيل كلا الجانبين على كلا القناتين.
مُشفِّر الدوران KY-040: الميزات، والتوصيلات، والاستخدام مع Arduino
El KY-040 إنه أحد أكثر وحدات ترميز الدوران التزايدية استخدامًا في عالم المُصنِّعين. إنه وحدة مدمجة، وبأسعار معقولة، وسهلة الحصول عليها، مُصمَّمة خصيصًا للاتصال مباشرةً بلوحات أردوينو وغيرها من المتحكمات الدقيقة.
الخصائص التقنية الرئيسية لـKY-040:
- نوع: التزايد البصري
- مصدر التيار: 5V
- الاستهلاك: 10 مللي أمبير
- دورات لكل دورة: 30
- نبضات لكل دورة: 20
- الحجم: 20 س س 30 30 مم
- الوزن: 10 غرام
- زر الضغط المتكامل: من الممكن الضغط على المحور إلى الداخل كما لو كان زرًا، مما يضيف وظائف إضافية مفيدة جدًا في القوائم أو الواجهات.
تعيين الدبوس:
- كلك: القناة أ (مخرج النبضة)
- DT: القناة ب (مخرج النبضة)
- SW: زر ضغط متكامل
- +: مصدر طاقة 5 فولت
- أرض الواقع: أرض
كيف تقوم بتوصيل KY-040 إلى Arduino؟
الاتصال مباشر وبسيط:
| الدبوس KY-040 | دبوس أردوينو |
|---|---|
| CLK | 2 (أو أي مدخل رقمي) |
| DT | 3 (أو أي مدخل رقمي) |
| SW | 4 (أو أي مدخل رقمي) |
| + | 5V |
| GND | GND |
يمكن استخدامه أيضًا مع Raspberry Pi عن طريق تغيير دبابيس الاتصال، على سبيل المثال باستخدام GPIO16 لـ CLK، وGPIO15 لـ DT، وGPIO14 لـ SW.
الأعمال الداخلية
على عكس مقاييس الجهد، لا يوجد حد لزاوية دوران جهاز التشفير الدوار KY-040.مما يسمح للعمود بالدوران بلا حدود. داخليًا، تنزلق فرشاتان معدنيتان على سطح مقسم إلى قطاعات، مما يُغلق نقطة الاتصال بتركيبات مختلفة يتم رصدها بواسطة القناتين A وB.
يُعيد المُشفِّر إشارات رقمية على كلا الطرفين، ويُشير الإزاحة إلى اتجاه دوران العمود. علاوةً على ذلك، ولأنه تزايدي، لا يُعرَف الموضع المطلق إلا عند الحفاظ على العدّ من بداية البرنامج؛ وفي حال انقطاع الطاقة، يُعاد ضبط العدّ.
مثال على الكود الأساسي لـ Arduino
من الأمثلة التقليدية لاستخدام KY-040 زيادة أو نقصان عداد بناءً على اتجاه الدوران. المخطط المبسط كالتالي:
int A = 2؛ int B = 3؛ int متقلبة الموضع = 0؛ int السابق = 0؛ void setup() { pinMode (A، INPUT)؛ pinMode (B، INPUT)؛ Serial.begin (9600)؛ إرفاق المقاطعة (digitalPinToInterrupt (A)، encoder، LOW)؛ } void loop () { إذا (الموضع ! = السابق) { Serial.println (الموضع)؛ السابق = الموضع؛ } } void encoder () { ثابت غير موقّع lastInterrupt = 0؛ غير موقّع وقت انقطاع طويل = millis ()؛ إذا (وقت انقطاع - آخر انقطاع > 5) { // إزالة الارتداد إذا (قراءة رقمية (B) == عالية) { POSITION++؛ } وإلا { POSITION--؛ } POSITION = min (50، max (-50، POSITION))؛ // حدد النطاق lastInterrupt = interruptTime؛ } }
يتضمن هذا الكود حماية من الارتداد لمنع القراءات غير المنتظمة بسبب الطبيعة الميكانيكية لنقاط الاتصال. يُنصح بتطبيق هذه الحماية في أي مشروع مزود بمشفرات متزايدة.
المشفر المغناطيسي: الميزات، والتوصيلات، والاستخدام مع أردوينو
El AS5600 هو مشفر دوار مغناطيسي عالي الدقةمثالي للاستبدال الدقيق لمقاييس الجهد التقليدية، والتحكم في المحركات، والروبوتات. ميزته الرئيسية هي قدرته على الكشف المغناطيسي، مما يجعله مقاومًا للأوساخ والتآكل الميكانيكي الذي يؤثر على العدسات البصرية.
الميزات الرئيسية لجهاز AS5600:
- نوع: مطلق، مغناطيسي
- قرار: 12 بت (4096 موضعًا لكل دورة)
- الغذاء: 3,3 فولت أو 5 فولت
- واجهات: مخرج I2C (رقمي) أو تناظري
- تكوين مرن: يمكنك تحديد الاتجاه ووضع الإخراج عن طريق الأجهزة
- الإخراج التناظري: الجهد الكهربي متناسب مع الزاوية، وهو مفيد للميكروكنترولر بدون I2C
- دقة عالية وإمكانية التكرار: نظامها الداخلي جاهز لاكتشاف حتى الحركات الزاوية الصغيرة
توصيل الدبابيس والاتصال بـ Arduino
| الدبوس AS5600 | وظيفة | دبوس أردوينو (I2C) |
|---|---|---|
| VCC | تغذية | 5V |
| GND | أرض | GND |
| SDA | بيانات I2C | A4 |
| SCL | ساعة I2C | A5 |
| OUT | مخرج تناظري (اختياري) | A0 |
| التوجيه/الوضع | اختيار العنوان/الوضع | وفقا للتكوين المطلوب |
ملاحظة هامة: على أطباق مختلفة Arduino Unoقد تختلف دبابيس I2C. تأكد من مراجعة مخطط اللوحة الأم.
مثال على الكود للقراءة الرقمية (I2C)
للحصول على أقصى استفادة من AS5600 مع Arduino، من الأفضل استخدام المكتبة المحددة (يمكنك العثور عليها في مدير مكتبة Arduino IDE من خلال البحث AS5600):
#يشمل #يشمل مشفر AS5600؛ void setup() { Serial.begin(5600); Wire.begin(); if (!encoder.begin()) { Serial.println("لم يتم اكتشاف AS9600. تحقق من الاتصالات."); while (5600); } Serial.println("تم تهيئة AS1."); } void loop() { float angle = encoder.getAngle(); Serial.print("Angle: "); Serial.print(angle); Serial.println("degrees"); delay(5600); }
باستخدام هذا الكود، يمكنك قراءة الزاوية بالدرجات في الوقت الفعلي. وهو مثالي للتطبيقات التي تتطلب معرفة الموضع المطلق بأقصى دقة.
مثال على الكود للقراءة التناظرية
إذا كنت تفضل اتصالاً أبسط أو كان المتحكم الدقيق الخاص بك لا يدعم I2C، فيمكنك الاستفادة من الإخراج التناظري لـ AS5600:
ثابت int analogPin = A0؛ void setup() { Serial.begin(9600)؛ pinMode(analogPin، INPUT)؛ } void loop() { int value = analogRead(analogPin)؛ float angle = map(value، 0، 1023، 0، 360)؛ Serial.print("الزاوية التناظرية: ")؛ Serial.print(زاوية)؛ Serial.println(" درجات")؛ تأخير(100)؛ }
بهذه الطريقة تحصل على قراءة متناسبة مع الزاوية الفعلية للمحور وفقًا لموضع المغناطيس.
التطبيقات العملية ونصائح الاستخدام
كلا المشفرين لهما تطبيقات متنوعة للغاية في المشاريع الإلكترونية:
- كي واي-040: مثالي لواجهات المستخدم الدوارة والقوائم والتحكم في السطوع ومستوى الصوت واختيار الخيار والتحكم في الروبوت التعليمي ومشاريع الأتمتة المنزلية والأنظمة التي تتطلب التحكم الدوار بدون مرجع زاوية مطلق.
- AS5600: مثالي للتحكم في موضع المحرك وسرعته، والأتمتة الصناعية، واستشعار الموضع في المفاصل الروبوتية، وأنظمة الكاميرات المستقرة (الجيمبال)، ومقاومات الجهد الرقمية عالية الدقة، وأي تطبيق يتطلب استشعار الزاوية بدقة.
بعض النصائح للاستخدام:
- تنفيذ دائما تصفية مضادة للارتداد (إزالة الارتداد) عند استخدام أجهزة ترميز تزايدية ميكانيكية مثل KY-040 لتجنب القراءات الخاطئة.
- بالنسبة لجهاز AS5600، تأكد من محاذاة المغناطيس بشكل صحيح مع المستشعر لضمان قراءات موثوقة ومستقرة.
- تذكر أنه مع أجهزة التشفير التدريجي، إذا تم قطع مصدر الطاقة، يتم فقدان معلومات الموضع؛ وهذا لا يحدث مع AS5600، لأنه مطلق.
- استفد من أوضاع الاتصال المتعددة التي يوفرها كلا المشفرين لتكييفهما مع الاحتياجات المحددة لمشروعك.
مقارنة: متى تختار المشفر البصري ومتى تختار المشفر المغناطيسي؟
| Característica | KY-040 (البصريات التزايدية) | AS5600 (مغناطيسي مطلق) |
|---|---|---|
| نوع الإشارة | رقمي (تربيعي) | رقمي (I2C)/تناظري |
| قرار | 20 نبضة/دورة | 4096 موضعًا/لفة |
| يعمل بعد انقطاع التيار الكهربائي | لا (يتطلب إعادة تشغيل العد) | نعم (موقف مطلق) |
| الحساسية للغبار/الأوساخ | حساسة (الأجزاء الميكانيكية) | قوي جدا |
| السعر | اقتصادية للغاية | معتدل |
| صعوبة التكامل | سهل جدًا مع الكود الأساسي | يتطلب مكتبة I2C أو برمجة |
| التطبيقات النموذجية | تجربة المستخدم، القوائم، التحكم البسيط | التحكم في المحركات والروبوتات المتقدمة |
يعتمد الاختيار بين الاثنين على أولويات مشروعك: البساطة والتكلفة المنخفضة في حالة KY-040، والدقة والمتانة في حالة AS5600.
