توصيل التشفير التزايدي إلى وحدة التحكم الدقيقة. التشفير. أنواعها وعملها. ميزات وتطبيقات التشفير التزايدي atmega8

لقد طُلب مني تطوير برنامج لجهاز يستخدم برنامج تشفير تزايدي كعنصر تحكم. لذلك قررت أن أكتب درسًا غير مجدول حول العمل مع برنامج التشفير في نظام Arduino.

باختصار شديد ما نتحدث عنه، أي. على تصنيف التشفير.

أجهزة التشفير هي أجهزة استشعار زاوية الدوران الرقمية. وبعبارة أخرى، محولات رمز الزاوية.

أؤكد أن هذه أجهزة استشعار رقمية نظرًا لوجود عدد كبير من أجهزة الاستشعار ذات إشارات الإخراج التناظرية. يمكن اعتبار المقاوم المتغير البسيط مستشعر زاوية. تقوم أجهزة التشفير بتوليد إشارات منفصلة عند الإخراج.

يمكن أن تكون أجهزة التشفير مطلقة أو تراكمية (تزايدية).

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

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

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

في مثل هذه الحالات، تصبح أجهزة التشفير التزايدية أجهزة تحكم مثالية وإعدادات المعلمات واختيار القائمة. إنها أكثر ملاءمة بكثير من الزرين "+" و"-".

في هذه الحالات، يمكنك استخدام أبسط أجهزة التشفير التزايدي الميكانيكية، والتي تكون منخفضة السعر.

التشفير التزايدييشبه مقياس فرق الجهد، ولكن على عكس مقياس الجهد، ليس له مواقع متطرفة، ويمكنه الدوران في كلا الاتجاهين لعدد غير محدود من الثورات. تجدر الإشارة أيضًا إلى أن المشفر التزايدي لا يدور بسلاسة مثل مقياس الجهد، ولكن على مراحل. ويمكن رؤيته على راديو السيارة، راسم الذبذباتومركز الموسيقى والغسالة وغيرها من المعدات حيث يتم تعديل بعض المعلمات ضمن حدود واسعة. بالطبع يمكن أيضًا تغيير المعلمات باستخدام الأزرار، على سبيل المثال، من أجل جعل الموسيقى 20 قيمة أعلى، عند التحكم في الزر، تحتاج إلى الضغط عليه 20 مرة، وعند التحكم في جهاز التشفير، قم بتحويله إلى زاوية معينة، اعتمادا على خوارزمية المعالجة.

التشفير التزايدييتكون من جهتين اتصال ترتيب إغلاقها يعتمد على اتجاه الدوران.


في الحقيقة يقوم التشفير التزايدي بتحويل دوران العمود إلى نبضات كهربائيةتحتوي على معلومات حول اتجاه الدوران.

لنقم بتجميع دائرة الاختبار الموضحة في الصورة أعلاه ونوصلها بالطرفين A وB راسم الذبذباتمقاومات السحب - 4.7 كيلو.
دعونا ندير التشفير في اتجاه عقارب الساعة.


الآن عكس اتجاه عقارب الساعة.


تُظهر مخططات الذبذبات أنه اعتمادًا على اتجاه الدوران، يتغير ترتيب إغلاق جهة الاتصال. لكن الجبهات لا تظهر دائمًا بهذا الجمال.


نظرًا لأن جهات الاتصال ميكانيكية، فإنها تخضع للثرثرة، أي أنه عند إغلاقها بسبب مرونة المواد، تحدث دوائر قصيرة وفتحات متعددة غير منضبطة، وهو ما يمكن رؤيته في مخطط الذبذبات أعلاه.

هناك طريقتان للتعامل مع الثرثرة: أولاًيتكون من إضافة المكثفات والمقاومات، كما هو موضح في الصورة أدناه.


وبما أن الثرثرة ظاهرة قصيرة المدى، فمن السهل إطفاؤها بواسطة مكثف.


يوضح مخطط الذبذبات أنه بعد تركيب المكثفات، أصبحت الجبهات أقل انحدارًا واختفت الثرثرة.

الطريقة الثانية- البرمجيات وهنا كل شيء يعتمد على تنفيذ استقصاء مخرجات التشفير. لو تتم مراقبة حالة التشفير باستخدام المقاطعات الخارجية، ثم بعد تشغيل المقاطعة، من الضروري إجراء تأخير من 20 إلى 30 مللي ثانية، حيث لن يستجيب عضو الكنيست للتغيير في حالة الإخراج، أي أنه لن يشعر بالارتداد. لو يتم تنفيذ استقصاء مخرجات التشفير باستخدام جهاز توقيت، فيجب أن تكون الفترة الفاصلة بين الاستطلاعات أكبر من مدة الثرثرة، أي 20 -30 مللي ثانية.

