- المكونات المطلوبة وإعداد الأجهزة
- مخطط الدائرة Nuvoton N76E003 لقراءة الجهد التناظري
- معلومات حول GPIO والدبابيس التناظرية في N76E003
- معلومات حول ADC Peripheral في N76E003
- برمجة N76E003 لـ ADC
- وميض الكود والإخراج
يعد المحول التناظري إلى الرقمي (ADC) أكثر ميزات الأجهزة استخدامًا في وحدة التحكم الدقيقة. يأخذ الجهد التناظري ويحوله إلى قيمة رقمية. نظرًا لأن الميكروكونترولر هي أجهزة رقمية وتعمل بالرقم الثنائي 1 و 0 ، فلا يمكنها معالجة البيانات التناظرية مباشرة. وبالتالي ، يتم استخدام ADC لأخذ الجهد التناظري وتحويله إلى قيمته الرقمية المكافئة التي يمكن أن يفهمها متحكم دقيق. إذا كنت تريد المزيد حول المحول التناظري إلى الرقمي (ADC) ، فيمكنك التحقق من المقالة المرتبطة.
هناك مستشعرات مختلفة متوفرة في الإلكترونيات التي توفر خرجًا تناظريًا ، مثل مستشعرات الغاز MQ ، ومستشعر مقياس التسارع ADXL335 ، وما إلى ذلك ، وبالتالي ، باستخدام المحول التناظري إلى الرقمي ، يمكن ربط هذه المستشعرات بوحدة متحكم دقيق. يمكنك أيضًا الاطلاع على البرامج التعليمية الأخرى المدرجة أدناه ، لاستخدام ADC مع ميكروكنترولر أخرى.
- كيفية استخدام ADC في Arduino Uno؟
- ربط ADC0808 مع متحكم 8051
- استخدام وحدة ADC لوحدة التحكم الدقيقة PIC
- دروس Raspberry Pi ADC
- كيفية استخدام ADC في MSP430G2 - قياس الجهد التناظري
- كيفية استخدام ADC في STM32F103C8
في هذا البرنامج التعليمي ، سنستخدم الطرفية ADC المدمجة لوحدة التحكم الدقيقة N76E003 ، لذلك دعونا نقيم نوع إعداد الأجهزة الذي نحتاجه لهذا التطبيق.
المكونات المطلوبة وإعداد الأجهزة
لاستخدام ADC على N76E003 ، سنستخدم مقسم جهد باستخدام مقياس جهد ونقرأ الجهد الذي يتراوح من 0 فولت إلى 5.0 فولت. سيتم عرض Voltage في شاشة LCD 16x2 Character ، إذا كنت جديدًا مع شاشة LCD و N76E003 ، يمكنك التحقق من كيفية واجهة LCD مع Nuvoton N76E003. وبالتالي ، فإن المكون الرئيسي المطلوب لهذا المشروع هو شاشة LCD مقاس 16 × 2 أحرف. بالنسبة لهذا المشروع ، سوف نستخدم المكونات التالية-
- شاشة LCD مقاس 16x2.5 سم
- 1 كيلو المقاوم
- 50 كيلو مقياس جهد أو وعاء تقليم
- عدد قليل من الأسلاك بيرغ
- عدد قليل من أسلاك التوصيل
- اللوح
ناهيك عن أنه بخلاف المكونات المذكورة أعلاه ، نحتاج إلى لوحة تطوير تعتمد على وحدة التحكم الدقيقة N76E003 بالإضافة إلى مبرمج Nu-Link. مطلوب أيضًا وحدة إمداد طاقة إضافية بجهد 5 فولت حيث تسحب شاشة LCD تيارًا كافيًا لا يستطيع المبرمج توفيره.
مخطط الدائرة Nuvoton N76E003 لقراءة الجهد التناظري
كما نرى في التخطيطي ، يتم استخدام المنفذ P0 للاتصال المرتبط بشاشة LCD. في أقصى اليسار ، يظهر اتصال واجهة البرمجة. يعمل مقياس الجهد كمقسم للجهد ويتم استشعاره من خلال الإدخال التناظري 0 (AN0).
معلومات حول GPIO والدبابيس التناظرية في N76E003
توضح الصورة أدناه دبابيس GPIO المتوفرة في وحدة الميكروكونترولر N76E003AT20. ومع ذلك ، من بين 20 سنًا ، بالنسبة لاتصال LCD المرتبط ، يتم استخدام المنفذ P0 (P0.0 و P0.1 و P0.2 و P0.4 و P0.5 و P0.6 و P0.7). يتم تمييز المسامير التناظرية بألوان حمراء.
كما نرى ، يحتوي المنفذ P0 على أقصى عدد من المسامير التناظرية ولكن تلك المستخدمة في الاتصالات المتعلقة بشاشات LCD. وبالتالي ، يتوفر P3.0 و P1.7 كدبابيس إدخال تناظرية AIN1 و AIN0. نظرًا لأن هذا المشروع يتطلب دبوسًا تناظريًا واحدًا فقط ، يتم استخدام P1.7 وهو قناة الإدخال التناظرية 0 لهذا المشروع.
معلومات حول ADC Peripheral في N76E003
يوفر N76E003 ADC 12 بت SAR. إنها ميزة جيدة جدًا لـ N76E003 أن لديها دقة جيدة جدًا من ADC. يحتوي ADC على إدخالات 8 قنوات في الوضع أحادي الطرف. إن الربط بين ADC بسيط جدًا ومباشر.
الخطوة الأولى هي تحديد إدخال قناة ADC. تتوفر مدخلات 8 قنوات في ميكروكنترولر N76E003. بعد تحديد مدخلات ADC أو دبابيس الإدخال / الإخراج ، يجب ضبط جميع المسامير على الاتجاه في الكود. جميع المسامير المستخدمة للإدخال التناظري هي دبابيس إدخال للميكروكونترولر وبالتالي يجب تعيين جميع المسامير على أنها وضع الإدخال فقط (مقاومة عالية). يمكن ضبطها باستخدام مسجّلي PxM1 و PxM2. يحدد هذان السجلان أوضاع الإدخال / الإخراج حيث يرمز x إلى رقم المنفذ (على سبيل المثال ، المنفذ P1.0 سيكون السجل P1M1 و P1M2 ، بالنسبة لـ P3.0 سيكون P3M1 و P3M2 ، إلخ.) يمكن التكوين يمكن رؤيته في الصورة أدناه-
يتم تكوين ADC بواسطة سجلين ADCCON0 و ADCCON1. يتم عرض وصف ADCCON0 Register أدناه.
تُستخدم أول 4 بتات من السجل من بت 0 إلى بت 3 لضبط اختيار قناة ADC. نظرًا لأننا نستخدم القناة AIN0 ، فسيكون الاختيار 0000 لهذه البتات الأربع.
البتتان السادسة والسابعة هما المهمتان. مطلوب ADCS لضبط 1 لبدء تحويل ADC وسيوفر ADCF معلومات حول تحويل ADC الناجح. يجب ضبطه على 0 بواسطة البرنامج الثابت لبدء تحويل ADC. السجل التالي هو ADCCON1-
يتم استخدام سجل ADCCON1 بشكل أساسي لتحويل ADC الذي يتم تشغيله بواسطة مصادر خارجية. ومع ذلك ، بالنسبة للعمليات ذات الصلة بالاستقصاء العادي ، فإن أول بت ADCEN مطلوب لتعيين 1 لتشغيل دائرة ADC.
بعد ذلك ، يجب التحكم في إدخال قناة ADC في سجل AINDIDS حيث يمكن فصل المدخلات الرقمية.
يرمز n إلى بت القناة (على سبيل المثال ، يجب التحكم في قناة AIN0 باستخدام أول بت P17DIDS من سجل AINDIDS). يجب تمكين الإدخال الرقمي ، وإلا فسيتم قراءته كـ 0. هذه كلها هي الإعداد الأساسي لـ ADC. الآن ، يمكن بدء مسح ADCF وتعيين ADCS لتحويل ADC. ستكون القيمة المحولة متاحة في السجلات أدناه-
و
كلا المسجلين 8 بت. نظرًا لأن ADC يوفر بيانات 12 بت ، يتم استخدام ADCRH بالكامل (8 بت) ويتم استخدام ADCRL كنصف (4 بت).
برمجة N76E003 لـ ADC
يعد الترميز لوحدة نمطية معينة في كل مرة مهمة محمومة ، وبالتالي يتم توفير مكتبة LCD بسيطة لكنها قوية والتي ستكون مفيدة جدًا لواجهة LCD ذات الأحرف 16 × 2 مع N76E003. تتوفر مكتبة 16x2 LCD في مستودع Github الخاص بنا ، والذي يمكن تنزيله من الرابط أدناه.
قم بتنزيل مكتبة LCD مقاس 16 × 2 لجهاز Nuvoton N76E003
يرجى لديك مكتبة (عن طريق الاستنساخ أو تحميل) وتشمل فقط lcd.c و LCD.h الملفات الخاصة بك في المشروع كايل N76E003 لسهولة التكامل من LCD 16X2 في التطبيق المطلوب أو المشروع. ستوفر المكتبة الوظائف المفيدة التالية المتعلقة بالعرض-
- قم بتهيئة شاشة LCD.
- أرسل الأمر إلى شاشة LCD.
- اكتب على شاشة LCD.
- ضع سلسلة في شاشة LCD (16 حرفًا).
- طباعة الحرف بإرسال قيمة سداسية عشرية.
- تمرير الرسائل الطويلة بأكثر من 16 حرفًا.
- اطبع أرقامًا صحيحة مباشرة في شاشة LCD.
ترميز ADC بسيط. في وظيفة الإعداد Enable_ADC_AIN0 ؛ يستخدم لإعداد ADC ل AIN0 الإدخال. تم تعريف هذا في الملف.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0؛ P17_Input_Mode؛ AINDIDS = 0x00؛ AINDIDS- = SET_BIT0؛ ADCCON1- = SET_BIT0 // P17
لذلك ، يقوم السطر أعلاه بتعيين الدبوس كمدخل وتكوين سجل ADCCON0 و ADCCON1 بالإضافة إلى سجل AINDIDS أيضًا. أدناه وظيفة وقراءة ADC من ADCRH و ADCRL السجل ولكن مع 12 بت القرار.
غير موقعة ADC_read (باطل) { تسجيل غير موقعة int adc_value = 0x0000؛ clr_ADCF ؛ مجموعة_ADCS ؛ بينما (ADCF == 0) ؛ adc_value = ADCRH ، adc_value << = 4 ؛ adc_value - = ADCRL ؛ إرجاع adc_value ؛ }
يتم إزاحة البتة إلى اليسار 4 مرات ثم تُضاف إلى متغير البيانات. في الوظيفة الرئيسية ، تقوم ADC بقراءة البيانات وطباعتها مباشرة على الشاشة. ومع ذلك ، يتم تحويل الجهد أيضًا باستخدام نسبة أو العلاقة بين الجهد مقسومًا على قيمة البت.
سيوفر ADC 12 بت 4095 بت عند إدخال 5.0 فولت. وبالتالي قسمة 5.0V / 4095 = 0.0012210012210012V
لذلك ، سيكون رقم واحد من تغييرات البت مساويًا للتغييرات في 0.001 فولت (تقريبًا). يتم ذلك في الوظيفة الرئيسية الموضحة أدناه.
void main (void) { int adc_data؛ اقامة()؛ lcd_com (0x01) ؛ بينما (1) { lcd_com (0x01) ؛ lcd_com (0x80) ؛ lcd_puts ("بيانات ADC:") ؛ adc_data = ADC_read () ، lcd_print_number (adc_data) ؛ الجهد = adc_data * bit_to_voltage_ratio ؛ sprintf (str_voltage ، "Volt:٪ 0.2fV" ، الجهد) ؛ lcd_com (0xC0) ؛ lcd_puts (str_voltage) ؛ Timer0_Delay1ms (500) ؛ } }
يتم تحويل البيانات من قيمة بت إلى جهد وباستخدام وظيفة sprintf ، يتم تحويل الإخراج إلى سلسلة وإرسالها إلى شاشة LCD.
وميض الكود والإخراج
أرجع الكود 0 تحذير و 0 أخطاء وتم وميضه باستخدام طريقة الوميض الافتراضية بواسطة Keil ، يمكنك رؤية الرسالة الوامضة أدناه. إذا كنت جديدًا على Keil أو Nuvoton ، تحقق من بدء استخدام Nuvoton microcontroller لفهم الأساسيات وكيفية تحميل الكود.
بدأت إعادة البناء: المشروع: مؤقت إعادة إنشاء الهدف 'Target 1' الذي يجمع STARTUP.A51… تجميع main.c… تجميع lcd.c… تجميع Delay.c… ربط… حجم البرنامج: data = 101.3 xdata = 0 code = 4162 إنشاء ملف سداسي عشري من ". \ Objects \ timer"… ". \ Objects \ timer" - 0 خطأ (أخطاء) ، 0 تحذير (تحذيرات). وقت الإنشاء المنقضي: 00:00:02 تحميل "G: \\ n76E003 \\ Display \\ Objects \\ timer" تم إجراء محو فلاش. الكتابة السريعة المنفذة: 4162 بايت مبرمجة. تم التحقق من Flash: تم التحقق من 4162 بايت. انتهى تحميل الفلاش الساعة 11:56:04
تُظهر الصورة أدناه الأجهزة المتصلة في مصدر الطاقة باستخدام محول التيار المستمر وتعرض الشاشة خرج الجهد الذي تم تعيينه بواسطة مقياس الجهد على اليمين.
إذا قمنا بتشغيل مقياس الجهد ، فإن الجهد المعطى إلى دبوس ADC سيتغير أيضًا ويمكننا ملاحظة قيمة ADC والجهد التناظري المعروض على شاشة LCD. يمكنك مشاهدة الفيديو أدناه للحصول على شرح عملي كامل لهذا البرنامج التعليمي.
آمل أن تكون قد استمتعت بالمقال وتعلمت شيئًا مفيدًا ، إذا كانت لديك أسئلة ، فاتركها في قسم التعليقات أدناه ، أو يمكنك استخدام منتدياتنا لنشر أسئلة فنية أخرى.