الفولتميتر على الجهد المرجعي اردوينو. الفولتميتر الرقمي على اردوينو مع اتصال بجهاز الكمبيوتر عبر المنفذ التسلسلي

23.05.2019

البيانات الأولية والمراجعة

إذن لدينا في هذه المرحلة الفولتميتر ذو الجهد الثابت بحد أقصى 0..20 فولت (انظر الجزء السابق). الآن نضيف إليه 0..5 أمبير. للقيام بذلك، نقوم بتعديل الدائرة قليلاً - ستصبح دائرة تمريرية، أي أنها تحتوي على مدخلات ومخرجات.

لقد قمت بإزالة الجزء المتعلق بالشاشة على شاشة LCD - ولن يتغير. من حيث المبدأ، العنصر الرئيسي الجديد هو تحويلة 0.1 أوم Rx. تعمل سلسلة R1-C1-VD1 على حماية المدخلات التناظرية. فمن المنطقي تثبيت نفسه عند الإدخال A0. نظرًا لأننا نفترض تيارات كبيرة إلى حد ما، فهناك متطلبات التثبيت - يجب أن تكون خطوط الطاقة مصنوعة بسلك سميك إلى حد ما ومتصلة بأطراف التحويل مباشرة (بمعنى آخر، ملحومة)، وإلا فإن القراءات ستكون بعيدة عن الواقع. هناك أيضًا ملاحظة حول التيار - من حيث المبدأ، يسمح لك الجهد المرجعي البالغ 1.1 فولت بتسجيله على التحويلة 0.1 أوم تيار يصل إلى 11 أمبير بدقة أسوأ قليلاً من 0.01 أ، ولكن عندما ينخفض ​​هذا الجهد عبر Rx، ستتجاوز الطاقة المحررة 10 واط، وهو أمر غير ممتع على الإطلاق. لحل المشكلة، يمكنك استخدام مكبر للصوت مع كسب 11 باستخدام مضخم تشغيلي عالي الجودة وتحويلة 10 مللي أوم (0.01 أوم). لكن في الوقت الحالي، لن نقوم بتعقيد حياتنا ونقصر التيار على 5A (في هذه الحالة، يمكن اختيار طاقة Rx بترتيب 3-5 واط).

في هذه المرحلة، كنت أنتظر مفاجأة - اتضح أن ADC الخاص بوحدة التحكم كان به إزاحة صفرية كبيرة إلى حد ما - حوالي -3 مللي فولت. وهذا يعني أن ADC ببساطة لا يرى إشارات أقل من 3 مللي فولت، وتكون الإشارات ذات المستوى الأعلى قليلاً مرئية مع عدم دقة مميزة تبلغ -3 مللي فولت، مما يفسد الخطية في بداية النطاق. لم يقدم البحث السريع أي إشارات واضحة لمثل هذه المشكلة (الإزاحة الصفرية أمر طبيعي، ولكن يجب أن تكون أصغر بكثير)، لذلك من المحتمل جدًا أن تكون هذه مشكلة في مثيل Atmega 328 محدد شقين - في الجهد - خطوة برمجية في بداية النطاق (يبدأ العرض عند 0.06 فولت)، للتيار - مقاوم سحب للحافلة 5 فولت. يشار إلى المقاوم بخط منقط.

مصدر

يمكن تنزيل النسخة الكاملة من مقياس الفولت أمبير (في إصدار I2C) من الرابط الموجود في نهاية المقالة.بعد ذلك سأعرض التغييرات على الكود المصدري. تمت إضافة قراءة للمدخل التناظري A1 بنفس متوسط ​​الفولتميتر. في جوهر الأمر، هذا هو نفس الفولتميتر، فقط بدون مقسم، ونحصل على الأمبيرات باستخدام صيغة أوم: I = U/Rx (على سبيل المثال، إذا انخفض الجهد عبر Rx = 0.01 فولت، فإن التيار هو 0.1A). لقد قدمت أيضًا ثابت الكسب الحالي AmpMult - للمستقبل. من المحتمل أن يكون من الضروري مطابقة ثابت AmpRx مع مقاومة التحويل لمراعاة عدم دقة مقاومة التحويل. حسنًا، نظرًا لأن هذا مقياس فولت أمبير بالفعل ولا يزال هناك مساحة متبقية على شاشة 1602، فسيظل عرض استهلاك الطاقة الحالي بالواط، والحصول على وظائف إضافية بسيطة.

