جدول المحتويات:

دبوس Arduino AREF: 6 خطوات
دبوس Arduino AREF: 6 خطوات

فيديو: دبوس Arduino AREF: 6 خطوات

فيديو: دبوس Arduino AREF: 6 خطوات
فيديو: Using HT1621 6 Digits Seven Segment LCD Display | Lesson 103: Arduino Step By Step Course 2024, يوليو
Anonim
دبوس اردوينو عارف
دبوس اردوينو عارف

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

الخطوة 1: المراجعة

مراجعة!
مراجعة!

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

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

يمكن إثبات ذلك بسهولة عن طريق توصيل Arduino Uno بـ USB ووضع مجموعة متعددة المقاييس لقياس الجهد عبر دبابيس 5V و GND. ستعود بعض اللوحات منخفضة تصل إلى 4.8 فولت ، وبعضها أعلى ولكن لا يزال أقل من 5 فولت. لذلك ، إذا كنت تسعى للحصول على الدقة ، فقم بتشغيل لوحتك من مصدر طاقة خارجي عبر مقبس DC أو دبوس Vin - مثل 9V DC. ثم بعد ذلك يمر عبر دائرة منظم الطاقة ، سيكون لديك 5 فولت لطيف ، على سبيل المثال الصورة.

هذا مهم لأن دقة أي قيم analogRead () ستتأثر بعدم وجود 5 فولت حقيقي إذا لم يكن لديك أي خيار ، يمكنك استخدام بعض الرياضيات في الرسم الخاص بك للتعويض عن انخفاض الجهد. على سبيل المثال ، إذا كان جهدك 4.8 فولت - فإن النطاق التناظري للقراءة () من 0 ~ 1023 سوف يرتبط بـ 0 ~ 4.8 فولت وليس 0 ~ 5 فولت. قد يبدو هذا تافهًا ، ولكن إذا كنت تستخدم مستشعرًا يُرجع قيمة كجهد كهربائي (على سبيل المثال ، مستشعر درجة الحرارة TMP36) - ستكون القيمة المحسوبة خاطئة. لذلك من أجل الدقة ، استخدم مصدر طاقة خارجي.

الخطوة 2: لماذا تقوم AnalogRead () بإرجاع قيمة بين 0 و 1023؟

لماذا يُرجع AnalogRead () قيمة بين 0 و 1023؟
لماذا يُرجع AnalogRead () قيمة بين 0 و 1023؟

هذا يرجع إلى قرار ADC. الدقة (لهذه المقالة) هي الدرجة التي يمكن بها تمثيل شيء ما عدديًا. كلما زادت الدقة ، زادت الدقة التي يمكن بها تمثيل شيء ما. نقيس الدقة من حيث عدد بتات القرار.

على سبيل المثال ، تسمح الدقة 1 بت فقط بقيمتين (اثنان أس واحد) - صفر وواحد. تسمح الدقة المكونة من 2 بت بأربع قيم (اثنان أس اثنين) - صفر وواحد واثنان وثلاثة. إذا حاولنا قياس نطاق خمسة فولت بدقة ثنائية بت ، وكان الجهد المقاس أربعة فولت ، فإن ADC الخاص بنا سيعيد القيمة العددية لـ 3 - حيث تقع أربعة فولت بين 3.75 و 5 فولت. من الأسهل تخيل هذا مع الصورة.

لذلك مع مثالنا ADC بدقة 2 بت ، يمكن فقط تمثيل الجهد بأربع قيم ناتجة محتملة. إذا انخفض جهد الدخل بين 0 و 1.25 ، فإن ADC ترجع 0 رقميًا ؛ إذا انخفض الجهد الكهربي بين 1.25 و 2.5 ، فإن ADC ترجع قيمة عددية قدرها 1. وهكذا. مع نطاق ADC الخاص بـ Arduino من 0 إلى 1023 - لدينا 1024 قيمة محتملة - أو 2 إلى قوة 10. لذا فإن Arduinos لدينا لديه ADC بدقة 10 بت.

الخطوة 3: إذن ما هو عارف؟

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

بالنسبة للوحات Arduino الأكثر شهرة مثل لوحات Uno و Mega و Duemilanove و Leonardo / Yún ، فإن جهد التشغيل يبلغ 5 فولت. إذا كان لديك لوحة Arduino Due ، فإن جهد التشغيل هو 3.3 فولت. إذا كان لديك شيء آخر - تحقق من صفحة منتج Arduino أو اسأل مورد اللوحة الخاصة بك.

لذلك إذا كان لديك جهد مرجعي يبلغ 5 فولت ، فإن كل وحدة يتم إرجاعها بواسطة analogRead () تقدر بقيمة 0.00488 فولت (يتم حساب ذلك بقسمة 1024 على 5 فولت). ماذا لو أردنا قياس الفولتية بين 0 و 2 ، أو 0 و 4.6؟ كيف يعرف ADC ما هو 100٪ من نطاق الجهد لدينا؟