دعونا نفكر طرق معالجة البيانات القادمة من التشفير.
الطريقة الأولى هي أن نقوم بتوصيل أحد أرجل التشفير بمخرج المقاطعات الخارجية وتكوينه للمقاطعة على حافة السقوط. في المقاطعة، نتحقق من حالة الساق الأخرى وإذا كانت صفراً، فإن الدوران يحدث في اتجاه واحد، وإلا في الاتجاه الآخر. يوجد أدناه الكود الذي يطبق هذه الطريقة لـ AVR.
#يشمل ISR(INT2_vect) (إذا (PINB & 0X02) ( PORTB |= (1<<0); } else { PORTB &= ~(1<<0); } //антидребезг _delay_ms(20); //сбрасываем флаг прерывания вызванный дребезгом GIFR = (1<عندما يتم تشغيل جهاز التشفير في اتجاه واحد، يضيء مؤشر LED، وعندما يتم تشغيله في الاتجاه الآخر، ينطفئ.

الطريقة الثانية هي مقارنة الوضع الحالي والسابق. دعونا نعبر عن المستويات المنطقية لسلسلة من النبضات على شكل أصفار وآحاد.


ثم نحصل على عدد محدود من حالات التشفير. الرقم الأول هو المستوى المنطقي للمخرج الأول لجهاز التشفير، والثاني هو المستوى المنطقي للمخرج الثاني.

لنفترض أن الحالة الأخيرة التي كان فيها المشفر كانت تساوي ثلاثة، إذا كانت الحالة التالية تساوي واحدًا، فإنه يدور في اتجاه واحد، وإذا كان اثنان، ففي الاتجاه الآخر. اتضح أنه يمكنك تسجيل الانتقال من حالة إلى أخرى وتحديد اتجاه الدوران، ولكن التنفيذ الأبسط هو عند الانتقال من 11 إلى 01 و10. وفيما يلي الكود الذي ينفذ الخوارزمية الموضحة لـ AVR،
#تعريف F_CPU 8000000UL #تتضمن #يشمل uint8_t last_state = 0; ISR(TIMER0_COMP_vect) ( // كلا طرفي التشفير متصلان بالطرفين 2 و 3 للمنفذ B // اقرأ حالتهما uint8_t current_state = (PINB & 0x06)>>1; // ضع في الاعتبار الانتقال فقط إذا كانت الحالة السابقة 11 //وإذا كانت لا تساوي الحالة الجديدة if ((last_state == 3) && (last_state != current_state)) ( // إذا كانت الحالة الجديدة 01 - قم بتشغيل مؤشر LED if(current_state == 1) ( PORTB |= 0x01; ) // إذا كانت الحالة الجديدة هي 10 - قم بإيقاف تشغيل مؤشر LED if(current_state == 2) ( PORTB &= ~0x01; ) ) // عند الخروج من المقاطعة، تصبح الحالة الحالية هي الحالة السابقة last_state = current_state; ) int main(void) ( // مدخلان لتوصيل جهاز تشفير DDRB &= ~ 0x06; // توصيل المدخلات بالطاقة PORTB |= 0x06; // إخراج لتوصيل LED DDRB |= 0x01; // اضبط المؤقت لإعادة ضبط الوضع عن طريق الصدفة TCCR0=(1<هذا كل شئ.
اشتريت التشفير

لقد تمت بالفعل مناقشة مبدأ التشغيل ومخطط الاتصال والكود المصدري للمكتبة للعمل مع برنامج التشفير التزايدي في إحدى المقالات. اليوم سنتحدث عن التطبيق العملي لجهاز التشفير. على سبيل المثال، اخترت برنامج مولد موجة مربعة مع نطاق تردد التشغيل من 1 - 100 هرتز. افترضت الخطة الأصلية مدى يتراوح من 1 إلى 1000 هرتز، ولكن في الممارسة العملية اتضح أن المرور عبر ألف قيمة أمر شاق حتى مع وجود برنامج تشفير.

تحضير

إنشاء مشروع جديد في مساحة عمل فارغة

المشروع > إنشاء مشروع جديد...

نوع القالب C> رئيسي

