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

,
10, 5, , - .
Arduino. 5. :
void setup() {
Serial.begin(9600);
pinMode(A5, INPUT);
}
void loop() {
float k = 2;
float voltage = k*analogRead(A5);
}
, . 1024:
void loop() {
float k = 2/1024;
float voltage = k*analogRead(A5);
}
, voltage :
float k = 2*1.12;
float voltage = k*4.5f/1024*analogRead(A5);
حصلنا على قفزة قوية لأعلى ولأسفل ، غالبًا ما لا تكون مشابهة لما هو مطلوب. لإصلاح هذا الخطأ ، أضف تصفية التمرير المنخفض باستخدام عامل التنعيم الأكثر ملاءمة لمشروعك:
void loop() {
float k = 2*1.12;
float voltage = k*4.5f/1024*analogRead(A5);
float chargeLevel_procents;
float chargeLevel;
float y;
int z;
float A_v = voltage;
float A_K = 0.3;
static float A_y;
A_y = A_y - A_K * (A_y - A_v);
}
الآن يبقى قياس الجهد على البطاريات المشحونة بالكامل وتفريغها بالكامل. في حالتي ، الفرق هو بالضبط 1V.بعد ذلك ، تحتاج إلى العثور على شحن البطارية في المئة: y = A_y / 8.4 * 100;
chargeLevel_procents = y;
chargeLevel = z;
نحن بحاجة فقط إلى ترجمة هذا إلى رمز البطارية (أو في المربعات ، مثل المنجم) وإخراجها إلى وحدة التحكم:
if(chargeLevel_procents >= 0 && chargeLevel_procents < 33) {
z = 1;
}
else if(chargeLevel_procents >= 33 && chargeLevel_procents < 66) {
z = 2;
}
else if(chargeLevel_procents >= 66 && chargeLevel_procents <= 100) {
z = 3;
}
Serial.print("\t Voltage: ");
Serial.print(A_y);
Serial.print(" V ");
Serial.print("\t Charge: ");
if(z == 1) {
Serial.print("■");
}
else if(z == 2) {
Serial.print("■■");
}
else if(z == 3) {
Serial.print("■■■");
}
else {
Serial.print("ERROR");
}
Serial.print("\r\n");
لعرض النتيجة ، أوصي باستخدام PuTTY ، لأنه يدعم أي ترميز ، على عكس "مراقب المنفذ" المعتاد في Arduino IDE.