.... // الإدخال التناظري #define PIN_VOLT A0 #define PIN_AMP A1 // الجهد المرجعي الداخلي (حدد) const float VRef = 1.10; // معامل مقسم مقاومة الإدخال (Rh + Rl) / Rl. في 0.2) إنفولت += 3؛ // تحويل إلى فولت (في: 0..1023 -> (0..VRef) تم تحجيمه بواسطة Mult) float Volt = InVolt * VoltMult * VRef / 1023; float Amp = InAmp * VRef / AmpMult / AmpRx / 1023 ؛ // لمراعاة الانخفاض في التحويلة، قم بإلغاء التعليق بسطرين //float RxVolt = InAmp * VRef / 1023 / AmpMult; // فولت -= RxVolt; تعويم وات = فولت * أمبير؛ // بيانات الإخراج LCD.setCursor (8، 0)؛ شاشات الكريستال السائل. طباعة (واط)؛ شاشات الكريستال السائل.طباعة("W"); شاشات الكريستال السائل.setCursor(0, 1); شاشات الكريستال السائل. طباعة (فولت)؛ شاشات الكريستال السائل.طباعة("V"); شاشات الكريستال السائل.setCursor(8, 1); شاشات الكريستال السائل. طباعة (أمبير)؛ شاشات الكريستال السائل.طباعة("أ"); )

روابط

  • مكتبة LiquidCrystal_I2C، والتي تسمح لك بتعيين التثبيت

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


تنويه: المقال مخصص لعشاق الاردوينو العاديين الذين عادة لا يكونون على دراية ببرمجة الأندرويد، لذلك، كما في المقالة السابقة، سنقوم بإنشاء تطبيق لهاتف ذكي باستخدام بيئة التطوير المرئية App Inventor 2 لتطبيقات الأندرويد.
لإنشاء مقياس فولتميتر يعمل بتقنية البلوتوث، نحتاج إلى كتابة برنامجين مستقلين نسبيًا: رسم تخطيطي لـ Arduino وتطبيق لنظام Android.
أولاً، يجب أن تعلم أن هناك ثلاثة خيارات رئيسية لقياس الجهد باستخدام الأردوينو، بغض النظر عن المكان الذي تريد إخراج المعلومات فيه: إلى منفذ com، أو إلى شاشة متصلة بالاردوينو، أو إلى هاتف ذكي.
الحالة الأولى: قياسات الجهد حتى 5 فولت. هنا يكفي سطر أو سطرين من التعليمات البرمجية، ويتم توفير الجهد مباشرة إلى الطرف A0:
قيمة int =analogRead(0);/قراءة القراءات من A0
الجهد = (القيمة / 1023.0) * 5؛ // صحيح فقط إذا كان Vcc = 5.0 فولت
الحالة الثانية: لقياس الفولتية الأكبر من 5 فولت يستخدم مقسم الجهد. الدائرة بسيطة جدًا، وكذلك الكود.

رسم

int AnalogInput = A0;
تعويم فال = 0.0؛
تعويم الجهد = 0.0؛
تعويم R1 = 100000.0؛ //فين البطارية-> 100 كيلو -> A0
تعويم R2 = 10000.0؛ //Gnd البطارية -> Arduino Gnd وArduino Gnd -> 10K -> A0
قيمة كثافة العمليات = 0؛

الإعداد باطل() (
Serial.begin(9600);
pinMode(analogInput, INPUT);
}

حلقة فارغة() (
القيمة = التناظرية(analogInput);
فال = (القيمة * 4.7) / 1024.0؛
الجهد = فال / (R2/(R1+R2));
Serial.println (الجهد)؛
تأخير (500)؛
}


اردوينو أونو
وحدة بلوتوث
الحالة الثالثة. عندما تحتاج إلى الحصول على معلومات أكثر دقة حول الجهد، يجب عليك استخدام جهد مرجعي وليس جهد المصدر، والذي يمكن أن يختلف قليلاً عند تشغيله بواسطة بطارية، على سبيل المثال، ولكن جهد مثبت Arduino الداخلي البالغ 1.1 فولت الدائرة هي نفسها هنا، لكن الرمز أطول قليلاً. لن أقوم بتحليل هذا الخيار بالتفصيل، لأنه موصوف جيدًا بالفعل في المقالات المواضيعية، لكن الطريقة الثانية كافية بالنسبة لي، نظرًا لأن مصدر الطاقة الخاص بي مستقر، من منفذ USB للكمبيوتر المحمول.
لقد قمنا بفرز قياس الجهد، والآن دعنا ننتقل إلى النصف الثاني من المشروع: إنشاء تطبيق Android. سنقوم بإنشاء التطبيق مباشرة من المتصفح في بيئة التطوير المرئية لتطبيقات Android App Inventor 2. انتقل إلى موقع الويب appinventor.mit.edu/explore، وقم بتسجيل الدخول باستخدام حساب Google الخاص بك، وانقر فوق زر إنشاء مشروع جديد، ومن خلال ببساطة عن طريق سحب وإفلات العناصر سنقوم بإنشاء شيء مثل هذا التصميم:

