ارشيف المدونة
RSSخدمة

مدونة

تذكير تلقائي بموعد تناول الدواء باستخدام الاردوينو
عندما يتعلق الأمر بأحبائنا ، فإننا نريد دائمًا الحفاظ على صحتهم ولياقتهم. ولكن ماذا لو مرضوا ونسوا تناول أدويتهم في الوقت المحدد؟ سنقلق ، أليس كذلك؟ المستشفيات بها العديد من المرضى ومن الصعب تذكير كل مريض بتناول الدواء في الوقت المحدد.
مؤشر جهد البطارية باستخدام اردوينو و LED Bar Graph

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

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

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

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

المواد المطلوبة لمؤشر جهد البطارية
  • 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

 

 

مخطط توصيل المشروع لمؤشر جهد البطارية

 

 

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

 

#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);
}

}