انسخ الملفات المصدر للمكتبة للعمل مع برنامج التشفير إلى مجلد المشروع
encoder.h وencoder.c

نقوم بتوصيل ملف encoder.c بمشروعنا
زر الماوس الأيمن في نافذة مساحة العمل وفي القائمة التي تفتح "إضافة" > "إضافة ملفات"...

انسخ الملف bits_macros.h إلى مجلد المشروع.


بما في ذلك ملفات الرأس

في بداية الملف main.c نكتب الأسطر التالية
#يشمل
#يشمل
#تشمل "التشفير.h"
#تتضمن "bits_macros.h"

ضبط إعدادات المشروع

المشروع > الخيارات

نوع المتحكم الدقيق
خيارات عامة > الهدف > تكوين المعالج > ATMega8535

السماح باستخدام أسماء البت المحددة في ملفات الرأس
خيارات عامة > النظام > تمكين تعريفات البت...

تحسين الكود بالنسبة للحجم
مترجم C/C++ > التحسينات > الحجم العالي

نوع ملف الإخراج
الرابط > فحص ملف الإخراج تجاوز الإعداد الافتراضي وقم بتغيير الامتداد إلى سداسي عشري
رابط > التنسيق > أخرى، حدد Intel Standard

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

مهمة

اجعل المتحكم الدقيق يولد موجة مربعة بتردد من 1 إلى 100 هرتز. يجب ضبط قيمة التردد باستخدام جهاز التشفير. يجب أن يتوافق تدوير جهاز التشفير بموضع واحد مع تغيير في تردد المولد بمقدار 1 هرتز.

رسم تخطيطي لمثالنا

يتم توصيل مؤشر LED بالدبوس الذي سيتم إنشاء التعرج عليه من أجل رؤية نتيجة البرنامج بطريقة ما على الأقل. من غير المرجح أن يكون لدى الكثير من الناس راسم الذبذبات في متناول اليد.

خوارزمية البرنامج

يتم إنشاء إشارة الموجة المربعة باستخدام مؤقت T1 16 بت، والذي يعمل في وضع CTC - يتم إعادة ضبطه عند التزامن. تقوم ذاكرة الفلاش الخاصة بوحدة التحكم الدقيقة بتخزين مصفوفة تحتوي على ثابت لكل قيمة من التردد المطلوب. يتم استخدام المتغير pTimerValue للوصول إلى عناصر الصفيف. في مقاطعات المؤقت T1، تتم قراءة قيمة الثابت وكتابتها في سجل المقارنة.

يتم استخدام الدبوس PD5 (OC1A) لتوليد الإشارة. لها وظائف بديلة - يمكنها تغيير حالتها إلى العكس إذا كان سجل العد وسجل المقارنة متساويين.

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

في بداية البرنامج الرئيسي يوجد كود لتهيئة الأجهزة الطرفية والمتغيرات الضرورية.

هيكل البرنامج

من أجل الوضوح، لقد قمت بتصوير هيكل البرنامج في شكل رسم تخطيطي.

هذا هيكل نموذجي لبناء برامج بسيطة. تحدث المقاطعات بشكل طبيعي في نقاط عشوائية في الحلقة.

  • التهيئة.
  • حلقة لا نهائية (ما يسمى بـ superloop) يتم فيها انتظار حدث ما، وعادة ما تكون على شكل إشارات اقتراع أو نوع من المخزن المؤقت.
  • التشغيل المتوازي للأجهزة الطرفية التي تسبب انقطاعات. يقومون بتشغيل بعض التعليمات البرمجية (ويفضل أن تكون قصيرة) ووضع العلامات.

للمهام البسيطة هذا النهج يكفي. بالنسبة للبرامج المعقدة، هناك طرق أخرى لتنظيم البرامج. كن صبوراً، فالأمور ستصل إليهم قريباً.

حساب الثوابت للمؤقت T1

دعونا نحسب قيمة الثابت لتردد 1 هرتز. لقد قدمت بالفعل عملية حسابية مماثلة، ولكن سيكون من المفيد أن نتذكرها

تردد الساعة لوحدة التحكم الدقيقة هو 16 ميجا هرتز (انظر الرسم البياني). عامل المقياس المسبق للمؤقت هو 256. وهو يسمح لك بالحصول على المقاطعات بأي تردد من نطاقنا.

ستكون فترة علامة المؤقت الواحدة مساوية لـ 1/(16 ميجاهرتز/256) = 16 ميكروثانية

عند الطرف PD5 نحتاج إلى استقبال إشارة بتردد 1 هرتز. يغير الدبوس حالته لكل مقاطعة مؤقتة، مما يعني أن تردد المقاطعة يجب أن يكون أعلى مرتين. لحالتنا - 2 هرتز.

كم عدد علامات المؤقت التي تناسب 2 هرتز؟ (1/2 هرتز)/16 ميكروثانية = 31250
وهذا هو الثابت المطلوب.

يتم حساب القيم المتبقية بنفس الطريقة. عادةً ما أستخدم برنامج Excel لهذا الغرض.


نضع القيم الناتجة في مصفوفة

__فلاش كثافة العمليات غير الموقعةقيمة الموقت =
{

احفظه في ملف منفصل – timer_value.h وقم بتوصيله بالملف main.c

#تتضمن "timer_value.h"

نعم، لا تزال بحاجة إلى إضافة بعض الثوابت إلى هذا الملف

#حدد MAX_TIM_VALUE 99
#حدد MIN_TIM_VALUE 0

دعونا نتأكد من أننا قمنا بحساب ثوابت المؤقت بشكل صحيح. دعونا نطلقها. سيكون رمز البرنامج هكذا.

// برمجة AVR في لغة C

//الموقع 10.17.09
#يشمل
#يشمل
#تشمل "التشفير.h"
#تتضمن "bits_macros.h"
#تتضمن "timer_value.h"

// فهرس للوصول إلى عناصر المصفوفة
حرف متقلب غير موقع pTimerValue = 0;

كثافة العملياترئيسي( فارغ )
{
// تهيئة المؤقت T1
TCNT1 = 0;
TCCR1A = (0<TCCR1B = (0<

// قم بتعيين دبوس PD5 للإخراج
SetBit(PORTD, PD5);
SetBit(DDRD, PD5);

// لا تفعل شيئًا في حلقة لا نهاية لها
بينما(1);
يعود 0;
}

أعتقد أن جزء تهيئة المؤقت فقط هو الذي يتطلب شرحًا.

إعادة ضبط سجل العداد
TCNT1 = 0;

تهيئة سجلات تكوين مؤقت T1.
TCCR1A = (0<TCCR1B = (0<

حيث تقوم البتات WGM13، WGM12، WGM11، WGM10 بتعيين وضع تشغيل المؤقت - CTC،
CS12، CS11، CS10 – تحديد معامل المقياس المسبق للمؤقت –256،

COM1A1، COM1A0 – تحديد سلوك طرف PD5(OC1F) – في هذه الحالة، بناءً على إشارة المؤقت، فإنه سيغير حالته إلى الحالة المعاكسة


تهيئة سجل المطابقة للقيمة الأولية.
OCR1A = timerValue;

نقوم بتجميع البرنامج وتحميله في المتحكم الدقيق. يجب أن يومض مؤشر LED بتردد 1 هرتز.
لا توجد انقطاعات في البرنامج. لا يوجد أي تلاعب في دبوس PD5. ومع ذلك، يومض مؤشر LED!

برنامج

أنت الآن بحاجة إلى "ربط" برنامج التشفير بهذا البرنامج. لنقم بضبط الإعدادات في ملف الرأس encoder.h - المنفذ والدبابيس التي يتصل بها برنامج التشفير، وقيم الثوابت.


#define PORT_Enc PORTA
#تعريف PIN_Enc PINA
#define DDR_Enc DDRA
#تعريف Pin1_Enc 2
#تعريف Pin2_Enc 1

#تعريف RIGHT_SPIN 0x01
#define LEFT_SPIN 0xff

يحتوي الرأس على نماذج أولية لثلاث وظائف. دعونا نتذكر غرضهم.

باطلة ENC_InitEncoder (باطلة)يقوم بتكوين دبابيس وحدة التحكم الدقيقة التي يتصل بها جهاز التشفير بالإدخال. يجب استدعاء هذه الوظيفة في بداية الأمر الرئيسي.


باطل ENC_PollEncoder(باطل)- يستقصي جهاز التشفير مرة واحدة، ويحلل الحالات الحالية والسابقة ويكتب الثوابت المقابلة (RIGHT_SPIN وLEFT_SPIN) في المخزن المؤقت. سيتم وضع هذه الوظيفة في مقاطعة مؤقت T0.


حرف غير موقع ENC_GetStateEncoder (باطل)- إرجاع محتويات المخزن المؤقت للتشفير. إذا لم يكن الدوران ثابتًا بموضع واحد، فسترجع الدالة 0؛ وإذا كان الدوران ثابتًا، فسترجع الدالة قيمة الثابت المقابل. سيؤدي هذا إلى مسح قيمة المخزن المؤقت. سيتم استدعاء هذه الوظيفة في البرنامج الرئيسي - في الحلقة while.


نحن الآن بصدد توسيع برنامجنا. يمكنك محاولة القيام بذلك بنفسك.

// برمجة AVR في لغة C
// مثال على استخدام برنامج التشفير
//الموقع 10.17.09

#يشمل
#يشمل
#تشمل "التشفير.h"
#تتضمن "bits_macros.h"
#تتضمن "timer_value.h"

#تعريف TCNT0_const 253
#تعريف TCCR0_const 5

حرف متقلب غير موقع pTimerValue = 0;

كثافة العملياترئيسي( فارغ )
{
ENC_InitEncoder();

// تهيئة المؤقت t0
TCNT0 = TCNT0_const;
TCCR0 = TCCR0_const;

// تهيئة المؤقت t1
TCNT1 = 0;
TCCR1A = (0<TCCR1B = (0<OCR1A = timerValue;

// تمكين المقاطعات الموقت
//t0 - عن طريق الفائض، t1 - عن طريق الصدفة

تيمسك = (1<

// قم بتعيين PD5 للإخراج
SetBit(PORTD, PD5);
SetBit(DDRD, PD5);

__enable_interrupt ();
بينما (1){
// اقرأ محتويات المخزن المؤقت لبرنامج التشفير
// بعد القراءة يتم مسحه

حرف غير موقعة StateEnc = ENC_GetStateEncoder();

// إذا لم يكن فارغا
لو(stateEnc! = 0)(
// تحديد اتجاه الدوران وتغيير متغير timerValue
لو(stateEnc == RIGHT_SPIN)(
لو(pTimerValue == MAX_TIM_VALUE) pTimerValue = MIN_TIM_VALUE;
آخر pTimerValue++;
}
لو(stateEnc == LEFT_SPIN) (
لو(pTimerValue == MIN_TIM_VALUE) pTimerValue = MAX_TIM_VALUE;
آخر pTimerValue--;
}
}
}
يعود 0;
}

// استطلاع التشفير
#pragma Vector=TIMER0_OVF_vect
__interruptفارغ timer0_ovf_my( فارغ)
{
TCNT0 = TCNT0_const;
ENC_PollEncoder();
}

#pragma Vector=TIMER1_COMPA_vect
__interrupt فارغ timer1_compa_my( فارغ)
{
// تحديث قيمة سجل المقارنة
OCR1A = timerValue;
}

يبدو أن كل شيء يجب أن يكون واضحا.
يمكن أيضًا كتابة جزء التعليمات البرمجية الذي يغير قيمة pTimerValue على النحو التالي:

لو(stateEnc ! = 0) (
pTimerValue = pTimerValue +stateEnc;
لو(pTimerValue == (MAX_TIM_VALUE + 1)) pTimerValue = MIN_TIM_VALUE;
وإلا إذا(pTimerValue == (MIN_TIM_VALUE - 1)) pTimerValue = MAX_TIM_VALUE;
}

عندما يتم تدوير جهاز التشفير إلى اليمين، تتم إضافة pTimerValue إلى 1، أي يتم زيادته.

عند تدوير جهاز التشفير إلى اليسار، تتم إضافة pTimerValue إلى 0xff، وهو ما يعادل طرح 1. إنها نفس العملية، ولكن النتيجة هي عكس ذلك تمامًا.

لتنفيذ المشروع التوضيحي سنحتاج إلى:

  • جهاز تشفير ذو 24 موضعًا؛
  • 16 مصباح LED (3 مم)؛
  • سائق LED A6276؛
  • المتحكم الدقيق PIC18F2550

يعد التشفير عنصر تحكم حديث وأصلي للأجهزة الرقمية، وهو يشبه في المظهر المقاوم المتغير (انظر الشكل أدناه). الاسم الآخر لعنصر التحكم هذا هو مستشعر الزاوية، ومستشعر الدوران. يكون دوران العمود مصحوبًا بنقرات، على سبيل المثال 24 نقرة في كل دورة. يحتوي جهاز التشفير على 3 مخارج - A، B، C ويستخدم لإدخال البيانات بسرعة إلى الأجهزة الرقمية. تحتوي بعض الطرز على زر مدمج يتم تنشيطه بالضغط على عمود التشفير (تتم إضافة مخرج آخر).

مبدأ تشغيل التشفير

عند الدوران بنقرة واحدة، على سبيل المثال، إلى اليمين، يتم إغلاق جهة الاتصال A+C أولاً، ثم B+C. عندما يتم تشغيل العمود عند هذه النقرة، يتم فتح نقاط الاتصال بنفس التسلسل. عندما يتم تدوير العمود في الاتجاه الآخر، يتغير تسلسل الإغلاق مع جهة الاتصال C، أي. عند الانعطاف إلى اليسار، يتم إغلاق B+C أولاً، ثم A+C.

باستخدام برنامج التشفير في مشاريع المتحكم الدقيق، من الممكن تنفيذ عدة أنواع مختلفة من إدخال البيانات باستخدام نفس برنامج التشفير، ومع ذلك، فإن هذا يتطلب بعض التعليقات والتصور حتى يعرف المستخدم ما هي المعلومات التي يدخلها وفي أي موضع يوجد جهاز التشفير.

رسم تخطيطى

يتم توصيل أطراف التشفير A وB بمنفذي وحدة التحكم الدقيقة RB4 وRB5، ويتم توصيل طرف التشفير C بالأرض. تجدر الإشارة إلى أنه يجب توصيل مقاومات السحب بخطوط إشارة الأطراف A و B. ليس من قبيل الصدفة أن يكون جهاز التشفير متصلاً بخطوط الإدخال / الإخراج المحددة لوحدة التحكم الدقيقة: أولاً، يحتوي المنفذ B على مقاومات سحب مدمجة ولا يتعين علينا توصيل مقاومات خارجية، وثانيًا، المنفذ B لوحدة التحكم الدقيقة لديه وظيفة مفيدة جدًا - "المقاطعة عند التغيير" - المقاطعة عن طريق تغيير المستوى، مما سيسمح لنا بمراقبة حالة برنامج التشفير.

يتم استخدام 16 مصباح LED عادي مقاس 3 مم لتصور بيانات الإدخال وسيتم وضعها على لوحة الدائرة المطبوعة حول جهاز التشفير المثبت. ترتبط مصابيح LED بشريحة A6276.

شريحة A6276 عبارة عن برنامج تشغيل LED مزود بإدخال تسلسلي 16 بت. يحتوي برنامج التشغيل على سجل تحويل CMOS 16 بت، ومزالج ومحركات مرتبطة للتحكم في مصابيح LED، ويمكنه تشغيل عدد أكبر من مصابيح LED مما يسمح به جهاز التحكم الدقيق. بالإضافة إلى ذلك، يمكن التحكم في برنامج التشغيل عبر واجهة SPI، مما يقلل من عدد خطوط الإدخال/الإخراج المستخدمة ويجعل المشروع قابلاً للتطوير.

برنامج المتحكم الدقيق لحل مشكلتنا بسيط نسبيًا. هناك 3 أوضاع تشغيل (إدخال المعلومات) وردود الفعل:

  • وضع تحديد المواقع بزاوية 360 درجة - في هذا الوضع، تشير مصابيح LED إلى "الموضع" الحالي لجهاز التشفير، ويمكن للمستخدم تدوير عمود التشفير إلى اليسار واليمين إلى أي زاوية؛
  • وضع "مستوى الصوت/المستوى" - في هذا الوضع، تشير مصابيح LED إلى القيمة الحالية بين الحد الأدنى والحد الأقصى لمستويات الإدخال (مثل مستوى الصوت في أجهزة الصوت)؛
  • وضع المفتاح الدوار ثلاثي المواضع - في هذا الوضع، لا يوجد سوى ثلاثة أوضاع قابلة للتحديد يختارها المستخدم عن طريق تحويل عمود التشفير إلى اليسار/اليمين.

مظاهرة للمشروع

التحميلات

يوجد أرشيف ZIP مع مشروع في بيئة MPLAB وكود المصدر في Hitech C، بالإضافة إلى مخطط الدائرة وطوبولوجيا لوحة الدوائر المطبوعة.

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

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

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

إذا كانت مخططات الذبذبات عبارة عن تطبيق لسلسلة من المهام المكونة من أصفار وواحدات منطقية، فستبدو كما يلي:

لنأخذ برنامج تشفير عادي يحتوي على ارتداد الاتصال. منطقة الارتداد:

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

تتمثل طريقة الأجهزة في توصيل سلسلة من مكثفات التردد، بمشغلات شميت، كما هو موضح في مخطط لوحة التحكم:

يوصى باستخدام طريقة برمجية لمكافحة الثرثرة. هذه الطريقة موصوفة في مكتبة Rothery. تحتوي هذه المكتبة على العديد من الوظائف اللازمة لتكوين مخرجات وحدة تحكم المتجهات للإدخال، وتوصيل مقاومات سحب الطاقة (كيلوواط). يجب أن تحدد المكتبة الأوامر والمهام المناسبة. يقوم هذا الأمر بتشغيل مقاومة السحب الداخلية.

تقوم وظيفة الحصول على سلسلة vfd بالموضع بإرجاع قيمة برنامج التشفير. هذه الوظيفة ضرورية للحصول على عدد النبضات التي قام المشفر بإحصائها. هناك حاجة إلى وظيفة set Position vfd لتحميل القيمة التي سيبدأ جهاز التشفير منها في العد.

يجب النظر إلى وظيفة التجزئة بمزيد من التفصيل. تسجل متغيرات هذه الوظيفة، sig1 وsig2، حالة الطرف المتجه الذي يتصل به جهاز التشفير. تتم بعد ذلك كتابة هذه الأطراف إلى متغير thisState vfd، وهو الحالة الحالية لجهاز التشفير. إذا كانت الحالة الحالية للمشفر لا تساوي الحالة السابقة، فسيتم حساب اتجاهات العد الجديدة ويتم تخزين عدد نبضات الطاقة في متغير الموضع. عندما يعود المشفر إلى موضعه المتجه الأولي، سيكون هناك إزاحة إلى اليمين بمقدار بتتين، ويجب كتابة قيمة التحكم الجديدة في متغير PositionExt. هذا المتغير ضروري لحفظ سلسلة من نتائج المهام التي سيتم استخدامها في البرنامج الرئيسي.

يفحص

بعد تحليل حالة التشفير عند الدوران إلى اليسار واليمين، نرسم جدولاً:

موقع البداية هو 1-1. عند التحول إلى اليمين، حدثت نقرة، أصبحت الوحدة صفرًا منطقيًا. القيمة الجديدة لهذه الحالة vfd هي 01. وفقًا للأمر، يتم جمع هذه النتيجة بقيمة متغير الموضع.

نظرًا لحدوث ثرثرة، أصبح الموضع 11، وبعد إعادة الحساب أصبح الرقم التسلسلي 7. وبعد انتهاء الثرثرة، تحتاج إلى إصلاح الموضع الجديد 01 وإضافة واحد إلى الصفر السابق. عند تشغيل جهاز التشفير، كانت هناك نقرة واحدة، وأصبحت قيمة متغير الموضع واحدة.

تحدث النقرة الثانية عندما يتحول جهاز التشفير إلى اليمين، وبدلاً من الموضع 01 لدينا الموضع 00. وبعد انتهاء كل الارتداد، يكون لإخراج التحكم أيضًا قيمة واحدة. في النقرة الرابعة، عندما يصبح المركز من 10 إلى 11، لدينا قيمة 6. وبعد انتهاء الارتداد، تبقى 6.

تستخدم بعض برامج الترميز زر اللوحة. عندما تضغط عليه ثم حرره، سترتد جهات الاتصال أيضًا، وستحتاج إلى استخدام مكتبة Bounce. هناك حاجة إلى وظائف هذه المكتبة لتعيين الدبوس الذي سيتم توصيل الزر به، ووقت التأخير بالمللي ثانية. إذا تم الضغط على الزر، فإن وظيفة الطاقة (كيلوواط) ترجع قيمة المتجه صحيحة، وإذا لم يكن الأمر كذلك، فسترجع قيمة vfd خاطئة.

رسم تخطيطي لتوصيل جهاز التشفير بمحول التردد

في صناعة الأدوات الآلية، تُستخدم أجهزة التشفير على نطاق واسع لمحولات التردد للمحركات غير المتزامنة. يتم تركيبها كأجهزة استشعار لردود الفعل بناءً على سرعتها. تتمتع أجهزة التشفير هذه بتمييز كبير يتراوح من 100 نبضة لكل ثورة إلى مليون نبضة لكل ثورة. هذه العلامة التجارية لديها دقة 500 نبضة. والعكس صحيح.

يتم تقسيم أجهزة التشفير إلى أنواع المهام وفقًا لـ. فهي مطلقة ومتزايدة. يقوم جهاز التشفير الخاص بنا بالوظيفة المعتادة - فهو ينتج إشارة تمايز عند إيقاف تشغيل الطاقة وتزويدها مرة أخرى. لم يتم الحفاظ على الحالة المبكرة.

تحتوي أجهزة تشفير النوع المطلق على ذاكرة داخلية تتذكر المواضع الأخيرة. لماذا هناك حاجة إلى الذاكرة، ولماذا حفظ هذه البيانات؟ في مصانع تصنيع الأدوات الآلية، قبل تحريك جهاز معين، تتم الإشارة أولاً إلى نقطة الصفر. وتسمى هذه العملية المرجعية، أي الذهاب إلى الصفر.

إن استخدام مستشعر الرؤية المطلقة يجعل من الممكن تجنب هذا الإجراء مرة ثانية وتقليل الوقت، بشرط أن يكون لدى النظام قيود على الحركة.

دعونا نلقي نظرة على التشفير الجيب وجيب التمام. أنها تنتج إشارة إخراج جيب التمام أو جيب. بعد ذلك، باستخدام جهاز استيفاء الطاقة، يتم تشكيل نبضات منها. يمكن تغيير حجم الإشارات من هذا النوع. يتم تشغيل التشفير من جهد 5 فولت.

الإشارة "A" هي إشارة نبضية مباشرة. يأتي عدد النبضات من هذه الإشارة عند كل دورة. وهو يساوي 500 (دقة الاستشعار).

الإشارة "B" هي أيضًا إشارة نبضية مباشرة. ومنه، عند كل دورة، يتم استقبال عدد النبضات حسب خصوصية المستشعر، والذي يتم إزاحته من القناة "أ" بمقدار 90 درجة (500).

الإشارة "R" هي إشارة علامة الصفر. يتم الحصول على نبضة واحدة من ثورة واحدة للمستشعر.

تستخدم أجهزة التشفير الصناعية إشارة تمايز للعمل مع محول التردد (محول التردد). اسمها معقد، ولكن في الواقع كل شيء بسيط. يتم نسخ كافة القنوات بشكل منفصل عن طريق انعكاسها. يعد ذلك ضروريًا لإرسال إشارة عبر مسافات كبيرة. يتم توصيل قناة الإخراج الخاصة بجهاز التشفير بجهاز استقبال لأغراض خاصة مصنوع باستخدام مكبرات الصوت من النوع التشغيلي. يتم تحديد الدافع في النهاية من خلال الجمع بين إشارتين.

اتصال

الاتصال بسيط. نقوم بتوصيل جهد 5 فولت بمخرجات جهاز التشفير. لدينا تخطيط: سلك بني - 0 فولت، أبيض - +5 فولت، وردي، أخضر وأحمر - A، B، R.

يعتمد برنامج اتصال التشفير على مقاطعات القناتين A وB. ويتم تشغيل المقاطعات عند الحافة الصاعدة. وينتج عن هذا موقف يتباطأ فيه جهاز التشفير في لحظة تقاطع البيانات النقطية وتظل إشارة خرج القناة إيجابية دائمًا. يتم عد البقول بشكل مستمر عن طريق العداد.

في حالتنا، لن نستخدم المقاطعات، لأننا نعمل مع 4 أجهزة استشعار، يتم تشغيلها في وقت واحد. إذا كنت تستخدم دائرة مقاطعة، فمن المرجح أن تنشأ حالة فقدان النبض. نقوم بحل هذه المشكلة عن طريق تعيين أيقونة حضور الحركة. ونظرنا في تشغيل أجهزة التشفير الصناعية.

تشغيل عداد النبض على أساس وحدة التشفير

يعمل العداد جنبًا إلى جنب مع وحدة مؤشر مكونة من سبعة أرقام، والتي ستعرض عدد النبضات الناتجة عن جهاز التشفير. عند تشغيله تكون قيمة العداد صفر.

دعونا ندير مقبض التشفير في اتجاه عقارب الساعة. تتم زيادة قيمة العداد بمقدار واحد في كل مرة يتم فيها النقر فوق برنامج التشفير. أكبر رقم يمكنك الحصول عليه هو 999999999. يجب أن يملأ هذا الرقم جميع أرقام مؤشرنا المكون من سبعة أجزاء. إذا قمت بتدوير المقبض أكثر، فسيتم ضبط العداد على الصفر ويبدأ العد من الصفر مرة أخرى.

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