لقد جعلت الرسومات بسيطة للغاية، إذا كان أي شخص يريد المزيد من الرسومات المثيرة للاهتمام، دعني أذكرك أنه لهذا تحتاج إلى استخدام ملفات .png بخلفية شفافة بدلاً من ملفات .jpeg.
انتقل الآن إلى علامة التبويب "الكتل" وقم بإنشاء منطق التطبيق هناك بشيء من هذا القبيل:


إذا نجح كل شيء، فيمكنك النقر فوق الزر Build وحفظ .apk على جهاز الكمبيوتر الخاص بي، ثم تنزيل التطبيق وتثبيته على هاتفك الذكي، على الرغم من وجود طرق أخرى لتحميل التطبيق. هنا هو أكثر ملاءمة لأي شخص. ونتيجة لذلك، انتهى بي الأمر مع هذا التطبيق:


أدرك أن القليل من الأشخاص يستخدمون بيئة التطوير المرئية App Inventor 2 لتطبيقات Android في مشاريعهم، لذلك قد تطرح العديد من الأسئلة حول العمل فيها. للإجابة على بعض هذه الأسئلة، قمت بعمل فيديو تفصيلي حول كيفية إنشاء مثل هذا التطبيق "من الصفر" (لمشاهدته يجب عليك الانتقال إلى YouTube):

ملاحظة. مجموعة من أكثر من 100 مادة تعليمية عن الاردوينو للمبتدئين والمحترفين

فكرة

فكرة ظهرت أجهزة قياس الجهد والتيار والقدرة والتفريغ وربما الشحن منذ فترة طويلة وليس بالنسبة لي فقط. يمكنك العثور على العديد من الألعاب التي تسمى USB Tester (Doctor) لاختبار أجهزة USB المختلفة. أنا مهتم بجهاز أكثر عالمية إلى حد ما، مستقل عن الواجهة، ولكنه مصمم ببساطة لجهود وتيارات معينة. على سبيل المثال، 0 - 20.00 فولت، 0 - 5.00 أمبير، 0 - 99.99 أمبير. أما بالنسبة للوظائف، فأنا أراها هكذا

  • يعرض الجهد الحالي والتيار، أي متر فولت أمبير. من حيث المبدأ، يمكنك أن تعكس القوة على الفور.
  • عد وعرض القدرات المتراكمة. في ساعات أمبير وعلى الأرجح في ساعات واط.
  • عرض وقت العملية
  • وعلى الأرجح، عتبات قطع الجهد المنخفض والعلوي القابلة للتعديل (حدود التفريغ والشحن)

تطوير

