جهاز اختبار جهد البطارية


pasted image 0 19

مقدمة

سنقوم في هذه التجربة بتصميم جهاز لقياس جهد البطارية، لا يعطي قراءة دقيقة للجهد ولكنه يظهر إذا كان جهد البطارية مرتفع، منخفض، أم أنه متوسط عبر مصباح LED باللون المناسب.

الأدوات المستخدمة

Screen Shot 2017 12 06 at 4.46.38 PM

الأداة العدد ملاحظات
أردوينو أونو 1
مصباح LED 3 3 ألوان: أحمر، أصفر وأخضر
5.1k صمام ثنائي زنر(zener diode) 1
مقاومة ثابتة 100 3
 مقاومة ثابتة2.2k 1
لوحة توصيل 1
أسلاك توصيل حسب الحاجة

الجزء النظري

يقوم هذا الجهاز بتقييم مقدار الجهد في البطارية ويعطينا الألوان التالية تبعا لمقدار الجهد:

جهد البطارية اللون
مرتفع (voltage>1.6V) أخضر
متوسط (1.2V>voltage>1.6V) أصفر
منخفض (voltage<1.2V) أحمر

قبل قياس جهد البطارية يجب علينا وضع صمام ثنائي زنر (zener diode) والذي يعمل على قطع التيار عند وصول الجهد المقاس من البطارية إلى حد معين (في هذه التجربة الحد هو 5V) وذلك لحماية الأردوينو من الجهد فوق 5V في حال كانت البطارية تمتلك جهدًا أكبر من هذه القيمة. يتم توصيل المنفذ السالب للبطارية مع المنفذ الأرضي GND والمنفذ الموجب للبطارية مع المنفذ الموجب الصمام الثنائي زنر والمنفذ السالب للصمام الثنائي زنر سيكون متصل بالمنفذ A0 وبالتالي فإن قراءة الجهد ستكون عن طريق المنفذ A0 في الكود البرمجي.

خطوات التوصيل

اتبع الصورة التالية لتتمكن من توصيل الدائرة

battery meter bb

قم بتوصيل المنافذ التالية:

  1. المنافذ السالبة لكل من إضاءات LED والبطارية المراد قياسها متصلة في نقطة واحدة، ومن ثم متصلة مع منفذ GND للأردوينو.
  2. كل من المقاومات الثلاث 100 متصلة مع المنفذ الموجب لمصابيح LED، ثم سيكون كل مصباح متصل بمنفذ محدد في الأردوينو:
  • الأحمر >> 4
  • الأصفر >> 3
  • الأخضر >> 2
  1. المنفذ السالب من الصمام الثنائي زنر مع المقاومة 2.2k  متصلة مع المنفذ A0.
  2. المنفذ الموجب من الصمام الثنائي زنر مع المنفذ الموجب للبطارية.

الكود البرمجي

قم بنسخ الكود ولصقه في برنامج الأردوينو وشاهد إنجازك !

الكود البرمجي

/*
  Arduino Battery Tester

  Created: 20/01/2016
  By Gus
  Modified N/A
  By Gus

  http://arduinomylifeup.com/arduino-battery-tester
*/
int greenLed = 2;
int yellowLed = 3;
int redLed = 4;

int analogValue = 0;
float voltage = 0;
int ledDelay = 1000;
void setup()
{
  pinMode(greenLed, OUTPUT);
  pinMode(yellowLed,OUTPUT);
  pinMode(redLed,OUTPUT);
}

void loop()
{
  analogValue = analogRead(A0);
  voltage = 0.0048*analogValue;
  
  if( voltage >= 1.6 )
    digitalWrite(greenLed, HIGH);
  else if (voltage > 1.2 && voltage < 1.6)
    digitalWrite(yellowLed, HIGH);
  else if( voltage <= 1.2)
    digitalWrite(redLed, HIGH);  
 
  delay(ledDelay);
  digitalWrite(redLed, LOW);
  digitalWrite(yellowLed, LOW); 
  digitalWrite(greenLed, LOW);
}

شرح الكود:

تعريف المتغيرات

int greenLed = 2;
int yellowLed = 3;
int redLed = 4;

int analogValue = 0;
float voltage = 0;
int ledDelay = 1000;

تحديد وضع جميع المنافذ المتصلة بمصابيح LED بـ output

void setup()
{
pinMode(greenLed, OUTPUT);
pinMode(yellowLed,OUTPUT);
pinMode(redLed,OUTPUT);
}

تحديد قراءة الجهد عبر المنفذ A0، وتحويل قيمة الجهد من قراءة الأردوينو (0-1023) إلى قراءة (0-5) عبر قسمة 5 على 1023، وهو ما يعطينا القيمة 0.0048 التي سوف نقوم بضربها في قيمة الجهد A0.

void loop()
{
analogValue = analogRead(A0);
voltage = 0.0048*analogValue;

في هذا الجزء من الكود سوف نقوم بمقارنة قيمة الجهد بقيم ثابتة للجهد وذلك لتحديد أي مصباح سوف يضيء حسب قيمة جهد البطارية.
if( voltage >= 1.6 )
digitalWrite(greenLed, HIGH);
else if (voltage > 1.2 && voltage < 1.6)
digitalWrite(yellowLed, HIGH);
else if( voltage <= 1.2)
digitalWrite(redLed, HIGH);

delay(ledDelay);
digitalWrite(redLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(greenLed, LOW);
}

فيديو التجربة

المصدر

مصدر التجربة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *