- בחירת הרכיבים המתאימים למוניטור סולארי מופעל באמצעות IoT
- דיאגרמת מעגלים לניטור אנרגיה סולארית מבוססת IoT
- הגדרת ה- ThingSpeak
- קוד Arduino לניטור אנרגיה סולארית באמצעות ESP32
- בדיקה וניטור נתונים
בתחום האנרגיה המתחדשת, אנרגיית השמש נמצאת בחזית, מכיוון שהפקת אנרגיה באמצעות כוח השמש היא הדרך הקלה והמשתלמת ביותר מבחינה מסחרית של אנרגיה מתחדשת. אם כבר מדברים על פאנלים סולאריים, יש לעקוב אחר כוח ההספק של תפוקת פנל סולארי על מנת לקבל תפוקת חשמל מיטבית מהפאנלים. זו הסיבה שמערכת ניטור בזמן אמת הופכת להיות נחוצה. בתחנת כוח סולארית גדולה ניתן להשתמש בה גם לניטור תפוקת החשמל מכל פאנל המסייע בזיהוי הצטברות האבק. זה גם מונע כל תנאי תקלה בזמן הפעולה. בחלק מהמאמרים הקודמים שלנו בנינו כמה פרויקטים שקשורים לאנרגיה סולארית כמו מטען לטלפון סלולרי המופעל באמצעות סוללה ומעגל מהפך סולארי וכו '. תוכלו לבדוק אותם אם אתם מחפשים פרויקטים נוספים בנושא אנרגיה סולארית.
בפרויקט זה, אנו נכין מערכת ניטור אנרגיה סולארית מבוססת IoT על ידי שילוב טכניקת טעינת סוללות מבוססת MPPT (Maximum Power Point Tracker), שתסייע בהפחתת זמן הטעינה ושיפור היעילות. כמו כן, נמדוד את טמפרטורת הפאנל, מתח המוצא והזרם כדי לשפר את היבט הבטיחות של המעגל. לבסוף, בראש ובראשונה, אנו נשתמש בשירותי הענן ThingSpeak כדי לפקח על נתוני הפלט מכל מקום ברחבי העולם. שים לב שפרויקט זה הוא המשך של פרויקט בקר המטען הסולארי MPPT שבנינו קודם. כאן נעקוב אחר מתח המוצא, הזרם וההספק של הפאנל באמצעות לוח הפיתוח ESP32 IoT.
בחירת הרכיבים המתאימים למוניטור סולארי מופעל באמצעות IoT
עם צג סולארי, זה הופך להיות קל מאוד לניטור ואיתור תקלות בכל מערכת סולארית. זו הסיבה שבחירת רכיבים הופכת לחלק חשוב מאוד בעת תכנון מערכת כזו. להלן רשימת החלקים בהם השתמשנו.
- לוח dev ESP32
- מעגל MPPT (יכול להיות כל מעגל סולארי)
- נגד שאנט (לדוגמא 1 אוהם 1 וואט - מתאים עד 1A זרם)
- סוללת ליתיום (עדיפה 7.4v).
- חיבור Wi-Fi פעיל
- חיישן טמפרטורה לפאנל סולארי
- מעגל מחלק מתח (ראה תיאור)
לוח Dev32 Dev:
עבור יישום התומך ב- IoT, חשוב לבחור את סוג הפיתוח המתאים מסוגו אשר יוכל לעבד את הנתונים מהסיכות האנלוגיות שלו ולשלוח את הנתונים דרך כל סוג של פרוטוקול חיבור כגון Wi-Fi או לענן. שרת. בחרנו ספציפית ב- ESP32 מכיוון שמדובר במיקרו-בקר בעלות נמוכה עם טונות של תכונות. כמו כן, יש לו רדיו Wi-Fi מובנה דרכו אנו יכולים להתחבר לאינטרנט בקלות רבה.
מעגל סולארי:
מעגל טעינה סולארי הוא מעגל שמקבל מתח גבוה יותר מהפאנל הסולארי וממיר אותו למתח טעינה כך שהוא יכול לטעון את הסוללה ביעילות. עבור פרויקט זה נשתמש במעגל בקר MPPT Charge Controller מבוסס LT3562 שכבר ביצענו באחד מהפרויקטים הקודמים שלנו. אך אם ברצונך להטמיע ניטור זה של הפעלת IoT, תוכל להשתמש בכל סוג של מעגל סולארי. בחרנו בלוח זה מכיוון שהמעגל מצויד במעקב נקודת הספק מרבי (MPPT) המועיל לפרויקטים של סוללות בעלות צריכת חשמל נמוכה. זוהי דרך יעילה לטעון סוללת ליתיום קטנה מפאנל סולארי.
נגד שאנט:
כל נגן עוקב אחר חוק האום, כלומר אם כמות מסוימת של זרם זורמת דרך הנגד, תופיע כמות מסוימת של ירידת מתח. נגדי שאנט אינם יוצאים מן הכלל לכך והוא משמש במיוחד למדידת זרימת הזרם. עם זאת, בהתאם לזרימת הזרם הנומינלית דרך הפאנל הסולארי, בחרו נגד שנט שייצור כמות נאותה של מתח שניתן למדוד על ידי יחידת המיקרו-בקר. אך יחד עם זאת, גם הספק הנגד הוא דבר חשוב. חשוב גם לבחור את הספק הנגד של שאנט.
ניתן לחשב את ירידת המתח באמצעות הנוסחה המפורטת להלן. זה ידוע כחוק אוהם-
V = I x R
V הוא המתח שיופק במהלך 'I' כלומר כמות הזרימה הנוכחית דרך כמות הנגד 'R'. לדוגמא, נגד 1 אוהם יפיק 1V של ירידת מתח כאשר זרם 1A של הזרם דרכו.
עבור הספק הנגד, ניתן להשתמש בנוסחה הבאה:
P = I 2 R
איפה שאני הוא הזרימה המרבית של הזרם, ו- R הוא ערך הנגד. עבור 1A של זרם עם נגד 1 אוהם, 1 וואט מספיק לפיזור הכוח. עם זאת, זה שימושי לפרויקטים קטנים של פאנלים סולאריים, אך בכלל לא מתאים ליישומים הקשורים לרשת סולארית. במקרה כזה, טכניקת המדידה הנוכחית הלא פולשנית היא למעשה מה שצריך להשתמש בו. במקרה כזה ניתן למדוד במדויק את זרימת הזרם במקום בו ניתן למדוד כמות נמוכה מאוד של זרם, כמו גם כמות גבוהה מאוד של זרם.
סוללת ליתיום:
הבחירה בסוללת הליתיום היא חלק חיוני בכל פרויקט אשר כולל פאנלים סולאריים. מכיוון שיחידת המיקרו-בקר שנשארת תמיד פעילה ובודקת ושולחת כל הזמן את הנתונים דורשת לפחות מאה מיליאמפר זרם להפעלה יציבה.
קיבולת הסוללה צריכה להיות משהו שיכול להניע את המיקרו-בקר למשך 4-5 ימים לפחות כאשר השמש לא זורחת בגלל המונסון. חשוב גם שזרם הטעינה חייב להיות יותר מזרם העומס מנקודת המבט של הסוללה. זה די יוצא דופן אם מישהו מחבר 100mA עומס עם סוללה ומספק זרם טעינה, שהוא פחות מזה. כדי להיות בצד הבטוח יותר, עלינו להיות בעלי זרם טעינה גבוה פי 5 מזרם העומס.
מאידך, מתח הסוללה צריך להיות גבוה יותר מכל מתח כניסה רגולטור מתח רגיל הדורש עבור המיקרו-בקר. לדוגמה, ניתן לחבר סוללת ליתיום של 7.4 וולט על רגולטור מתח לינארי של 3.3 וולט ו -5.0 וולט (מכיוון שהווסת הליניארי דורש מתח נשירה גבוה יותר מאשר ה- LDO והמתג.)
בפרויקט שלנו השתמשנו בסוללה של 4000mAH עם דירוג 7.4V. השתמשנו בווסת 5.0V המספק מספיק זרם ומתח עבור ה- ESP32.
מחלק מתח:
מחלק מתח הוא חלק חיוני במדידת המתח בפאנל סולארי. יש לבחור מחלק מתח שיחלק את המתח לפי קלט מתח ה- I / O של המיקרו-בקר.
בחר את הנגדים לעיל באופן כזה שמתח היציאה של מחלק המתח לא יעלה על מתח ה- I / O המרבי של המיקרו-בקר (3.3V עבור ESP32). עם זאת, מומלץ להשתמש בפוטנציומטר מכיוון שהוא יספק גמישות לבחירת כל דירוג מתח גבוה או נמוך יותר בפאנל סולארי ויכול לכוון בקלות את המתח באמצעות מודד.
במקרה שלנו, יש לנו פוטנציומטר במעגל לוח MPPT שפועל כמחלק מתח. הגדרנו את מחלק המתח עם מקדם חלוקה של 6V. חיברנו שני מולטי-מטר, אחד בכניסה ואחד ביציאת הסיר, וקבענו את הערך שכאשר מתח הכניסה הוא 18 וולט, הפלט יהיה 3V מאחר ומתח היציאה הנומינלי של הפאנל הסולארי הוא 18V.
חיישן טמפרטורה לפאנל סולארי:
לתפוקת הפאנל הסולארי יש קשר ישיר לטמפרטורה של הפאנל הסולארי. למה? מכיוון שככל שהטמפרטורה של פאנל סולארי מתחילה להגדיל את זרם המוצא מהלוח הסולארי עולה באופן אקספוננציאלי ואילו תפוקת המתח מתחילה להפחית באופן לינארי.
בהתאם לנוסחת ההספק, הספק שווה למתח כפול זרם (W = V x A), ירידה במתח המוצא מפחיתה גם את הספק המוצא של הפאנל הסולארי גם לאחר הגדלת זרימת הזרם. כעת, השאלה הבאה שעולה במוחנו היא, כיצד מודדים את טמפרטורת השמש? ובכן, זה מעניין למדי שכן פאנלים סולאריים נחשפים בדרך כלל לסביבת החום מכיוון שהם חשופים לאור שמש ישיר ומסיבות ברורות. הדרך הטובה ביותר למדוד את טמפרטורת הפאנל הסולארי היא באמצעות חיישן טמפרטורת משטח שטוח. כמו כן, מומלץ להשתמש בצמד תרמי מסוג K המונח ישירות בפאנל הסולארי.
ליישום שלנו, השתמשנו במודול חיישן טמפרטורה מבוסס תרמיסטור, המוצג להלן.
דיאגרמת מעגלים לניטור אנרגיה סולארית מבוססת IoT
תרשים המעגל השלם עבור צג הספק השמש המאופשר ב- IoT מוצג להלן. הסכימטי הוא פשוט. הלוח הנקודתי האדום הוא לוח ה- MPPT בו השתמשנו לפרויקט זה.
הגדרת ה- ThingSpeak
צור חשבון באמצעות ThingSpeak ועבור לאפשרות "הערוץ שלי" ואז לחץ על הערוץ החדש.
צור ערוץ חדש עם שמות השדות.
כעת לאחר הגדרת השדה, עבור לשדה API Keys שבו זמין Key API Key. צריך לספק מפתח זה בקוד כמו גם במזהה הערוץ.
ניתן למצוא את כתובת ThingSpeak באותו עמוד.
בעזרת השלבים שלעיל, תוכל להגדיר את ThingSpeak בקלות רבה. אם אתה רוצה ללמוד עוד על ThingSpeak ותהליך ההתקנה שלה, אתה יכול לבדוק את המאמרים הקודמים שלנו בנושא.
קוד Arduino לניטור אנרגיה סולארית באמצעות ESP32
את קוד הניטור הסולארי של ESP32 השלם ניתן למצוא בתחתית עמוד זה. הקוד מתחיל בהגדרת ה- SSID, הסיסמה וכמה פרמטרים קבועים אחרים כמוצג להלן.
// הגדירו את ה- SSID וה- PWD של WiFi עבור העלאת קישור. #define WLAN_SSID "xxxx" #define WLAN_PASS "xxxxxxxxxx"
// התנגדות ב 25 מעלות צלזיוס # הגדר THERMISTORNOMINAL 10000 // temp. להתנגדות נומינלית (כמעט תמיד 25 צלזיוס) # הגדר TEMPERATURENOMINAL 25 // מקדם הבטא של התרמיסטור (בדרך כלל 3000-4000) # הגדר BCOEFFICIENT 3950 // ערך הנגד 'האחר' # הגדר SERIESRESISTOR 10000
אוהם נומינלי תרמיסטור מסופק בטמפרטורה הנומינלית. הגדר ערך זה בהתאם לגליון הנתונים של התרמיסטור. שים את מקדם הבטא ואת ערך הנגד הסדרתי של התרמיסטור.
// הגדר אנלוגי לזרם ומתח const int curr_an_pin = 35; const int volt_an_pin = 34; const int ntc_temp_an_pin = 33;
קוד ה- PIN מוגדר כאן.
# הגדר דבר SpeakAddress "xxxxxxxxx" # הגדר ערוץ מזהה xxxxx # הגדר כתוב הזנה APIKey "xxxxxxx" # הגדר readFeedAPIKey "xxxxxxx" # הגדר readFieldAPIKey "xxxxxxxx" # הגדר readStatusAPIKey "xxxxxxx"
שים את הדברSpeakAddress, channelID, כתוב ה- API של Feed Feed. שאר הדברים אינם נדרשים אך עדיין שימושיים אם צריך לקבל נתונים מהאינטרנט.
בטל התקנה () { // שים את קוד ההתקנה שלך כאן, להפעלה פעם אחת: // הגדר את היציאה הטורית על 115200 Serial.begin (115200); // אתחל עיכוב סדרתי (1000); WiFi.mode (WIFI_STA); ThingSpeak.begin (לקוח); // אתחל את ThingSpeak // todo: צור משימה לקריאת סיכה לקבלת זרם ומתח וחישוב וואט וטמפרטורה של הפאנל הסולארי xTaskCreate ( wifi_task, / * פונקציית משימה. * / "Wifi_task", / * מחרוזת עם שם משימה. * / 1024 * 2, / * גודל מחסנית בתים. * / NULL, / * פרמטר הועבר כקלט למשימה * / 5, / * עדיפות המשימה. * / NULL); / * ידית משימות. * / Serial.print ("קריאת נתונים."); }
בקוד לעיל, אתחול שרת ThingSpeak ונוצרת משימה שתקבל את הנתונים הקשורים לפאנל הסולארי.
בלולאה הראשית, הזרם והמתח הסולארי מורגשים באמצעות סיכה אנלוגית והממוצע נעשה.
צף solar_curr_adc_val = 0; צף solar_volt_adc_val = 0; עבור (i = 0; i <NUMSAMPLES; i ++) { curr_samples = analogRead (curr_an_pin); volt_samples = analogRead (volt_an_pin); temp_samples = analogRead (ntc_temp_an_pin); עיכוב (10); } // הממוצע של כל הדגימות החוצה צף curr_avg = 0; צף volt_avg = 0; צף temp_avg = 0; עבור (i = 0; i <NUMSAMPLES; i ++) { curr_avg + = curr_samples; volt_avg + = volt_samples; temp_avg + = temp_samples; } curr_avg / = NUMSAMPLES; volt_avg / = NUMSAMPLES; temp_avg / = NUMSAMPLES; //Serial.print("ADC VALUE = "); //Serial.println(ADC_VALUE); // להמיר ערך ADC למתחים כדי לקבל זרם ומתח בפועל. צף solar_curr = (curr_avg * 3.3) / (4095); צף solar_volt = (volt_avg * 3.3) / (4095); // באמצעות מחלק מתח אנו מורידים את המתח בפועל. / / מסיבה זו אנו מכפילים את 6 במתח ממוצע כדי לקבל את המתח בפועל של הפאנל הסולארי. שמש_מתח * = 6;
המתח הסולארי מוגש על ידי הכפלה עם 6 כאשר יצרנו את מחלק המתח שיחלק את מתח הכניסה פי 6.
הטמפרטורה נוצרת מהתרמיסטור באמצעות תצורה לוגריתמית.
// להמיר את הערך להתנגדות temp_avg = 4095 / temp_avg - 1; temp_avg = SERIESRESISTOR / temp_avg; //Serial.print("התנגדות טרמיסטור"); //Serial.println(temp_avg); שטיינהרט צף; steinhart = temp_avg / THERMISTORNOMINAL; // (R / Ro) steinhart = log (steinhart); // ln (R / Ro) steinhart / = BCOEFFICIENT; // 1 / B * ln (R / Ro) steinhart + = 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1 / To) steinhart = 1.0 / steinhart; // הפוך את סטינהרט - = 273.15; // להמיר טמפ 'מוחלט ל- C
הנתונים נקראים כל 15 שניות.
עיכוב (1000); ספירת ++; Serial.print ("."); אם (ספירה> = 15) { ספירה = 0; Serial.println ("================================================== ============================== "); Serial.print ("מתח סולארי ="); Serial.println (solar_volt); Serial.print ("זרם סולארי ="); Serial.println (solar_curr); צף solar_watt = solar_volt * sun_curr; Serial.print ("ואט סולארי ="); Serial.println (solar_watt); Serial.print ("טמפרטורת שמש ="); Serial.println (steinhart); Serial.println ("================================================== ============================== ");
הנתונים עבור שדות בהתאמה מועברים באמצעות הפונקציה Thing.Speak.setField (); כאשר ה- WiFi מחובר.
אם (WiFi.status () == WL_CONNECTED) { ThingSpeak.setField (1, solar_volt); ThingSpeak.setField (2, solar_curr); ThingSpeak.setField (3, solar_watt); ThingSpeak.setField (4, steinhart); // כתוב לערוץ ThingSpeak int x = ThingSpeak.writeFields (channelID, writeFeedAPIKey); אם (x == 200) { Serial.println ("עדכון הערוצים הצליח."); } אחר { Serial.println ("בעיה בעדכון הערוץ. קוד שגיאת HTTP" + מחרוזת (x)); } } אחר { Serial.println ("\ r \ n ############################################################################### ######################## "); Serial.println ("נכשל עדכון הנתונים לשרת thingSpeak."); Serial.println ("WiFi לא מחובר…"); Serial.println ("########################################################################## ############### \ r \ n "); } Serial.print ("קריאת נתונים."); } }
משימת ה- Wi-Fi שנוצרה בקטע הקוד שלהלן-
void wifi_task (void * parameter) { while (1) { if (WiFi.status ()! = WL_CONNECTED) { Serial.print ("מנסה להתחבר ל- SSID:"); Serial.println (WLAN_SSID); בעוד (WiFi.status ()! = WL_CONNECTED) { WiFi.begin (WLAN_SSID, WLAN_PASS); // התחבר לרשת WPA / WPA2. שנה שורה זו אם אתה משתמש ב- Serial.print (".") ברשת פתוחה או ב- WEP ; עיכוב (5000); } Serial.println ("\ n מחובר."); Serial.println (); Serial.println ("WiFi מחובר"); Serial.println ("כתובת IP:"); Serial.println (WiFi.localIP ()); } vTaskDelay (1000 / portTICK_PERIOD_MS); } vTaskDelete (NULL); }
בדיקה וניטור נתונים
הפאנל הסולארי מחובר למעגל ומונח באור השמש לבדיקה כמוצג להלן.
העבודה המלאה מודגמת בסרטון להלן. המעגל שלנו הצליח לקרוא את מתח המוצא, הזרם וההספק מהלוח ולעדכן אותו בשידור חי בערוץ ה- Thingspeak כמוצג להלן.
כפי שאנו רואים, נתונים של 15 דקות מוצגים בגרף שלעיל. מכיוון שמדובר בפרויקט פעולה חיצוני, יש להשתמש ב- PCB תקין יחד עם תיבה סגורה. יש להכין את המתחם באופן שהמעגל יישאר עמיד למים בגשם. כדי לשנות את המעגל הזה או לדון בהיבטים נוספים של פרויקט זה, אנא השתמש בפורום הפעיל של Circuit Digest. מקווה שנהנית מההדרכה ולמדת משהו שימושי.