لتنفيذ الحسابات والقياسات نحتاج إلى وحدة تحكم. تذكرت هذه الفكرة من خلال معرفتي بالاردوينو فوحدة التحكم ستكون بسيطة شعبية Atmega328 وسيتم برمجتها في البيئة اردوينو. من وجهة نظر هندسية، ربما لا يكون الاختيار هو الأفضل - وحدة التحكم ثقيلة بعض الشيء بالنسبة للمهمة، ولا يمكن تسمية ADC الخاص بها بالقياس، ولكن... سنحاول.

  • لن نلحم كثيرًا في هذا المشروع. كأساس، سنأخذ وحدة Arduino Pro Mini الجاهزة، نظرًا لأن الصينيين مستعدون لتزويدها بسعر التجزئة بقيمة 1.5 دولار.
  • سيكون جهاز العرض عبارة عن شاشة عرض 1602 - 1.5 دولار أخرى. لدي خيار مع وحدة واجهة I2C، ولكن في هذا المشروع ليست هناك حاجة إليه حقًا (0.7 دولار).
  • من أجل التنمية نحن بحاجة إلى اللوح. في حالتي، هذه لوحة خبز صغيرة مقابل دولار واحد.
  • بالطبع ستحتاج إلى أسلاك وعدد من المقاومات ذات القيم المختلفة. بالنسبة لشاشة 1602 بدون I2C، تحتاج أيضًا إلى تحديد التباين - ويتم ذلك باستخدام مقاومة متغيرة تتراوح من 2 إلى 20 كيلو أوم.
  • لتنفيذ مقياس التيار الكهربائي سوف تحتاج إلى تحويلة. للتقريب الأول، يمكن أن يكون المقاوم 0.1 أوم، 5 واط.
  • لتنفيذ إيقاف التشغيل التلقائي، ستحتاج إلى مرحل مزود بجهات اتصال مصممة لأقصى تيار للجهاز وجهد يساوي جهد الإمداد. للتحكم في المرحل، تحتاج إلى ترانزستور NPN وصمام ثنائي وقائي.
  • سيتم تشغيل الجهاز من مصدر طاقة خارجي، ومن الواضح أنه لا يقل عن 5 فولت. إذا كان مصدر الطاقة يختلف بشكل كبير، فستكون هناك حاجة أيضًا إلى نوع المثبت المتكامل 7805 - فهو سيحدد جهد التتابع.
  • متى يتطلب Arduino Pro Mini محول USB-TTL لتحميل البرنامج الثابت.
  • للإعداد سوف تحتاج إلى جهاز متعدد.

الفولتميتر

أقوم بتنفيذ مقياس فولتميتر بسيط بمدى واحد يتراوح من 0 إلى 20 فولت تقريبًا. هذه الملاحظة مهمة لأن ADC لوحدة التحكم الخاصة بنا لديه سعة 10 بت (1024 قيمة منفصلة)، وبالتالي فإن الخطأ سيكون على الأقل 0.02 فولت (20 / 1024). لتنفيذ الأجهزة، نحتاج إلى إدخال تناظري لوحدة التحكم، ومقسم مصنوع من زوج من المقاومات ونوع من الإخراج (شاشة في النسخة النهائية، يمكن استخدام المنفذ التسلسلي لتصحيح الأخطاء).

مبدأ قياس ADC هو مقارنة الجهد عند المدخل التناظري مع المرجع VRef. يكون خرج ADC دائمًا عددًا صحيحًا - 0 يتوافق مع 0V، و1023 يتوافق مع الجهد VRef. يتم تنفيذ القياس عن طريق أخذ سلسلة من قراءات الجهد المتتابعة ومتوسطها خلال الفترة بين تحديثات القيمة على الشاشة. يعد اختيار الجهد المرجعي أمرًا مهمًا لأنه يستقر على جهد المصدر، والذي قد لا يكون مستقرًا. هذا لا يناسبنا على الإطلاق - سنتخذ كأساس مصدرًا مرجعيًا داخليًا مستقرًا بجهد 1.1 فولت، وتهيئته عن طريق الاتصال بالمرجع التناظري(INTERNAL). سنقوم بعد ذلك بمعايرة قيمتها باستخدام قراءات المتر المتعدد.

يُظهر الرسم البياني الموجود على اليسار متغيرًا مع التحكم المباشر في الشاشة (يتم التحكم فيه ببساطة - راجع الرسم القياسي LiquidCrystal\HelloWorld). على اليمين يوجد خيار I2C، والذي سأستخدمه أكثر. يتيح لك I2C توفير الأسلاك (التي يوجد منها 10 في الإصدار المعتاد، دون احتساب الإضاءة الخلفية). لكن هذا يتطلب وحدة إضافية وتهيئة أكثر تعقيدًا. على أية حال، يجب أولاً التحقق من عرض الأحرف على الوحدة وضبط التباين - للقيام بذلك، ما عليك سوى عرض أي نص بعد التهيئة. يتم ضبط التباين بواسطة المقاوم R1، أو مقاوم مماثل لوحدة I2C.

