في هذا المشروع سنتعلم كيفية استخدام الاردوينو لقياس الجهود الكهربائية. يمكن استخدام هذه الفكرة لعمل Digital Voltameter أو جهاز لمعرفة حالة البطارية.
![Voltameter: استخدام الاردوينو فى قياس الجهود الكهربية](https://geeksvalley.com/wp-content/uploads/2017/09/voltameter.gif)
المكونات المطلوبة
![arduino uno r3](https://geeksvalley.com/wp-content/uploads/2015/08/arduino-uno-r3-1.jpg)
![Full size breadboard 830](https://geeksvalley.com/wp-content/uploads/2015/10/Full-size-breadboard-830-600x600.jpg)
![Breadboard Jumper Wire 65 pcs](https://geeksvalley.com/wp-content/uploads/2015/10/Breadboard-Jumper-Wire-65-pcs-600x550.jpg)
شرح الدارة
تعتمد الدارة على مبدا تقسيم الجهد Voltage Divider في حساب الجهد المراد قياسه.
مثلا، لقياس الجهد على المقاومة R2 :
V(R2) = Vcc * R2 / (R1 + R2)
ملاحظة : مدى الجهود التى يمكن قياسها من 0 الى 5 فولت
توصيل الدارة :
قم بتوصيل الدارة كما هو مبين بالشكل التالي :
![Voltameter: استخدام الاردوينو فى قياس الجهود الكهربية](https://geeksvalley.com/wp-content/uploads/2017/09/Screenshot_2017-09-08_14-21-33.png)
سيتم قياس جهد ما عن طريق توصيل طرفى القياس على الجهد المراد. لذلك، سنقوم بكتابه برنامج بحيث يتم تشغيل الشاشة التسلسلية 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); }