جدول المحتويات:
- الخطوة 1: الأجزاء المطلوبة:
- الخطوة الثانية: القوة والطاقة
- الخطوة الثالثة: قياس الجهد
- الخطوة 4: القياس الحالي
- الخطوة الخامسة: قياس الوقت
- الخطوة 6: كيف يحسب أردوينو الطاقة والطاقة
- الخطوة 7: الإخراج المرئي
- الخطوة 8: تحميل البيانات إلى Xively.com
- الخطوة 9: Xively و ARDUINO Code
- الخطوة 10: تسجيل البيانات في بطاقة SD
فيديو: عداد طاقة اردوينو: 10 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
[شغل الفيديو]
أنتمي إلى قرية أوديشا بالهند حيث يكون انقطاع التيار الكهربائي المتكرر أمرًا شائعًا للغاية. إنه يعيق حياة كل فرد. خلال أيام طفولتي ، كان استمرار الدراسة بعد الغسق يمثل تحديًا حقيقيًا. بسبب هذه المشكلة ، صممت نظامًا شمسيًا لمنزلي على أساس تجريبي. لقد استخدمت لوحة شمسية بقوة 10 وات و 6 فولت لإضاءة عدد قليل من المصابيح الساطعة. بعد مواجهة الكثير من المصاعب ، نجح المشروع. ثم قررت مراقبة الجهد والتيار والطاقة والطاقة المتضمنة في النظام. جلب هذا فكرة تصميم عداد الطاقة ، لقد استخدمت ARDUINO كقلب لهذا المشروع لأنه من السهل جدًا كتابة الكود في IDE الخاص به وهناك عدد كبير من المكتبات مفتوحة المصدر المتاحة على الإنترنت والتي يمكن استخدامها وفقًا لـ لقد جربت المشروع لنظام شمسي صغير جدًا (10 وات) ولكن يمكن تعديله بسهولة لاستخدامه في نظام تصنيف أعلى.
يمكنك العثور على جميع مشاريعي على:
الميزة: مراقبة الطاقة بواسطة شاشة 1. LCD 2. عبر الإنترنت (تحميل Xively) 3. تسجيل البيانات في بطاقة SD
يمكنك أن ترى جهاز التحكم الجديد في ARDUINO MPPT SOLAR CHARGE CONTROLLER (الإصدار 3.0)
يمكنك أيضًا رؤية إرشاداتي الأخرى على
وحدة التحكم في الشحن بالطاقة الشمسية من أردوينو (الإصدار 2.0)
جهاز التحكم في الشحن بالطاقة الشمسية من اردوينو (الإصدار 1)
الخطوة 1: الأجزاء المطلوبة:
1. أردوينو أونو (أمازون) 2. درع أردوينو إيثرنت (أمازون)
3. شاشة LCD ذات أحرف 16 × 2 (أمازون)
4. ACS 712 CURRENT SENSOR (أمازون) 4. المقاومات (10 كيلو ، 330 أوم) (أمازون) 5. 10K POTENTIOMETER (Amazon) 6. أسلاك الطائر (أمازون) 7. كابل إيثرنت (أمازون) 8. لوح الخبز (أمازون)
الخطوة الثانية: القوة والطاقة
الطاقة: الطاقة هي نتاج الجهد (فولت) والتيار (أمبير) P = VxI وحدة الطاقة هي واط أو KW الطاقة: الطاقة هي نتاج الطاقة (واط) والوقت (ساعة) E = Pxt وحدة الطاقة هي وات ساعة أو كيلووات ساعة (كيلوواط ساعة) من الصيغة أعلاه ، من الواضح أنه لقياس الطاقة نحتاج إلى ثلاث معلمات 1. الجهد 2. التيار 3. الوقت
الخطوة الثالثة: قياس الجهد
يتم قياس الجهد بمساعدة دائرة مقسم الجهد ، نظرًا لأن جهد إدخال الدبوس التناظري ARDUINO يقتصر على 5 فولت ، فقد صممت مقسم الجهد بحيث يكون جهد الخرج منه أقل من 5 فولت. تم تصنيف الطاقة من الألواح الشمسية 6 فولت ، 5.5 أمبير ، لذلك يجب أن أتخلى عن هذا 6.5 فولت إلى جهد أقل من 5 فولت. لقد استخدمت R1 = 10k و R2 = 10K. يمكن أن تكون قيمة R1 و R2 أقل ولكن المشكلة هي أنه عندما تكون المقاومة منخفضة ، فإن تدفق تيار أعلى من خلالها نتيجة لذلك يتبدد قدر كبير من الطاقة (P = I ^ 2R) على شكل حرارة. لذلك يمكن اختيار قيمة مقاومة مختلفة ولكن يجب توخي الحذر لتقليل فقد الطاقة عبر المقاومة. Vout = R2 / (R1 + R2) * Vbat Vbat = 6.5 عند الشحن الكامل R1 = 10k و R2 = 10k Vout = 10 / (10 + 10) * 6.5 = 3.25 فولت وهو أقل من 5 فولت ومناسب لدبوس ARDUINO التناظري ملاحظة I أظهرت بطارية 9 فولت في دائرة اللوح العاري ، على سبيل المثال فقط لتوصيل الأسلاك ، لكن البطارية الفعلية التي استخدمتها هي بطارية حمض الرصاص بقوة 6 فولت و 5.5 أمبير. معايرة الجهد: عندما تكون البطارية مشحونة بالكامل (6.5 فولت) سنحصل عليها Vout = 3.25 فولت وقيمة أقل لجهد بطارية منخفض آخر. يقوم AEDUINO ADC بتحويل الإشارة التناظرية إلى التقريب الرقمي المقابل. عندما يكون جهد البطارية 6.5 فولت ، حصلت على 3.25 فولت من مقسم الجهد والعينة 1 = 696 في الشاشة التسلسلية ، حيث تكون قيمة ADC هي 3.25 فولت لفهم أفضل ، لقد أرفقت محاكاة الوقت الحقيقي بواسطة 123D دائرة لقياس الجهد معايرة: 3.25 فولت ما يعادل 696 1 ما يعادل 3.25 / 696 = 4.669 مللي فولت Vout = (4.669 * sample1) / 1000 فولت جهد البطارية الفعلي = (2 * Vout) رمز voltARDUINO: // أخذ 150 عينة من مقسم الجهد بفاصل 2 ثانية ثم متوسط بيانات العينات التي تم جمعها لـ (int i = 0 ؛ i <150 ؛ i ++) {sample1 = sample1 + analogRead (A2) ؛ // قراءة الجهد من تأخير دارة المقسم (2) ؛ } sample1 = sample1 / 150 ؛ الجهد = 4.669 * 2 * عينة 1/1000 ؛
الخطوة 4: القياس الحالي
بالنسبة للقياس الحالي ، استخدمت مستشعر تيار ACS 712 (20 A) من Hall Effect. يوجد مستشعر تيار مختلف ACS712 متوفر في السوق ، لذا اختر وفقًا لمتطلباتك. في الرسم التخطيطي للوحة الخبز ، لقد أظهرت LED كحمل ولكن الحمل الفعلي مختلف. مجال مغناطيسي عمودي على التيار. لمعرفة المزيد عن مستشعر Hall Effect ، انقر هنا توجد ورقة بيانات مستشعر ACS 712 هنا من ورقة البيانات 1. يقيس ACS 712 الموجب والسالب 20 أمبير في الثانية ، وهو ما يقابل الإخراج التناظري 100mV / A 2. لا يوجد اختبار حالي من خلال جهد الخرج VCC / 2 = 5v / 2 = 2.5V المعايرة: القراءة التناظرية تنتج قيمة من 0-1023 ، تعادل 0v إلى 5v لذا قراءة النظير 1 = (5/1024) V = 4.89mv القيمة = (4.89 * قيمة القراءة التناظرية) / 1000 فولت ولكن وفقًا لإزاحة أوراق البيانات 2.5 فولت (عندما يكون الصفر الحالي ، ستحصل على 2.5 فولت من خرج المستشعر) القيمة الفعلية = (القيمة 2.5) فولت التيار في أمبير = القيمة الفعلية * 10ARDUINO CODE: // أخذ 150 عينة من أجهزة استشعار بفاصل زمني 2 ثانية ثم متوسط بيانات العينات التي تم جمعها من أجل (int i = 0 ؛ i <150 ؛ i ++) {sample2 + = analogRead (A3) ؛ // قراءة التيار من تأخير المستشعر (2) ؛ } sample2 = sample2 / 150 ؛ val = (5.0 * sample2) /1024.0 ؛ الفعلي = val-2.5 ؛ // جهد الإزاحة 2.5 فولت أمبير = القيمة الفعلية * 10 ؛
الخطوة الخامسة: قياس الوقت
لقياس الوقت ، ليست هناك حاجة إلى أي جهاز خارجي ، حيث أن ARDUINO نفسها مزودة بجهاز ضبط وقت يحمل في ثناياه عوامل. ترجع الدالة millis () عدد المللي ثانية منذ أن بدأت لوحة Arduino في تشغيل البرنامج الحالي. ARDUINO CODE: long milisec = millis ()؛ // حساب الوقت بالمللي ثانية وقت طويل = ميليسيك / 1000 ؛ // تحويل ميلي ثانية إلى ثوان
الخطوة 6: كيف يحسب أردوينو الطاقة والطاقة
توتامبس = توتامبس + أمبير ؛ // حساب إجمالي الأمبيرات avgamps = totamps / الوقت ؛ // متوسط أمبير أمبير = (متوسط * الوقت) / 3600 ؛ // أمبير ساعة واط = الجهد * أمبير ؛ // الطاقة = الجهد * الطاقة الحالية = (واط * الوقت) / 3600 ؛ يتم تحويل Watt-sec مرة أخرى إلى Watt-Hr عن طريق قسمة ساعة واحدة (3600 ثانية) // الطاقة = (وات * الوقت) / (1000 * 3600) ؛ للقراءة بالكيلووات ساعة
الخطوة 7: الإخراج المرئي
يمكن تصور جميع النتائج في الشاشة التسلسلية أو باستخدام شاشة LCD. لقد استخدمت شاشة LCD مقاس 16 × 2 حرفًا لعرض جميع النتائج التي تم الحصول عليها في الخطوات السابقة. للحصول على مخططات ، انظر دائرة لوحة الخبز الموضحة أعلاه. قم بتوصيل شاشة LCD مع ARDUINO كما هو موضح أدناه: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Arduino GND pin + Resistor or Potentiometer 4. RS -> Arduino pin 8 5. RW -> Arduino pin 7 6. E -> Arduino pin 6 7. D0 -> Arduino - غير متصل 8 D1 -> Arduino - غير متصل 9. D2 -> Arduino - غير متصل 10. D3 -> Arduino - غير متصل 11. D4 -> Arduino pin 5 12. D5 -> Arduino pin 4 13. D6 -> Arduino pin 3 14. D7 -> Arduino pin 2 15. A -> Arduino Pin 13 + Resistor (طاقة الإضاءة الخلفية) 16. K -> Arduino GND (أرض الإضاءة الخلفية) كود ARDUINO: للمراقب التسلسلي:
Serial.print ("VOLTAGE:") ؛ Serial.print (الجهد) ؛ Serial.println ("فولت") ؛ Serial.print ("CURRENT:") ؛ Serial.print (أمبير) ؛ Serial.println ("أمبير") ؛ Serial.print ("POWER:") ؛ Serial.print (واط) ؛ Serial.println ("واط") ؛ Serial.print ("الطاقة المستهلكة:") ؛ Serial.print (طاقة) ؛ Serial.println ("وات ساعة") ؛ Serial.println ("") ؛ // اطبع المجموعات التالية من المعلمات بعد تأخير سطر فارغ (2000) ؛ بالنسبة لشاشة LCD: بالنسبة لشاشة LCD ، يجب عليك أولاً استيراد مكتبة "LiquidCrystal" في الكود. لمعرفة المزيد حول مكتبة LequidCrystal ، انقر هنا للحصول على برنامج تعليمي لشاشات الكريستال السائل ، انقر هنا. الكود التالي هو تنسيق لعرض جميع حسابات الطاقة والطاقة في شاشة LCD ، بما في ذلك شاشات الكريستال السائل (8 ، 7 ، 6 ، 5 ، 4 ، 3 ، 2) ؛ int backLight = 9 ؛ إعداد باطل () {pinMode (backLight، OUTPUT)؛ // تعيين دبوس 9 كإخراج analogWrite (إضاءة خلفية ، 150) ؛ // يتحكم في شدة الإضاءة الخلفية 0-254 lcd.begin (16 ، 2) ؛ // أعمدة الصفوف. حجم شاشة العرض lcd.clear () ؛ // clear the screen} void loop () {lcd.setCursor (16، 1)؛ / / ضع المؤشر خارج شاشة العد lcd.print ("") ؛ // تأجيل طباعة الأحرف الفارغة (600) ؛ //////////////////////////////////////////// طباعة الطاقة والطاقة إلى شاشة LCD / ///////////////////////////////////////////////// lcd.setCursor (1 ، 0) ؛ / / اضبط المؤشر على طباعة شاشة LCD للصف الأول والعام الأول (واط) ؛ lcd.print ("W") ؛ lcd.print (الجهد) ؛ lcd.print ("V") ؛ lcd.setCursor (1 ، 1) ؛ // اضبط المؤشر على طباعة شاشة LCD للصف الأول والثاني (طاقة) ؛ lcd.print ("WH") ؛ lcd.print (أمبير) ؛ lcd.print ("أ") ؛ }
الخطوة 8: تحميل البيانات إلى Xively.com
ارجع إلى لقطات الشاشة أعلاه للحصول على وضع أفضل. لتحميل البيانات إلى xively.com ، يجب تنزيل المكتبة التالية أولاً HttpClient: انقر هنا X بشكل مباشر: انقر هنا SPI: استيراد من arduino IDE (رسم تخطيطي -> مكتبة استيراد …) Ethernet: استيراد من arduino IDE ((رسم -> مكتبة استيراد…..) افتح حسابًا على https://xively.com (المعروف سابقًا باسم pachube.com و cosm.com) اشترك للحصول على حساب مطور مجاني على
اختر اسم مستخدم وكلمة مرور وحدد عنوانك ومنطقتك الزمنية وما إلى ذلك. ستتلقى رسالة تأكيد بالبريد الإلكتروني ؛
ثم اضغط على رابط التفعيل لتفعيل حسابك. بعد فتح الحساب بنجاح سيتم تحويلك إلى صفحة تطوير الأجهزة
- انقر فوق مربع + إضافة جهاز
- أعط اسمًا ووصفًا لجهازك (مثل مراقبة الطاقة) ·
- اختر بيانات خاصة أو عامة (أختار خاصة) ·
- انقر فوق إضافة جهاز
بعد إضافة الجهاز ، يتم تحويلك إلى صفحة جديدة بها العديد من المعلومات المهمة
- معرف المنتج ، وسر المنتج ، والرقم التسلسلي ، ورمز التنشيط ·
- معرف الخلاصة ، FeedURL ، نقطة نهاية API (يتم استخدام معرف الخلاصة في كود ARDUINO)
- أضف قنوات (اختر الطاقة والطاقة ، ولكن يمكنك الاختيار وفقًا لاختيارك) أعط وحدة ورمزًا للمعامل ·
- أضف موقعك
- مفاتيح API (مستخدمة في كود ARDUINO ، تجنب مشاركة هذا الرقم) ·
- المشغلات (صفحة ping aweb عند وقوع حدث ، مثل عندما يتجاوز استهلاك الطاقة حدًا معينًا)
الخطوة 9: Xively و ARDUINO Code
أرفقت هنا الكود الكامل (إصدار تجريبي) لمقياس الطاقة باستثناء تسجيل بيانات بطاقة SD المرفقة بشكل منفصل في الخطوة التالية. / ** تحميل بيانات مراقبة الطاقة إلى xively ** / #include #include #include #include #define API_KEY "xxxxxxxx" // أدخل مفتاح واجهة برمجة التطبيقات Xively #define FEED_ID xxxxxxxxx // أدخل معرف الخلاصة Xively الخاص بك // عنوان MAC الخاص بك بايت درع Ethernet mac = {0xDE، 0xAD، 0xBE، 0xEF، 0xFE، 0xED}؛ // الدبوس التناظري الذي نراقبه (يستخدم 0 و 1 بواسطة درع Ethernet) int sensorPin = 2 ؛ غير موقعة long lastConnectionTime = 0 ؛ // آخر مرة اتصلنا فيها بـ Cosm const غير موقعة long connectionInterval = 15000 ؛ // التأخير بين الاتصال بـ Cosm بالمللي ثانية // تهيئة مكتبة Cosm // تحديد السلسلة لمعرف datastream الخاص بنا char sensorId = "POWER" ؛ char sensorId2 = "الطاقة" ؛ XivelyDatastream datastreams = {XivelyDatastream (sensorId ، strlen (sensorId) ، DATASTREAM_FLOAT) ، XivelyDatastream (sensorId2 ، strlen (sensorId2) ، DATASTREAM_FLOAT) ، DATASTREAM_FLOAT) ،} ؛ // لف داتاستريم في خلاصة XivelyFeed (FEED_ID ، datastreams ، 2 / * عدد datastreams * /) ؛ عميل إيثرنت XivelyClient xivelyclient (العميل) ؛ إعداد باطل () {Serial.begin (9600) ؛ Serial.println ("تهيئة الشبكة") ؛ while (Ethernet.begin (mac)! = 1) {Serial.println ("خطأ في الحصول على عنوان IP عبر DHCP ، حاول مرة أخرى …") ؛ تأخير (15000) ؛ } Serial.println ("الشبكة مهيأة") ؛ Serial.println () ، } حلقة فارغة () {if (millis () - lastConnectionTime> connectionInterval) {sendData () ؛ // إرسال البيانات إلى xively getData () ؛ // اقرأ داتاستريم مرة أخرى من xively lastConnectionTime = millis () ؛ // تحديث وقت الاتصال حتى ننتظر قبل الاتصال مرة أخرى}} إرسال بيانات باطلة () {int sensor1 = watt؛ حساس int2 = طاقة ؛ داتاستريمز [0].setFloat (sensor1) ؛ // دارات قيمة الطاقة [1].setFloat (sensor2) ؛ // قيمة الطاقة Serial.print ("قراءة الطاقة") ؛ Serial.println (datastreams [0].getFloat ()) ؛ Serial.print ("قراءة الطاقة") ؛ Serial.println (datastreams [1].getFloat ()) ؛ Serial.println ("تحميل إلى Xively") ؛ int ret = xivelyclient.put (feed، API_KEY) ؛ Serial.print ("كود إرجاع PUT:") ؛ Serial.println (ret) ؛ Serial.println () ، } // احصل على قيمة datastream من xively ، وطباعة القيمة التي تلقيناها void getData () {Serial.println ("قراءة البيانات من Xively") ؛ int ret = xivelyclient.get (feed، API_KEY) ؛ Serial.print ("GET return code:")؛ Serial.println (ret) ؛ إذا (ret> 0) {Serial.print ("Datastream is:")؛ Serial.println (تغذية [0]) ؛ Serial.print ("قيمة الطاقة هي:") ؛ Serial.println (feed [0].getFloat ()) ؛ Serial.print ("Datastream is:") ؛ Serial.println (تغذية [1]) ؛ Serial.print ("قيمة الطاقة هي:") ؛ Serial.println (feed [1].getFloat ()) ؛ } Serial.println () ،
الخطوة 10: تسجيل البيانات في بطاقة SD
لتخزين البيانات في بطاقة SD ، يجب عليك استيراد مكتبة SD للحصول على برنامج تعليمي انقر هنا لمعرفة المزيد عن مكتبة SD انقر هنا رمز تخزين البيانات في بطاقة SD مكتوب بشكل منفصل حيث لا أمتلك ذاكرة كافية في ARDUINO UNO الخاص بي بعد كتابة التعليمات البرمجية لشاشة LCD وتحميل البيانات على xively.com. لكني أحاول تحسين كود الإصدار التجريبي بحيث يمكن أن يحتوي رمز واحد على جميع الميزات (شاشة LCD ، تحميل البيانات Xively وتخزين البيانات في بطاقة SD) ، يتم إرفاق رمز تسجيل البيانات أدناه. أفضل كود عن طريق تعديل الكود الخاص بي ، يرجى مشاركته معي ، هذا هو أول تعليمات فنية لي ، إذا وجد أي شخص أي خطأ فيه ، فلا تتردد في التعليق.. حتى أتمكن من تحسين نفسي. إذا وجدت مجالات تحسين في هذا المشروع ، يرجى التعليق أو أرسل لي رسالة ، لذا سيكون المشروع أكثر قوة وأعتقد أنه سيكون مفيدًا للآخرين وكذلك لي.
الجائزة الثالثة في مسابقة دوائر 123D
موصى به:
عداد طاقة اردوينو - V2.0: 12 خطوة (بالصور)
Arduino Energy Meter - V2.0: مرحبًا يا صديق ، مرحبًا بك مرة أخرى بعد استراحة طويلة. في وقت سابق ، قمت بنشر Instructables على Arduino Energy Meter والذي تم تصميمه بشكل أساسي لمراقبة الطاقة من الألواح الشمسية (DC Power) في قريتي. أصبح شائعًا جدًا على الإنترنت ، الكثير
عداد الوقت NE555 - تكوين عداد الوقت NE555 بتكوين مستقر: 7 خطوات
عداد الوقت NE555 | تكوين عداد الوقت NE555 في تكوين مستقر: يعد عداد الوقت NE555 أحد أكثر الدوائر المتكاملة استخدامًا في عالم الإلكترونيات. إنه على شكل DIP 8 ، مما يعني أنه يحتوي على 8 دبابيس
أرخص اردوينو -- أصغر اردوينو -- اردوينو برو ميني -- البرمجة -- اردوينو نينو: 6 خطوات (مع صور)
أرخص اردوينو || أصغر اردوينو || اردوينو برو ميني || البرمجة || اردوينو نينو: …………………………. الرجاء الاشتراك في قناتي على يوتيوب لمزيد من مقاطع الفيديو ……. يدور هذا المشروع حول كيفية التعامل مع أصغر وأرخص اردوينو على الإطلاق. أصغر وأرخص اردوينو هو اردوينو برو ميني. إنه مشابه لاردوينو
كيفية جعل مصدر طاقة مقعد قابل للتعديل من مصدر طاقة قديم للكمبيوتر الشخصي: 6 خطوات (بالصور)
كيفية صنع مصدر طاقة قابل للضبط من مصدر طاقة قديم للكمبيوتر الشخصي: لدي مصدر طاقة قديم للكمبيوتر الشخصي ، لذلك قررت أن أقوم بإخراج مصدر طاقة قابل للضبط منه ، فنحن بحاجة إلى مجموعة مختلفة من الفولتية للطاقة أو تحقق من الدوائر الكهربائية أو المشاريع المختلفة. لذلك من الرائع دائمًا أن يكون لديك
قم بتحويل مصدر طاقة ATX إلى مصدر طاقة تيار مستمر عادي!: 9 خطوات (بالصور)
قم بتحويل مصدر طاقة ATX إلى مصدر طاقة تيار مستمر عادي!: قد يكون من الصعب العثور على مصدر طاقة تيار مستمر ومكلف. مع ميزات أكثر أو أقل نجاحًا أو افتقادًا لما تحتاجه. في Instructable ، سأوضح لك كيفية تحويل مصدر طاقة الكمبيوتر إلى مصدر طاقة تيار مستمر منتظم مع 12 و 5 و 3.3 فولت