الإدخال عبارة عن مقسم 1:19، مما يسمح لك بالحصول على جهد أقصى يبلغ حوالي 20 فولت عند Vref = 1.1 (عادةً ما يتم وضع مكثف + صمام ثنائي زينر بالتوازي مع الإدخال للحماية، لكن هذا ليس مهمًا بالنسبة لنا في الوقت الحالي ). المقاومات لها انتشار، وكذلك المرجع Vref لوحدة التحكم، لذلك بعد التجميع نحتاج إلى قياس الجهد (على الأقل العرض) بالتوازي مع جهازنا ومقياس متعدد مرجعي وتحديد Vref في الكود حتى تتطابق القراءات. ومن الجدير بالذكر أيضًا أن أي ADC لديه جهد إزاحة صفر (مما يفسد القراءات في بداية النطاق)، لكننا لن نخوض في ذلك الآن.

سيكون من المهم أيضًا فصل العرض وقياس الأرض. دقة ADC الخاصة بنا أسوأ قليلاً من 1 مللي فولت، مما قد يؤدي إلى حدوث مشكلات إذا كانت الأسلاك غير صحيحة، خاصة على لوحة التجارب. نظرًا لأن تخطيط لوحة الوحدة قد تم بالفعل ولا يتعين علينا سوى تحديد المسامير. تحتوي الوحدة على عدة أطراف "أرضية"، لذلك يجب التأكد من دخول الطاقة إلى الوحدة من خلال "أرضي" واحد، والقياسات من خلال الأخرى. في الواقع، لإجراء التغييرات، أستخدم دائمًا الدبوس الأرضي الأقرب إلى المدخلات التناظرية.

للتحكم في I2C، يتم استخدام إصدار من مكتبة LiquidCrystal_I2C - في حالتي، تتم الإشارة إلى دبوس محدد لوحدة I2C (وحدات الإنتاج الصينية مع عناصر تحكم مختلفة). وألاحظ أيضًا أن I2C في Arduino يتطلب استخدام المسامير A4 وA5 - على لوحة Pro Mini، فهي غير موجودة على الحافة، وهو أمر غير مناسب للنماذج الأولية على BreadBoard.

مصدر

#يشمل #يشمل // الفولتميتر البسيط مع شاشة i2c 1602.V 16.11 // إعدادات شاشة i2c 1602 مع دبوس غير قياسي #define LCD_I2C_ADDR 0x27 #define BACKLIGHT 3 #define LCD_EN 2 #define LCD_RW 1 #define LCD_RS 0 #define LCD_D4 4 #define LCD_D5 5 #تعريف LCD_D6 6 #تعريف LCD_D7 7 LiquidCrystal_I2C LCD(LCD_I2C_ADDR,LCD_EN,LCD_RW,LCD_RS,LCD_D4,LCD_D5,LCD_D6,LCD_D7); // قراءة وقت التحديث، مللي ثانية (200-2000) #define REFRESH_TIME 330 // الإدخال التناظري #define PIN_VOLT A0 // الجهد المرجعي الداخلي (حدد) const float VRef = 1.10; // معامل مقسم مقاومة الإدخال (Rh + Rl) / Rl. في<-[ Rh ]--(analogInPin)--[ Rl ]--|GND const float VoltMult = (180.0 + 10.0) / 10.0; float InVolt, Volt; void setup() { analogReference(INTERNAL); // Инициализация дисплея lcd.begin (16, 2); lcd.setBacklightPin(BACKLIGHT, POSITIVE); lcd.setBacklight(HIGH); // включить подсветку lcd.clear(); // очистить дисплей lcd.print("Voltage"); } void loop() { unsigned long CalcStart = millis(); int ReadCnt = 0; InVolt = 0; // Чтение из порта с усреднением while ((millis() - CalcStart) < REFRESH_TIME) { InVolt += analogRead(PIN_VOLT); ReadCnt++; } InVolt = InVolt / ReadCnt; // Смещение 0 для конкретного ADC (подобрать или отключить) if (InVolt >0.2) إنفولت += 3؛ // تحويل إلى فولت (القيمة: 0..1023 -> (0..VRef) تم تحجيمها بواسطة Mult) Volt = InVolt * VoltMult * VRef / 1023؛ // بيانات الإخراج LCD.setCursor (0، 1)؛ شاشات الكريستال السائل. طباعة (فولت)؛ شاشات الكريستال السائل.طباعة("V"); )

يصف كيفية بناء مقياس فولتميتر مزدوج محلي الصنع استنادًا إلى منصة Arduino UNO باستخدام شاشة LCD 1602A. في بعض الحالات، من الضروري قياس جهدين ثابتين في وقت واحد ومقارنتهما. قد يكون هذا مطلوبًا، على سبيل المثال، عند إصلاح أو إعداد مثبت جهد التيار المستمر لقياس الجهد عند مدخلاته ومخرجاته، أو في حالات أخرى.

