في هذا البرنامج التعليمي ، سنقوم بواجهة وحدة عصا التحكم مع متحكم atmega8. A JOY STICK هي وحدة إدخال تستخدم للتواصل. إنه يسهل بشكل أساسي التواصل مع الجهاز. يظهر عصا التحكم في الشكل أدناه.
تحتوي وحدة عصا التحكم على محورين - أحدهما أفقي والآخر رأسي. يتم تثبيت كل محور من عصا التحكم على مقياس جهد أو وعاء أو مقاومة متغيرة. يتم إسقاط نقاط الوسط على أنها Rx و Ry. تحمل هذه المسامير كدبابيس إشارة خرج لـ JOYSTICK. عندما يتم تحريك العصا على طول المحور الأفقي ، مع وجود جهد التغذية ، يتغير الجهد عند Rx pin.
يزداد الجهد عند Rx عندما يتحرك للأمام ، وينخفض الجهد عند دبوس Rx عند تحريكه للخلف. وبالمثل ، يزداد الجهد عند Ry عندما يتحرك لأعلى ، وينخفض الجهد في Ry pin عندما يتحرك لأسفل.
لذلك لدينا أربعة اتجاهات لـ JOYSTICK على قناتين ADC. في الحالات العادية لدينا فولت واحد على كل دبوس في ظل الظروف العادية. عندما يتم تحريك العصا ، فإن الجهد على كل دبوس يرتفع أو ينخفض حسب الاتجاه. أربعة اتجاهات مثل (0V ، 5V على القناة 0) للمحور x ؛ (0 فولت ، 5 فولت على القناة 1) للمحور ص.
سنستخدم قناتين ADC من ATMEGA8 للقيام بالمهمة. سنستخدم القناة 0 والقناة 1.
المكونات مطلوبة
الأجهزة: ATMEGA8 ، مصدر طاقة (5 فولت) ، مبرمج AVR-ISP ، LED (4 قطع) ، مكثف 1000 فائق التوهج ، مكثف 100nF (5 قطع) ، مقاوم 1KΩ (6 قطع).
البرنامج: Atmel studio 6.1، progisp or flash magic.
مخطط الدائرة وشرح العمل
الجهد عبر JOYSTICK ليس خطيًا تمامًا ؛ ستكون صاخبة. لتصفية الضوضاء ، يتم وضع مكثفات عبر كل مقاوم في الدائرة كما هو موضح في الشكل.
كما هو موضح في الشكل ، توجد أربعة مصابيح LED في الدائرة. يمثل كل مصباح LED كل اتجاه من اتجاهات JOYSTICK. عندما يتم تحريك العصا في اتجاه ما ، يضيء المصباح المقابل.
قبل المضي قدمًا ، نحتاج إلى التحدث عن 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 لبدء التحويل. يمكن تعطيل هذا الشيء في البرنامج عندما نحتاج إلى إيقاف التحويل.