إحدى الميزات الشائعة المستخدمة في كل تطبيق مضمن تقريبًا هي وحدة ADC (المحول التناظري إلى الرقمي). يمكن لهذه المحولات التناظرية إلى الرقمية قراءة الجهد من أجهزة الاستشعار التناظرية مثل مستشعر درجة الحرارة ومستشعر الإمالة ومستشعر التيار ومستشعر فليكس وغير ذلك الكثير. لذلك في هذا البرنامج التعليمي سوف نتعلم كيفية استخدام ADC في MSP430G2 لقراءة الفولتية التناظرية باستخدام Energia IDE. سنقوم بتوصيل مقياس جهد صغير بلوحة MSP ونوفر جهدًا متغيرًا إلى دبوس تناظري ، ونقرأ الجهد ونعرضه على الشاشة التسلسلية.
فهم وحدة ADC:
صدقني ، لن يستغرق الأمر 10 دقائق للاتصال وبرمجة MSP430G2 لقراءة الجهد التناظري. ولكن ، دعونا نقضي بعض الوقت في فهم وحدة ADC في لوحة MSP حتى نتمكن من استخدامها بفعالية في جميع مشاريعنا القادمة.
الميكروكونترولر هو جهاز رقمي ، مما يعني أنه يمكنه فهم 1 و 0 فقط. لكن في العالم الحقيقي ، كل شيء تقريبًا مثل درجة الحرارة والرطوبة وسرعة الرياح وما إلى ذلك هو تناظري في الطبيعة. من أجل التفاعل مع هذه التغييرات التناظرية ، يستخدم المتحكم الدقيق وحدة تسمى ADC. هناك العديد من الأنواع المختلفة من وحدات ADC المتاحة ، النوع المستخدم في MSP الخاص بنا هو SAR 8 قناة 10 بت ADC.
التقريب المتتالي (SAR) ADC: يعمل SAR ADC بمساعدة أداة المقارنة وبعض المحادثات المنطقية. يستخدم هذا النوع من ADC جهدًا مرجعيًا (وهو متغير) ويقارن جهد الدخل بالجهد المرجعي باستخدام المقارنة ، ويتم حفظ الفرق ، الذي سيكون ناتجًا رقميًا ، من البت الأكثر أهمية (MSB). تعتمد سرعة المقارنة على تردد الساعة (Fosc) الذي يعمل عليه MSP.
دقة 10 بت: هذا ADC عبارة عن 8 قنوات 10 بت ADC. هنا يشير المصطلح 8 قناة إلى وجود 8 دبابيس ADC يمكننا من خلالها قياس الجهد التناظري. يشير المصطلح 10 بت إلى دقة ADC. 10 بت تعني 2 أس 10 (2 10) وهو 1024. هذا هو عدد خطوات العينة لـ ADC الخاص بنا ، وبالتالي فإن نطاق قيم ADC سيكون من 0 إلى 1023. ستزيد القيمة من 0 إلى 1023 بناءً على قيمة الجهد لكل خطوة ، والتي يمكن حسابها باستخدام الصيغة أدناه
ملاحظة: بشكل افتراضي في Energia ، سيتم ضبط الجهد المرجعي على Vcc (~ 3 فولت) ، يمكنك تغيير الجهد المرجعي باستخدام خيار analogReference () .
تحقق أيضًا من كيفية ربط ADC بوحدات التحكم الدقيقة الأخرى:
- كيفية استخدام ADC في Arduino Uno؟
- ربط ADC0808 مع متحكم 8051
- استخدام وحدة ADC لوحدة التحكم الدقيقة PIC
- دروس Raspberry Pi ADC
مخطط الرسم البياني:
في برنامجنا التعليمي السابق ، تعلمنا بالفعل كيفية توصيل شاشة LCD بـ MSP430G2 ، والآن سنقوم فقط بإضافة مقياس جهد إلى MSP430 لتزويده بجهد متغير وعرض قيمة الجهد على شاشة LCD. إذا لم تكن على دراية بتوصيل شاشة LCD ، فارجع إلى الرابط أعلاه واقرأه ، لأنني سأتخطى المعلومات لتجنب التوبة. فيما يلي مخطط الدائرة الكاملة للمشروع.
كما ترى ، هناك نوعان من مقاييس الجهد المستخدمة هنا ، أحدهما يستخدم لضبط تباين شاشة LCD بينما الآخر يستخدم لتزويد اللوحة بجهد متغير. في مقياس الجهد هذا ، يتم توصيل أحد الأطراف القصوى لمقياس الجهد بـ Vcc والطرف الآخر متصل بالأرض. الدبوس المركزي (السلك الأزرق) متصل بالدبوس P1.7. سيوفر هذا الدبوس P1.7 جهدًا متغيرًا من 0 فولت (أرضي) إلى 3.5 فولت (Vcc). لذلك علينا برمجة الدبوس P1.7 لقراءة هذا الجهد المتغير وعرضه على شاشة LCD.
في Energia ، نحتاج إلى معرفة القناة التناظرية التي ينتمي إليها الدبوس P1.7؟ يمكن العثور على هذا بالرجوع إلى الصورة أدناه
يمكنك رؤية دبوس P1.7 على الجانب الأيمن ، هذا الدبوس ينتمي إلى A7 (القناة 7). وبالمثل ، يمكننا العثور على رقم القناة الخاص بالدبابيس الأخرى أيضًا. يمكنك استخدام أي دبابيس من A0 إلى A7 لقراءة الفولتية التناظرية هنا لقد اخترت A7.
برمجة MSP430 الخاص بك لـ ADC:
إن برمجة MSP430 لقراءة الجهد التناظري أمر بسيط للغاية. في هذا البرنامج سوف يقرأ التناظرية للقيمة ويحسب الجهد بهذه القيمة ثم يعرض كلاهما على شاشة LCD. و برنامج كامل ويمكن الاطلاع على الجزء السفلي من هذه الصفحة، مما أدناه أنا شرح البرنامج في قصاصات لمساعدتك على فهم أفضل.
نبدأ بتحديد دبابيس LCD. هذه تحدد أي طرف من MSP430 تتصل دبابيس LCD. يمكنك إحالة اتصالك للتأكد من أن الدبابيس متصلة على التوالي
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
بعد ذلك ، نقوم بتضمين ملف الرأس لشاشة LCD. هذا يستدعي المكتبة التي تحتوي على الكود الخاص بكيفية اتصال MSP بشاشة LCD. سيتم تثبيت هذه المكتبة في Energia IDE افتراضيًا لذلك لا تحتاج إلى عناء إضافتها. تأكد أيضًا من استدعاء الوظيفة Liquid Crystal بأسماء الدبوس التي حددناها للتو أعلاه.
#تضمن
داخل وظيفة الإعداد () الخاصة بنا ، سنقوم فقط بإعطاء رسالة تمهيدية ليتم عرضها على شاشة LCD. لا أتعمق كثيرًا لأننا تعلمنا بالفعل كيفية استخدام LCD مع MSP430G2.
lcd.begin (16 ، 2) ؛ // نحن نستخدم شاشة عرض LCD 16 * 2 lcd.setCursor (0،0) ؛ // ضع المؤشر على الصف الأول في العمود الأول lcd.print ("MSP430G2553") ؛ // عرض رسالة تمهيدية lcd.setCursor (0 ، 1) ؛ // اضبط المؤشر على العمود الأول من الصف الثاني lcd.print ("- CircuitDigest") ؛ // عرض رسالة تمهيدية
أخيرًا ، داخل وظيفة الحلقة اللانهائية () ، نبدأ في قراءة الجهد الموفر للدبوس A7. كما ناقشنا بالفعل ، فإن الميكروكونترولر هو جهاز رقمي ولا يمكنه قراءة مستوى الفولتية مباشرة. باستخدام تقنية SAR ، يتم تعيين مستوى الجهد من 0 إلى 1024. تسمى هذه القيم بقيم ADC ، للحصول على قيمة ADC هذه ببساطة استخدم السطر التالي
int val = analogRead (A7) ؛ // اقرأ قيمة ADC من الدبوس A7
هنا يتم استخدام الوظيفة analogRead () لقراءة القيمة التناظرية للدبوس ، وقد حددنا A7 بداخلها لأننا قمنا بتوصيل الجهد المتغير بالدبوس P1.7. أخيرًا نحفظ هذه القيمة في متغير يسمى " val ". نوع هذا المتغير هو عدد صحيح لأننا سنحصل فقط على قيم تتراوح من 0 إلى 1024 ليتم تخزينها في هذا المتغير.
ستكون الخطوة التالية هي حساب قيمة الجهد من قيمة ADC. للقيام بذلك لدينا الصيغ التالية
الجهد = (قيمة ADC / قرار ADC) * الجهد المرجعي
في حالتنا نحن نعلم بالفعل أن دقة ADC لوحدة التحكم الدقيقة الخاصة بنا هي 1024. تم العثور على قيمة ADC أيضًا في السطر السابق وتخزين المتغير المسمى val. و الجهد إشارة يساوي الجهد الذي متحكم يعمل. عندما يتم تشغيل اللوحة MSP430 عبر كابل USB ، يكون جهد التشغيل 3.6 فولت. يمكنك أيضًا قياس جهد التشغيل باستخدام مقياس متعدد عبر Vcc والدبوس الأرضي على اللوحة. لذا فإن الصيغة أعلاه تناسب حالتنا كما هو موضح أدناه
الجهد العائم = (تعويم (فال) / 1024) * 3.6 ؛ // الصيغ لتحويل قيمة ADC إلى جهد
قد يتم الخلط بينك وبين تعويم الخط (val). يستخدم هذا لتحويل المتغير "val" من نوع البيانات int إلى نوع البيانات "float". هذا التحويل ضروري لأننا فقط إذا حصلنا على نتيجة val / 1024 في الطفو يمكننا ضربها 3.6. إذا تم تلقي القيمة بعدد صحيح ، فستكون دائمًا 0 وستكون النتيجة أيضًا صفرًا. بمجرد حساب قيمة ADC والجهد ، كل ما تبقى هو عرض النتيجة على شاشة LCD والتي يمكن القيام بها باستخدام الأسطر التالية
lcd.setCursor (0 ، 0) ؛ // اضبط المؤشر على العمود 0 ، السطر 0 lcd.print ("ADC Val:") ؛ lcd.print (فال) ؛ // عرض قيمة ADC lcd.setCursor (0 ، 1) ؛ // اضبط المؤشر على العمود 0 ، السطر 1 lcd.print ("الجهد:") ؛ lcd.print (الجهد) ؛ // عرض الجهد
هنا قمنا بعرض قيمة ADC في السطر الأول وقيمة الجهد في السطر الثاني. أخيرًا ، نعطي تأخيرًا قدره 100 مللي ثانية ونزيل شاشة LCD. كانت هذه هي القيمة التي سيتم تحديثها لكل 100 ميل.
اختبار نتيجتك!
أخيرًا ، نأتي إلى الجزء الممتع ، وهو اختبار برنامجنا والتلاعب به. فقط قم بإجراء التوصيلات كما هو موضح في مخطط الدائرة. لقد استخدمت لوحًا صغيرًا لإجراء اتصالاتي واستخدمت أسلاك توصيل لتوصيل اللوح بـ MSP430. بمجرد الانتهاء من الاتصالات ، بدا لي كما يلي.
ثم قم بتحميل البرنامج الموضح أدناه على لوحة MSP430 من خلال Energia IDE. يجب أن تكون قادرًا على رؤية نص المقدمة على شاشة LCD ، إذا لم تقم بضبط تباين شاشة LCD باستخدام مقياس الجهد حتى ترى كلمات واضحة. حاول أيضًا الضغط على زر إعادة الضبط. إذا عملت الأشياء كما هو متوقع ، فيجب أن تكون قادرًا على رؤية الشاشة التالية.
قم الآن بتغيير مقياس الجهد ويجب أن ترى أيضًا أن الجهد المعروض في شاشة LCD يتنوع. دعنا نتحقق مما إذا كنا نقيس الجهد بشكل صحيح للقيام بذلك ، استخدم مقياسًا متعددًا لقياس الجهد عبر مركز POT والأرض. يجب أن يكون الجهد المعروض على جهاز القياس المتعدد قريبًا من القيمة المعروضة على شاشة LCD كما هو موضح في الصورة أدناه.
هذا كل شيء ، لقد تعلمنا كيفية قياس الجهد التناظري باستخدام ADC للوحة MSP430. الآن يمكننا ربط العديد من أجهزة الاستشعار التناظرية بلوحنا لقراءة معلمات الوقت الفعلي. آمل أن تكون قد فهمت البرنامج التعليمي واستمتعت بتعلمه ، إذا كان لديك أي مشاكل ، فيرجى التواصل من خلال قسم التعليقات أدناه أو من خلال المنتديات. دعنا نلحق ببرنامج تعليمي آخر لـ MSP430 بموضوع جديد آخر.