رسم تخطيطى

باستخدام وحدة التحكم الدقيقة العالمية ARDUINO UNO وشاشة LCD ذات سطرين من النوع 1602A (استنادًا إلى وحدة التحكم HD44780)، يمكنك بسهولة إنشاء مثل هذا الجهاز. في أحد الخطوط سيظهر الجهد U1، وفي الآخر - الجهد U2.

أرز. 1. رسم تخطيطي للفولتميتر المزدوج مع شاشة 1602A على Arduino UNO.

ولكن، أولا وقبل كل شيء، أود أن أذكرك بأن ARDUINO UNO عبارة عن وحدة جاهزة غير مكلفة نسبيًا - وهي عبارة عن لوحة دوائر مطبوعة صغيرة يوجد عليها متحكم ATMEGA328، بالإضافة إلى جميع أجهزتها اللازمة لتشغيلها، بما في ذلك مبرمج USB وإمدادات الطاقة.

بالنسبة لأولئك الذين ليسوا على دراية بـ ARDUINO UNO، أنصحك بقراءة المقالتين L.1 وL.2 أولاً. تظهر دائرة الفولتميتر المزدوج في الشكل. 1. إنه مصمم لقياس جهدين من 0 إلى 100 فولت (عمليا حتى 90 فولت).

كما يتبين من الرسم البياني، يتم توصيل وحدة عرض الكريستال السائل من النوع H1 1602A بالمنافذ الرقمية D2-D7 للوحة ARDUINO UNO. يتم تشغيل مؤشر LCD بواسطة مثبت جهد 5 فولت موجود على لوحة تثبيت الجهد 5 فولت.

يتم توفير الفولتية المقاسة إلى مدخلين تناظريين A1 و A2. هناك ستة مدخلات تناظرية في المجمل، A0-A5، يمكنك اختيار أي اثنين منها. في هذه الحالة، يتم تحديد A1 وA2. يمكن أن يكون الجهد الكهربائي الموجود على المنافذ التناظرية موجبًا فقط وفقط في النطاق من الصفر إلى جهد إمداد المتحكم الدقيق، أي ما يصل إلى 5 فولت اسميًا.

يتم تحويل إخراج المنفذ التناظري إلى شكل رقمي بواسطة ADC الخاص بوحدة التحكم الدقيقة. للحصول على النتيجة بوحدات فولت، تحتاج إلى ضربها في 5 (في الجهد المرجعي، أي في جهد إمداد المتحكم الدقيق) والقسمة على 1024.

من أجل أن تكون قادرًا على قياس الفولتية الأكبر من 5 فولت، أو بالأحرى، أكبر من جهد إمداد المتحكم الدقيق، لأن الجهد الفعلي عند خرج المثبت 5 فولت على لوحة ARDUINO UNO قد يختلف عن 5 فولت، وعادةً ما يكون أقل قليلاً، تحتاج إلى استخدام مقسمات مقاومة تقليدية عند الإدخال. هذه هي مقسمات الجهد عبر المقاومات R1 و R3 و R2 و R4.

في هذه الحالة، لجلب قراءات الجهاز إلى القيمة الحقيقية لجهد الإدخال، تحتاج إلى ضبط البرنامج على تقسيم نتيجة القياس على معامل تقسيم مقسم المقاومة. ويمكن حساب معامل القسمة، الذي نرمز إليه بـ "K"، باستخدام الصيغة التالية:

ك = R3 / (R1+R3) أو ك = R4 / (R2+R4)،

على التوالي لمدخلات مختلفة من الفولتميتر المزدوج.

ومن المثير للاهتمام أن المقاومات الموجودة في الفواصل لا يجب بالضرورة أن تكون عالية الدقة. يمكنك أخذ مقاومات عادية، ثم قياس مقاومتها الفعلية باستخدام جهاز قياس دقيق، واستبدال هذه القيم المقاسة في الصيغة. سوف تحصل على القيمة "K" لمقسوم محدد، والتي سوف تحتاج إلى استبدالها في الصيغة.

برنامج الفولتميتر

يظهر برنامج C++ في الشكل 2.

أرز. 2. كود المصدر للبرنامج.

للتحكم في مؤشر LCD، تقرر استخدام المنافذ من D2 إلى D7 للوحة ARDUINO UNO. من حيث المبدأ، هناك منافذ أخرى ممكنة، ولكن هذه هي الطريقة التي قررت استخدامها.

