إذن لدينا في هذه المرحلة الفولتميتر ذو الجهد الثابت بحد أقصى 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); شاشات الكريستال السائل. طباعة (أمبير)؛ شاشات الكريستال السائل.طباعة("أ"); )
مرحبًا حبر! اليوم أريد أن أواصل موضوع "عبور" اردوينو وأندرويد. تحدثت في المنشور السابق عن جهاز بلوتوث، واليوم سنتحدث عن الفولتميتر الذي يعمل بتقنية البلوتوث. يمكن تسمية جهاز آخر مثل الفولتميتر الذكي، أو الفولتميتر "الذكي"، أو مجرد الفولتميتر الذكي، دون علامات الاقتباس. الاسم الأخير غير صحيح من وجهة نظر قواعد اللغة الروسية، ومع ذلك، غالبا ما يتم العثور عليه في وسائل الإعلام. سيكون هناك تصويت على هذا الموضوع في نهاية المقال، ولكن أقترح البدء بشرح عمل الجهاز لفهم ما ستتناوله المقالة.
رسم
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)؛
}
فكرة ظهرت أجهزة قياس الجهد والتيار والقدرة والتفريغ وربما الشحن منذ فترة طويلة وليس بالنسبة لي فقط. يمكنك العثور على العديد من الألعاب التي تسمى USB Tester (Doctor) لاختبار أجهزة USB المختلفة. أنا مهتم بجهاز أكثر عالمية إلى حد ما، مستقل عن الواجهة، ولكنه مصمم ببساطة لجهود وتيارات معينة. على سبيل المثال، 0 - 20.00 فولت، 0 - 5.00 أمبير، 0 - 99.99 أمبير. أما بالنسبة للوظائف، فأنا أراها هكذا
لتنفيذ الحسابات والقياسات نحتاج إلى وحدة تحكم. تذكرت هذه الفكرة من خلال معرفتي بالاردوينو فوحدة التحكم ستكون بسيطة شعبية Atmega328 وسيتم برمجتها في البيئة اردوينو. من وجهة نظر هندسية، ربما لا يكون الاختيار هو الأفضل - وحدة التحكم ثقيلة بعض الشيء بالنسبة للمهمة، ولا يمكن تسمية ADC الخاص بها بالقياس، ولكن... سنحاول.
أقوم بتنفيذ مقياس فولتميتر بسيط بمدى واحد يتراوح من 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.
يصف كيفية بناء مقياس فولتميتر مزدوج محلي الصنع استنادًا إلى منصة 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.
الأدب:
مرحبًا حبر! اليوم أريد أن أواصل موضوع "عبور" اردوينو وأندرويد. تحدثت عنه في المنشور السابق واليوم سنتحدث عن الفولتميتر الذي يعمل بتقنية البلوتوث. يمكن تسمية جهاز آخر مثل الفولتميتر الذكي، أو الفولتميتر "الذكي"، أو مجرد الفولتميتر الذكي، دون علامات الاقتباس. الاسم الأخير غير صحيح من وجهة نظر قواعد اللغة الروسية، ومع ذلك، غالبا ما يتم العثور عليه في وسائل الإعلام. سيكون هناك تصويت على هذا الموضوع في نهاية المقال، ولكن أقترح البدء بشرح عمل الجهاز لفهم ما ستتناوله المقالة.
رسم
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)؛
}