مؤشر جهد البطارية باستخدام الاردوينو و LED Bar Graph اكتب تعليقُا

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

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

عمل مؤشر جهد البطارية
Battery-Voltage-Indicator-using-Arduino-and-LED-Bar-Graph

مؤشر جهد البطارية فقط أحصل علي القيمة من المنفذ التماثلي للاردوينو وقم بتحويلها إلى قيمة رقمية باستخدام صيغة التحويل التناظري إلى الرقمي (ADC).

يتميز الاردوينو أونو ADC بدقة 10 بت (لذا فإن قيم الأعداد الصحيحة من 0-2 ^ 10 = 1024 قيمة). هذا يعني أنه سيتم تعيين جهد الإدخال بين 0 و 5 فولت إلى قيم صحيحة بين 0 و 1023. لذلك إذا قمنا بضرب قيمة anlogValue إلى (5/1024) ، فإننا نحصل على القيمة الرقمية لجهد الدخل ثم يتم استخدام القيمة الرقمية لتعرض في شريط LED وفقًا لذلك .

المواد المطلوبة لمؤشر جهد البطارية

Material Required

  • Arduino UNO
  • 10 Segment LED Bar Graph
  • LCD (16*2)
  • Potentiometer-10k
  • Resistor (100ohm-10;330ohm)
  • Battery (to be tested)
  • Connecting wires
  • 12v adapter for Arduino
مخطط توصيل المشروع لمؤشر جهد البطارية
Battery-Voltage-Indicator-Circuit-diagram-using-Arduino-and-LED-Bar-Graph
تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.
الكود البرمجي لمؤشر جهد البطارية
لتحميل الكود البرمجي اضغط هنا

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

#include <LiquidCrystal.h>

const int rs = 12, en = 13, d0 = A0, d1 = A1, d2 = A2, d3 = A3;
LiquidCrystal lcd(rs, en, d0, d1, d2, d3);
const int analogPin = A4;
float analogValue;
float input_voltage;

int ledPins[] = {
2, 3, 4, 5, 6, 7, 8, 9, 10, 11
};       // an array of pin numbers to which LEDs are attached
int pinCount = 10;           // the number of pins (i.e. the length of the array)

void setup()
{
Serial.begin(9600);     //  opens serial port, sets data rate to 9600 bps
lcd.begin(16, 2);       //// set up the LCD’s number of columns and rows:
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,INPUT);
lcd.print(“Voltage Level”);

}
void LED_function(int stage)
{
for (int j=2; j<=11; j++)
{
digitalWrite(j,LOW);
}
for (int i=1, l=2; i<=stage; i++,l++)
{
digitalWrite(l,HIGH);
//delay(30);
}

}
void loop()
{
//  Conversion formula for voltage
analogValue = analogRead (A4);
Serial.println(analogValue);
delay (1000);
input_voltage = (analogValue * 5.0) / 1024.0;
lcd.setCursor(0, 1);
lcd.print(“Voltage= “);
lcd.print(input_voltage);
Serial.println(input_voltage);
delay(100);

if (input_voltage < 0.50 && input_voltage >= 0.00 )
{
digitalWrite(2, HIGH);
delay (30);
digitalWrite(2, LOW);
delay (30);
}
else if (input_voltage < 1.00 && input_voltage >= 0.50)
{
LED_function(2);
}
else if (input_voltage < 1.50 && input_voltage >= 1.00)
{
LED_function(3);
}
else if (input_voltage < 2.00 && input_voltage >= 1.50)
{
LED_function(4);
}
else if (input_voltage < 2.50 && input_voltage >= 2.00)
{
LED_function(5);
}
else if (input_voltage < 3.00 && input_voltage >= 2.50)
{
LED_function(6);
}
else if (input_voltage < 3.50 && input_voltage >= 3.00)
{
LED_function(7);
}
else if (input_voltage < 4.00 && input_voltage >= 3.50)
{
LED_function(8);
}
else if (input_voltage < 4.50 && input_voltage >= 4.00)
{
LED_function(9);
}
else if (input_voltage < 5.00 && input_voltage >= 4.50)
{
LED_function(10);
}

}

أنتهت !!!

اترك تعليقاً



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