لكي يتفاعل المؤشر مع ARDUINO UNO، تحتاج إلى تحميل روتين فرعي في البرنامج للتحكم فيه. تسمى هذه الإجراءات "المكتبات"، وهناك العديد من "المكتبات" المختلفة في مجموعة برامج ARDUINO UNO. للعمل مع مؤشر LCD يعتمد على HD44780، فأنت بحاجة إلى مكتبة LiquidCrystal. ولذلك يبدأ البرنامج (الجدول 1) بتحميل هذه المكتبة:

يعطي هذا السطر الأمر لتحميل هذه المكتبة في ARDUINO UNO. بعد ذلك، تحتاج إلى تعيين منافذ ARDUINO UNO التي ستعمل مع مؤشر LCD. اخترت المنافذ من D2 إلى D7. يمكنك اختيار الآخرين. يتم تعيين هذه المنافذ بواسطة السطر:

ليد كريستال سائل (2، 3، 4، 5، 6، 7)؛

وبعد ذلك، ينتقل البرنامج إلى التشغيل الفعلي للفولتميتر. لقياس الجهد، تقرر استخدام المدخلات التناظرية A1 و A2. يتم إعطاء هذه المدخلات على الخطوط:

intanalogInput=1;

int التناظريةInput1=2;

لقراءة البيانات من المنافذ التناظرية، استخدم وظيفةanalogRead. تتم قراءة البيانات من المنافذ التناظرية في السطور:

vout=analogRead(analogInput);

voutl=analogRead(analoglnput1);

ثم يتم حساب الجهد الفعلي مع الأخذ في الاعتبار نسبة تقسيم مقسم جهد الدخل:

فولت=فوت*5.0/1024.0/0.048 ;

فولت1=vout1*5.0/1024.0/0.048;

في هذه الخطوط، الرقم 5.0 هو الجهد عند خرج مثبت لوحة ARDUINO UNO. من الناحية المثالية، يجب أن يكون 5 فولت، ولكن لكي يعمل الفولتميتر بدقة، يجب أولاً قياس هذا الجهد. قم بتوصيل مصدر الطاقة وقياس الجهد +5V عند موصل الطاقة باللوحة باستخدام مقياس الفولتميتر الدقيق إلى حد ما. ماذا يحدث قم بإدخال هذه الأسطر بدلاً من 5.0، فمثلاً إذا كان هناك 4.85V فستظهر الأسطر بهذا الشكل:

فولت=فوت*4.85/1024.0/0.048;

فولت1=فوت1*4.85/1024.0/0.048;

في المرحلة التالية، سوف تحتاج إلى قياس المقاومة الفعلية للمقاومات R1-R4 وتحديد معاملات K (المشار إليها بـ 0.048) لهذه الخطوط باستخدام الصيغ:

K1 = R3 / (R1+R3) وK2 = R4 / (R2+R4)

لنفترض أن K1 = 0.046، و K2 = 0.051، فنكتب:

فولت=فوت*4.85/1024.0/0.046 ;

فولت1=فوت1*4.85/1024.0/0.051;

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

من خلال تغيير معاملات تقسيم المقسمات المقاومة (وبالتالي معاملات "K")، يمكنك وضع حدود قياس أخرى، وليس بالضرورة نفس الشيء بالنسبة لكلا المدخلين.

كارافكين ف.RK-2017-01.

الأدب:

  1. Karavkin V. - شجرة عيد الميلاد المتعرية على ARDUINO كعلاج للخوف من المتحكمات الدقيقة. ر.ك-11-2016.
  2. Karavkin V. - مقياس التردد على اردوينو. ر.ك-12-2016.

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


