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

اردوينو مقياس فولت دقيق ودقيق (0-90 فولت تيار مستمر): 3 خطوات
اردوينو مقياس فولت دقيق ودقيق (0-90 فولت تيار مستمر): 3 خطوات

فيديو: اردوينو مقياس فولت دقيق ودقيق (0-90 فولت تيار مستمر): 3 خطوات

فيديو: اردوينو مقياس فولت دقيق ودقيق (0-90 فولت تيار مستمر): 3 خطوات
فيديو: Precise & Accurate Voltage Arduino | With CODE 2024, شهر نوفمبر
Anonim

في هذا الدليل ، قمت ببناء مقياس الفولتميتر لقياس الفولتية العالية DC (0-90 فولت) بدقة ودقة نسبية باستخدام Arduino Nano.

كانت قياسات الاختبار التي أجريتها دقيقة بدرجة كافية ، معظمها في حدود 0.3 فولت من الجهد الفعلي المقاس بمقياس الفولتميتر القياسي (استخدمت Astro AI DM6000AR). هذا قريب بما يكفي لاستخدامي المقصود للجهاز.

لأرشفة هذا ، استخدمت مرجع جهد (4.096 فولت) ومقسم جهد.

من ناحية الكود ، استخدمت ، بالطبع ، خيار "المرجع الخارجي" لخيار Arduino Nano ومثال "Smoothing" في دروس Arduino التعليمية.

اللوازم

1 × اردوينو نانو - رابط

1 × شاشة Oled (SSD 1306) - رابط

1 × 1/4 واط 1٪ مقاومات - 1 كيلو أوم - وصلة

1 × 1/4 واط 1٪ مقاومات - 220 كيلو أوم - وصلة

1 × 1/4 واط 1٪ مقاومات - 10 كيلو أوم - وصلة

1 × 4.096 فولت LM4040DIZ-4.1 مرجع الجهد - رابط

اللوح والأسلاك - وصلة

Astro AI DM6000AR - رابط

بنك الطاقة USB - وصلة

بطاريات 9 فولت - وصلة

CanadianWinters هو أحد المشاركين في برنامج Amazon Services LLC Associates ، وهو برنامج إعلان تابع مصمم لتوفير وسيلة للمواقع لكسب الرسوم من خلال الارتباط بموقع Amazon.com والمواقع التابعة. باستخدام هذه الروابط ، بصفتي أحد شركاء Amazon ، أكسب من عمليات الشراء المؤهلة ، حتى إذا اشتريت شيئًا آخر - ولن يكلفك ذلك أي شيء.

الخطوة 1: المخططات

المخططات
المخططات
المخططات
المخططات

لقد قمت بتوصيل جميع الأجزاء حسب المخططات أعلاه. على وجه الخصوص ، اخترت مرجع الجهد 4.096 للبقاء قريبًا قدر الإمكان من علامة 5 فولت لتجنب فقدان الدقة.

بعد ورقة البيانات ، اخترت المقاوم 1K أوم لمرجع الجهد على الرغم من إمكانية استخدام قيمة مختلفة. يتم توفير الجهد للإشارة من دبوس Nano 5v.

فكرة الدائرة هي أن جهد التيار المستمر المراد قياسه يمر عبر مقاوم جهد. الجهد المقاس ثم يدخل في الدبوس التمثيلي في Arduino ليتم أخذ عينات منه وتنعيمه وإعادة تحجيمه وعرضه على شاشة OLed.

حاولت أن أبقي الأمور بسيطة:)

الخطوة 2: الكود وحسابات المقاوم

تم اختيار قيم المقاومات لأنه من المستحسن (إذا لم أكن مخطئًا ، فهذا موجود في ورقة بيانات Arduino / Atmega) للحفاظ على المقاومة أقل من 10 كيلو أوم.

لتبسيط الأمور ، أنشأت جدول بيانات يعمل على أتمتة العمليات الحسابية في حال كنت تريد استخدام قيم مقاومة مختلفة: رابط إلى ورقة Google

هذا هو الكود الذي استخدمته لهذا المشروع:

#يشمل

