في هذا البرنامج التعليمي ، سنقوم بواجهة مستشعر FLEX مع متحكم ATMEGA8. في ATMEGA8 ، سنستخدم ميزة 10 بت ADC (التحويل التناظري إلى الرقمي) للقيام بهذه المهمة. الآن لا يمكن أن تأخذ ADC في ATMEGA أكثر من + 5V.
ما هو جهاز استشعار فليكس؟
A استشعار FLEX هو محول الذي يتغير مقاومته عند تغيير شكله. هو مبين في الشكل أدناه.
يستخدم هذا المستشعر لاستشعار التغييرات في الخطية. لذلك عندما يكون مستشعر FLEX مثنيًا ، تنحني المقاومة بشكل كبير. هذا موضح في الشكل أدناه.
الآن لتحويل هذا التغيير في المقاومة للتغيير في الجهد ، سنستخدم دائرة مقسم الجهد. في هذه الشبكة المقاومة لدينا مقاومة ثابتة ومقاومة متغيرة أخرى. كما هو موضح في الشكل أدناه ، R1 هنا مقاومة ثابتة و R2 هو مستشعر FLEX الذي يعمل كمقاومة. يتم أخذ نقطة منتصف الفرع للقياس. عندما تتغير المقاومة R2 ، يتغير Vout معها خطيًا. لذلك لدينا جهد يتغير مع الخطية.
الآن الشيء المهم الذي يجب ملاحظته هنا هو أن الإدخال الذي تم التقاطه بواسطة وحدة التحكم لتحويل ADC منخفض يصل إلى 50 أوم. يعد تأثير التحميل لمقسم الجهد القائم على المقاومة مهمًا لأن التيار المسحوب من مقسم الجهد يزيد من نسبة الخطأ ، في الوقت الحالي لا داعي للقلق بشأن تأثير التحميل.
سنأخذ مقاومين ونشكل دائرة فاصل بحيث نحصل على 5Volt Vout من أجل 25Volts Vin. لذلك كل ما يتعين علينا القيام به هو مضاعفة قيمة Vout بالرقم "5" في البرنامج للحصول على جهد الدخل الحقيقي.
المكونات مطلوبة
الأجهزة: ATMEGA8 ، مصدر طاقة (5 فولت) ، مبرمج AVR-ISP ، JHD_162ALCD (16x2LCD) ، مكثف 100 فائق التوهج ، مكثف 100 نانومتر (5 قطع) ، مقاوم 100 كيلو أوم.
البرنامج: Atmel studio 6.1 ، progisp أو flash magic.
مخطط الدائرة وشرح العمل
في الدائرة PORTD من ATMEGA8 متصل بمنفذ بيانات LCD. في 16x2 LCD ، يوجد 16 دبوسًا في الكل إذا كان هناك ضوء خلفي ، إذا لم يكن هناك ضوء خلفي ، فسيكون هناك 14 دبوسًا. يمكن للمرء أن يغادر أو يترك دبابيس الضوء الخلفي. يوجد الآن في 14 دبابيس 8 دبابيس بيانات (7-14 أو D0-D7) ، دبابيس إمداد طاقة (1 & 2 أو VSS & VDD أو gnd & + 5v) ، 3 دبوس rd للتحكم في التباين (يتحكم VEE في مدى سماكة الأحرف معروض) و 3 دبابيس تحكم (RS & RW & E).
في الدائرة ، يمكنك ملاحظة أنني أخذت دبابيس تحكم فقط. لا يتم استخدام بت التباين والقراءة / الكتابة في كثير من الأحيان حتى يمكن تقصيرها إلى الأرض. هذا يضع LCD في أعلى وضع التباين والقراءة نحتاج فقط إلى التحكم في دبابيس ENABLE و RS لإرسال الأحرف والبيانات وفقًا لذلك.
اتصالات LCD مع ATmega8 كالتالي:
PIN1 أو VSS على الأرض
PIN2 أو VDD أو VCC إلى + 5 فولت
PIN3 أو VEE إلى الأرض (يعطي أقصى تباين أفضل للمبتدئين)
PIN4 أو RS (تسجيل التحديد) إلى PB0 من uC
PIN5 أو RW (قراءة / كتابة) على الأرض (يضع شاشة LCD في وضع القراءة يسهل الاتصال للمستخدم)
PIN6 أو E (تمكين) إلى PB1 من uC
PIN7 أو D0 إلى PD0 من uC
PIN8 أو D1 إلى PD1 من uC
PIN9 أو D2 إلى PD2 من uC
PIN10 أو D3 إلى PD3 من uC
PIN11 أو D4 إلى D4 من uC
PIN12 أو D5 إلى PD5 من uC
PIN13 أو D6 إلى PD6 من uC
PIN14 أو D7 إلى PD7 من uC
في الدائرة ، يمكنك أن ترى أننا استخدمنا اتصال 8 بت (D0-D7) ، لكن هذا ليس إلزاميًا ، يمكننا استخدام اتصال 4 بت (D4-D7) ولكن مع برنامج اتصال 4 بت يصبح معقدًا بعض الشيء ، لذلك ذهبنا للتو مع 8 بت الاتصالات. (تحقق أيضًا من هذا البرنامج التعليمي: واجهة LCD مقاس 16 × 2 مع متحكم AVR)
لذلك من مجرد الملاحظة من الجدول أعلاه ، نقوم بتوصيل 10 دبابيس من شاشة LCD بوحدة التحكم حيث تكون 8 دبابيس عبارة عن دبابيس بيانات و 2 دبابيس للتحكم.
الجهد عبر R2 ليس خطيًا تمامًا ؛ ستكون صاخبة. لتصفية مكثفات الضوضاء توضع عبر كل مقاوم في دائرة الفاصل كما هو موضح في الشكل.
وعاء 1K هنا لضبط دقة ADC. الآن دعونا نناقش حول ADC من ATMEGA8.
في ATMEGA8 ، يمكننا إعطاء مدخلات تناظرية لأي من أربع قنوات من PORTC ، لا يهم القناة التي نختارها لأننا جميعًا متماثلون ، سنختار القناة 0 أو PIN0 من PORTC.
في ATMEGA8 ، تكون دقة ADC 10 بت ، لذلك يمكن لوحدة التحكم اكتشاف حد أدنى لتغيير Vref / 2 ^ 10 ، لذلك إذا كان الجهد المرجعي 5V ، نحصل على زيادة خرج رقمية لكل 5/2 ^ 10 = 5mV. لذلك لكل زيادة 5mV في الإدخال ، سيكون لدينا زيادة واحدة في الإخراج الرقمي.
نحتاج الآن إلى ضبط سجل ADC بناءً على الشروط التالية ،
1. أولاً وقبل كل شيء نحتاج إلى تمكين ميزة ADC في ADC.
2. هنا سنحصل على أقصى جهد دخل لتحويل ADC هو + 5V. حتى نتمكن من إعداد الحد الأقصى لقيمة أو مرجع ADC إلى 5V.
3. تحتوي وحدة التحكم على ميزة تحويل المشغل التي تعني أن تحويل ADC لا يحدث إلا بعد مشغل خارجي ، لأننا لا نريد أن نحتاج إلى ضبط السجلات لتشغيل ADC في وضع التشغيل الحر المستمر.
4. بالنسبة لأي ADC ، فإن تردد التحويل (القيمة التناظرية إلى القيمة الرقمية) ودقة الإخراج الرقمي يتناسبان عكسياً. لذلك من أجل دقة أفضل للإخراج الرقمي ، يتعين علينا اختيار تردد أقل. بالنسبة لساعة ADC العادية ، نقوم بضبط البيع المسبق لـ ADC على القيمة القصوى (2). نظرًا لأننا نستخدم الساعة الداخلية 1 ميجا هرتز ، فستكون ساعة ADC (1000000/2).
هذه هي الأشياء الأربعة الوحيدة التي نحتاج إلى معرفتها للبدء في ADC.
يتم تعيين جميع الميزات الأربعة المذكورة أعلاه بواسطة سجلين:
أحمر (عدن): يجب تعيين هذا البت لتمكين ميزة ADC في ATMEGA.
الأزرق (REFS1 ، REFS0): يتم استخدام هاتين البتتين لضبط الجهد المرجعي (أو أقصى جهد دخل سنقدمه). نظرًا لأننا نريد الحصول على جهد مرجعي 5 فولت ، يجب ضبط REFS0 ، بواسطة الجدول.
أصفر (ADFR): يجب تعيين هذا البت لكي يعمل ADC بشكل مستمر (وضع التشغيل الحر).
PINK (MUX0-MUX3): هذه البتات الأربع لإخبار قناة الإدخال. نظرًا لأننا سنستخدم ADC0 أو PIN0 ، فلن نحتاج إلى تعيين أي بتات كما هو موضح في الجدول.
BROWN (ADPS0-ADPS2): هذه البتات الثلاث مخصصة لضبط مقياس القيمة المسبقة لـ ADC. نظرًا لأننا نستخدم قيمة prescalar من 2 ، يتعين علينا تعيين بت واحد.
DARK GREEN (ADSC): مجموعة البت هذه لـ ADC لبدء التحويل. يمكن تعطيل هذا الشيء في البرنامج عندما نحتاج إلى إيقاف التحويل.
يتم شرح تفاعل مستشعر FLEX مع ATmega8 خطوة بخطوة في رمز C الوارد أدناه.