تنويه: المقال مخصص لعشاق الاردوينو العاديين الذين عادة لا يكونون على دراية ببرمجة الأندرويد، لذلك، كما في المقالة السابقة، سنقوم بإنشاء تطبيق لهاتف ذكي باستخدام بيئة التطوير المرئية App Inventor 2 لتطبيقات الأندرويد.
لإنشاء مقياس فولتميتر يعمل بتقنية البلوتوث، نحتاج إلى كتابة برنامجين مستقلين نسبيًا: رسم تخطيطي لـ Arduino وتطبيق لنظام Android.
أولاً، يجب أن تعلم أن هناك ثلاثة خيارات رئيسية لقياس الجهد باستخدام الأردوينو، بغض النظر عن المكان الذي تريد إخراج المعلومات فيه: إلى منفذ com، أو إلى شاشة متصلة بالاردوينو، أو إلى هاتف ذكي.
الحالة الأولى: قياسات الجهد حتى 5 فولت. هنا يكفي سطر أو سطرين من التعليمات البرمجية، ويتم توفير الجهد مباشرة إلى الطرف A0:
قيمة int =analogRead(0);/قراءة القراءات من A0
الجهد = (القيمة / 1023.0) * 5؛ // صحيح فقط إذا كان Vcc = 5.0 فولت
الحالة الثانية: لقياس الفولتية الأكبر من 5 فولت يستخدم مقسم الجهد. الدائرة بسيطة جدًا، وكذلك الكود.

رسم

int AnalogInput = A0;
تعويم فال = 0.0؛
تعويم الجهد = 0.0؛
تعويم R1 = 100000.0؛ //فين البطارية-> 100 كيلو -> A0
تعويم R2 = 10000.0؛ //Gnd البطارية -> Arduino Gnd وArduino Gnd -> 10K -> A0
قيمة كثافة العمليات = 0؛

الإعداد باطل() (
Serial.begin(9600);
pinMode(analogInput, INPUT);
}

حلقة فارغة() (
القيمة = التناظرية(analogInput);
فال = (القيمة * 4.7) / 1024.0؛
الجهد = فال / (R2/(R1+R2));
Serial.println (الجهد)؛
تأخير (500)؛
}


اردوينو أونو
وحدة بلوتوث
الحالة الثالثة. عندما تحتاج إلى الحصول على معلومات أكثر دقة حول الجهد، يجب عليك استخدام جهد مرجعي وليس جهد المصدر، والذي يمكن أن يختلف قليلاً عند تشغيله بواسطة بطارية، على سبيل المثال، ولكن جهد مثبت Arduino الداخلي البالغ 1.1 فولت الدائرة هي نفسها هنا، لكن الرمز أطول قليلاً. لن أقوم بتحليل هذا الخيار بالتفصيل، لأنه موصوف جيدًا بالفعل في المقالات المواضيعية، لكن الطريقة الثانية كافية بالنسبة لي، نظرًا لأن مصدر الطاقة الخاص بي مستقر، من منفذ USB للكمبيوتر المحمول.
لقد قمنا بفرز قياس الجهد، والآن دعنا ننتقل إلى النصف الثاني من المشروع: إنشاء تطبيق Android. سنقوم بإنشاء التطبيق مباشرة من المتصفح في بيئة التطوير المرئية لتطبيقات Android App Inventor 2. انتقل إلى موقع الويب appinventor.mit.edu/explore، وقم بتسجيل الدخول باستخدام حساب Google الخاص بك، وانقر فوق زر إنشاء مشروع جديد، ومن خلال ببساطة عن طريق سحب وإفلات العناصر سنقوم بإنشاء شيء مثل هذا التصميم:

لقد جعلت الرسومات بسيطة للغاية، إذا كان أي شخص يريد المزيد من الرسومات المثيرة للاهتمام، دعني أذكرك أنه لهذا تحتاج إلى استخدام ملفات .png بخلفية شفافة بدلاً من ملفات .jpeg.
انتقل الآن إلى علامة التبويب "الكتل" وقم بإنشاء منطق التطبيق هناك بشيء من هذا القبيل:


إذا نجح كل شيء، فيمكنك النقر فوق الزر Build وحفظ .apk على جهاز الكمبيوتر الخاص بي، ثم تنزيل التطبيق وتثبيته على هاتفك الذكي، على الرغم من وجود طرق أخرى لتحميل التطبيق. هنا هو أكثر ملاءمة لأي شخص. ونتيجة لذلك، انتهى بي الأمر مع هذا التطبيق:


أدرك أن القليل من الأشخاص يستخدمون بيئة التطوير المرئية App Inventor 2 لتطبيقات Android في مشاريعهم، لذلك قد تطرح العديد من الأسئلة حول العمل فيها. للإجابة على بعض هذه الأسئلة، قمت بعمل فيديو تفصيلي حول كيفية إنشاء مثل هذا التطبيق "من الصفر" (لمشاهدته يجب عليك الانتقال إلى YouTube):

ملاحظة. مجموعة من أكثر من 100 مادة تعليمية عن الاردوينو للمبتدئين والمحترفين