# تضمين U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0) ؛ // (الدوران ، [إعادة التعيين]) الجهد العائم = 0 ؛ // المستخدمة لتخزين قيمة الجهد تعويم Radjust = 0.043459459 ؛ // عامل مقسم الجهد (R2 / R1 + R2) عائم vbat = 0 ؛ // الجهد النهائي بعد العيارات- الجهد الكهربائي للبطارية عائم Vref = 4.113 ؛ // مرجع الجهد - القيمة الحقيقية المقاسة. القيمة الاسمية 4.096v const int numReadings = 50 ؛ // عدد عينات القراءة - زيادة لمزيد من السلاسة. تقليل لقراءة أسرع. قراءات int [numReadings] ؛ // القراءات من المدخلات التناظرية int readIndex = 0 ؛ // فهرس القراءة الحالية المجموع الطويل بدون إشارة = 0 ؛ // متوسط العدد الإجمالي الجاري = 0 ؛ // متغيرات لتحديث الشاشة دون استخدام تأخير بدون توقيع طويل سابق ميليس = 0 ؛ // سيخزن آخر مرة تم فيها تحديث الشاشة // لن تتغير الثوابت: فاصل زمني طويل = 50 ؛ // الفاصل الزمني الذي يتم فيه تحديث الشاشة (مللي ثانية) إعداد باطل (باطل) {analogReference (خارجي) ؛ // استخدم عارف للجهد المرجعي 4.096. الجهد المرجعي الحقيقي الخاص بي هو 4.113v u8g2.begin () ؛ من أجل (int thisReading = 0 ؛ thisReading = numReadings) {// … التفاف حول البداية: readIndex = 0 ؛ } // حساب المتوسط: المتوسط = (total / numReadings) ؛ الجهد = متوسط * (Vref / 1023.0) ؛ //4.113 هو Vref vbat = الجهد / Radjust ؛ // ضبط التأخير لتحديث الشاشة باستخدام Millis إذا (currentMillis - previousMillis> = الفاصل الزمني) {// حفظ آخر مرة تم فيها تحديث الشاشة السابق Millis = currentMillis ؛ u8g2.clearBuffer () ، // مسح القائمة الداخلية // عرض حزمة الجهد u8g2.setFont (u8g2_font_fub20_tr) ؛ // 20px font u8g2.setCursor (1 ، 20) ؛ u8g2.print (vbat، 2) ؛ u8g2.setFont (u8g2_font_8x13B_mr) ، // خط 10 بكسل u8g2.setCursor (76 ، 20) ؛ u8g2.print ("فولت") ؛ u8g2.setCursor (1 ، 40) ؛ u8g2.print ("CanadianWinters") ؛ u8g2.setCursor (1 ، 60) ؛ u8g2.print ("الجهد الدقيق") ؛ } u8g2.sendBuffer () ، // نقل الذاكرة الداخلية إلى تأخير العرض (1) ؛ }

يرجى ملاحظة أنني أشعر بالصدأ قليلاً مع ترميز Arduino ، لذلك إذا وجدت أي خطأ أو طريقة لتحسين الكود ، فأنا منفتح على الاقتراحات:)

الخطوة 3: دعنا نختبرها

دعونا نختبرها!
دعونا نختبرها!
دعونا نختبرها!
دعونا نختبرها!
دعونا نختبرها!
دعونا نختبرها!

لاختبار هذا الفولتميتر ، استخدمت بطاريات 8 × 9 فولت التي حصلت عليها من متجر محلي. أخطط لاستخدام مقياس الفولتميتر هذا لقياس الجهد على حزم بطاريات الدراجات الكهربائية الخاصة بي (تحتوي على فولتية تتراوح من 24-60 فولت مع 72 فولت في بعض الأحيان).

بمجرد تعبئة الإلكترونيات في ثنائي الفينيل متعدد الكلور وصندوق صغير ، سيؤدي ذلك إلى جعل مقياس حزمة بطارية محمولًا لطيفًا. يمكن تخصيص الرسومات والخطوط على OLED لتناسب احتياجاتك (على سبيل المثال ، خط أكبر لسهولة القراءة).

كان هدفي هو الحصول على قراءة للجهد على عداد Oled / Arduino ليس بعيدًا جدًا عن جهاز Digital Multi Meter الخاص بي. كنت أهدف إلى +/- 0 ، 3v max delta. كما ترون من الفيديو ، تمكنت من أرشفة هذا باستثناء الجزء العلوي من القياسات.

آمل أن تكون قد استمتعت بهذا Instructable واسمحوا لي أن أعرف أفكارك!

موصى به: