في هذا المشروع سنتعلم كيفية استخدام الاردوينو لقياس الجهود الكهربائية. يمكن استخدام هذه الفكرة لعمل Digital Voltameter أو جهاز لمعرفة حالة البطارية.
المكونات المطلوبة
شرح الدارة
تعتمد الدارة على مبدا تقسيم الجهد Voltage Divider في حساب الجهد المراد قياسه.
مثلا، لقياس الجهد على المقاومة R2 :
V(R2) = Vcc * R2 / (R1 + R2)
ملاحظة : مدى الجهود التى يمكن قياسها من 0 الى 5 فولت
توصيل الدارة :
قم بتوصيل الدارة كما هو مبين بالشكل التالي :
سيتم قياس جهد ما عن طريق توصيل طرفى القياس على الجهد المراد. لذلك، سنقوم بكتابه برنامج بحيث يتم تشغيل الشاشة التسلسلية Serial monitor لعرض الجهد المقاس عليها.
الكود البرمجي
// Max Voltage ( reference voltage ) float vPow = 5.0; // first resistor 10K ohm float r1 = 10000; // second resistor 1k Ohm float r2 = 1000; void setup() { Serial.begin(9600); Serial.println("--------------------"); Serial.println("DC VOLTMETER"); Serial.print("Maximum Voltage: "); Serial.print((int)(vPow / (r1 / (r1 + r2)))); Serial.println("V"); Serial.println("--------------------"); Serial.println(""); delay(2000); //wait 2000 ms before starting } void loop() { float v = (analogRead(0) * vPow) / 1024.0; float v2 = v / (r1 / (r1 + r2)); Serial.print("Voltage (Volts) = "); Serial.println(v2); }
شرح الكود :
في البداية نقوم بالإعلان عن المتغيرات التي سيتم استخدامها في البرمجة. سيتم استخدام المتغير vPow لتسجيل قيمة الجهد المرجعي المستخدم في هذه الحالة 5 فولت. والمتغير r1 لتسجيل قيمة المقاومة الأولى المستخدمة في الـ Voltage Divider . والمتغير r2 لتسجيل قيمة المقاومة الثانية المستخدمة في voltage Divider.
// Max Voltage ( reference voltage ) float vPow = 5.0; // first resistor 10K ohm float r1 = 10000; // second resistor 1k Ohm float r2 = 1000;
في الدالة ()setup نقوم بضبط الإعدادات، وهي تشغيل الشاشة التسلسلية لنستطيع عرض قيمة الجهد المقاس.كما نقوم بعرض اقصى قيمة يمكن قياسها ومن ثم الإنتظار لمدة ثانيتين قبل البدء في الحسابات ( من الممكن اهمال هذا التأخير الزمني).
void setup() { Serial.begin(9600); Serial.println("--------------------"); Serial.println("DC VOLTMETER"); Serial.print("Maximum Voltage: "); Serial.print((int)(vPow / (r1 / (r1 + r2)))); Serial.println("V"); Serial.println("--------------------"); Serial.println(""); delay(2000); //wait 2000 ms before starting }
في الدالة ()loop، نقوم بقراءة قيمة الجهد على المقاومة 10k ohm، ثم عن طريق استخدام قانون Voltage Divider نقوم بحساب الجهد الكلي وعرضة على الشاشة التسلسلية.
void loop() { float v = (analogRead(0) * vPow) / 1024.0; float v2 = v / (r1 / (r1 + r2)); Serial.print("Voltage (Volts) = "); Serial.println(v2); }