وهنا يكمن سبب دبوس عارف. عارف تعني مرجع تناظري. يسمح لنا بتغذية Arduino بجهد مرجعي من مصدر طاقة خارجي. على سبيل المثال ، إذا أردنا قياس الفولتية بحد أقصى 3.3 فولت ، فسنقوم بإدخال 3.3 فولت سلس لطيف في دبوس AREF - ربما من منظم الجهد IC.

ثم تمثل كل خطوة من خطوات ADC حوالي 3.22 مللي فولت (قسِّم 1024 إلى 3.3). لاحظ أن أقل جهد مرجعي يمكنك الحصول عليه هو 1.1 فولت. هناك نوعان من أشكال AREF - داخلي وخارجي ، لذلك دعونا نتحقق منها.

الخطوة 4: عارف خارجي

AREF الخارجي هو المكان الذي تزود فيه جهدًا مرجعيًا خارجيًا للوحة Arduino. يمكن أن يأتي هذا من مصدر طاقة منظم ، أو إذا كنت بحاجة إلى 3.3 فولت ، فيمكنك الحصول عليه من دبوس Arduino's 3.3V. إذا كنت تستخدم مصدر طاقة خارجيًا ، فتأكد من توصيل GND بدبوس GND الخاص بـ Arduino. أو إذا كنت تستخدم مصدر Arduno 3.3 فولت - فقط قم بتشغيل وصلة مرور من دبوس 3.3 فولت إلى دبوس AREF.

لتنشيط برنامج AREF الخارجي ، استخدم ما يلي في الإعداد الباطل ():

analogReference (خارجي) ؛ // استخدم عارف للجهد المرجعي

يقوم هذا بتعيين الجهد المرجعي لكل ما قمت بتوصيله بمسمار AREF - والذي سيكون له بالطبع جهد كهربي بين 1.1 فولت والجهد التشغيلي للوحة. ملاحظة مهمة جدًا - عند استخدام مرجع جهد خارجي ، يجب عليك ضبط المرجع التناظري على خارجي قبل استخدام analogRead (). سيمنعك هذا من تقصير الجهد المرجعي الداخلي النشط ودبوس AREF ، مما قد يؤدي إلى تلف وحدة التحكم الدقيقة على اللوحة. إذا لزم الأمر للتطبيق الخاص بك ، يمكنك العودة إلى جهد تشغيل اللوحة لـ AREF (أي - العودة إلى الوضع الطبيعي) مع ما يلي

التناظرية المرجع (الافتراضي) ؛

الآن لشرح عارف الخارجي في العمل. باستخدام AREF 3.3 فولت ، يقيس الرسم التالي الجهد من A0 ويعرض النسبة المئوية لإجمالي AREF والجهد المحسوب:

# تضمين "LiquidCrystal.h"

LiquidCrystal LCD (8 ، 9 ، 4 ، 5 ، 6 ، 7) ؛

المدخلات التناظرية int = 0 ؛ // دبوس لدينا التناظرية

int analogamount = 0 ؛ // يخزن النسبة المئوية لتعويم القيمة الواردة = 0 ؛ // المستخدمة لتخزين قيمة النسبة المئوية للجهد العائم = 0 ؛ // تستخدم لتخزين قيمة الجهد

الإعداد باطل()

{lcd.begin (16، 2) ؛ analogReference (خارجي) ؛ // استخدم AREF للجهد المرجعي}

حلقة فارغة()

{lcd.clear () ، analogamount = analogRead (إدخال تناظري) ؛ النسبة المئوية = (القيمة التناظرية / 1024.00) * 100 ؛ الجهد = التناظرية * 3.222 ؛ // بالميليفولت lcd.setCursor (0 ، 0) ؛ lcd.print ("٪ من AREF:") ؛ lcd.print (النسبة المئوية ، 2) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("A0 (بالسيارات):") ؛ lcd.println (الجهد ، 2) ؛ تأخير (250) ؛ }

تظهر نتائج الرسم أعلاه في الفيديو.

الخطوة 5: عارف داخلي

يمكن أيضًا للميكروكونترولر الموجودة على لوحات Arduino أن تولد جهدًا مرجعيًا داخليًا يبلغ 1.1 فولت ويمكننا استخدامه في أعمال AREF. ببساطة استخدم الخط:

تمثيلي المرجع (داخلي) ؛

بالنسبة للوحات Arduino Mega ، استخدم:

المرجع التناظري (INTERNAL1V1) ؛

في الإعداد باطل () وأنت خارج. إذا كان لديك Arduino Mega ، فهناك أيضًا جهد مرجعي 2.56V متاح والذي يتم تنشيطه باستخدام:

المرجع التناظري (INTERNAL2V56) ؛

أخيرًا - قبل الاستقرار على النتائج من دبوس AREF الخاص بك ، قم دائمًا بمعايرة القراءات مقابل مقياس متعدد جيد معروف.

استنتاج

تمنحك وظيفة AREF مزيدًا من المرونة في قياس الإشارات التناظرية.

هذا المنشور يقدمه لك pmdway.com - كل شيء للصانعين وعشاق الإلكترونيات ، مع التوصيل المجاني في جميع أنحاء العالم.

موصى به: