- Chọn các thành phần phù hợp cho Màn hình năng lượng mặt trời được kích hoạt IoT
- Sơ đồ mạch cho Giám sát năng lượng mặt trời dựa trên IoT
- Thiết lập ThingSpeak
- Mã Arduino để giám sát năng lượng mặt trời sử dụng ESP32
- Dữ liệu kiểm tra và giám sát
Trong lĩnh vực năng lượng tái tạo, năng lượng mặt trời đứng đầu, bởi vì sản xuất năng lượng bằng cách sử dụng sức mạnh của mặt trời là cách dễ nhất và khả thi về mặt thương mại của năng lượng tái tạo. Nói về tấm pin mặt trời, công suất đầu ra của đầu ra tấm pin mặt trời cần được theo dõi để có được sản lượng điện tối ưu từ các tấm pin. Đây là lý do tại sao một hệ thống giám sát thời gian thực trở nên cần thiết. Trong một nhà máy điện mặt trời lớn, nó cũng có thể được sử dụng để theo dõi sản lượng điện từ mỗi bảng điều khiển giúp xác định sự tích tụ bụi. Nó cũng ngăn ngừa bất kỳ điều kiện lỗi nào trong thời gian hoạt động. Trong một số bài viết trước của chúng tôi, chúng tôi đã xây dựng một vài dự án liên quan đến năng lượng mặt trời như bộ sạc điện thoại di động chạy bằng năng lượng mặt trời và mạch biến tần năng lượng mặt trời, v.v. Bạn có thể kiểm tra những dự án đó nếu bạn đang tìm kiếm thêm các dự án về năng lượng mặt trời.
Trong dự án này, chúng tôi sẽ tạo ra một Hệ thống giám sát năng lượng mặt trời dựa trên IoT bằng cách kết hợp kỹ thuật sạc pin dựa trên MPPT (Maximum Power Point Tracker), sẽ giúp giảm thời gian sạc và nâng cao hiệu quả. Ngoài ra, chúng tôi sẽ đo nhiệt độ bảng điều khiển, điện áp đầu ra và dòng điện để cải thiện khía cạnh an toàn của mạch. Cuối cùng, trên hết, chúng tôi sẽ sử dụng các dịch vụ đám mây ThingSpeak để theo dõi dữ liệu đầu ra từ mọi nơi trên thế giới. Lưu ý rằng dự án này là sự tiếp nối của Dự án Bộ điều khiển sạc năng lượng mặt trời MPPT mà chúng tôi đã xây dựng trước đó. Ở đây, chúng tôi sẽ theo dõi điện áp đầu ra, dòng điện và công suất của bảng điều khiển bằng cách sử dụng bảng phát triển IoT của ESP32.
Chọn các thành phần phù hợp cho Màn hình năng lượng mặt trời được kích hoạt IoT
Với màn hình năng lượng mặt trời, việc theo dõi và phát hiện lỗi trong bất kỳ hệ thống năng lượng mặt trời nào trở nên rất dễ dàng. Đây là lý do tại sao lựa chọn thành phần trở thành một phần rất quan trọng khi thiết kế một hệ thống như vậy. Dưới đây là danh sách các bộ phận mà chúng tôi đã sử dụng.
- Bảng nhà phát triển ESP32
- Mạch MPPT (có thể là bất kỳ mạch năng lượng mặt trời nào)
- Một điện trở shunt (ví dụ 1 Ohm 1 watt - phù hợp với dòng điện lên đến 1A)
- Pin lithium (ưu tiên 7.4v).
- Kết nối Wi-Fi đang hoạt động
- Cảm biến nhiệt độ cho bảng điều khiển năng lượng mặt trời
- Mạch phân áp (xem mô tả)
Ban phát triển Esp32:
Đối với một ứng dụng hỗ trợ IoT, điều cần thiết là phải chọn đúng loại bảng phát triển có thể xử lý dữ liệu từ các chân tương tự của nó và gửi dữ liệu qua bất kỳ loại giao thức kết nối nào như Wi-Fi hoặc đám mây. người phục vụ. Chúng tôi đặc biệt lựa chọn ESP32 vì nó là bộ vi điều khiển giá rẻ với rất nhiều tính năng. Ngoài ra, nó còn có đài Wi-Fi tích hợp, qua đó chúng ta có thể kết nối internet rất dễ dàng.
Mạch năng lượng mặt trời:
Mạch sạc năng lượng mặt trời là mạch nhận điện áp cao hơn từ bảng điều khiển năng lượng mặt trời và chuyển nó xuống điện áp sạc để có thể sạc pin hiệu quả. Đối với dự án này, chúng tôi sẽ sử dụng Bảng mạch điều khiển sạc MPPT dựa trên LT3562 mà chúng tôi đã thực hiện trong một trong những dự án trước đây của mình. Nhưng nếu bạn muốn nhúng IoT này cho phép giám sát, bạn có thể sử dụng bất kỳ loại mạch năng lượng mặt trời nào. Chúng tôi đã chọn bảng này vì mạch được trang bị Theo dõi điểm công suất tối đa (MPPT) có lợi cho các dự án bảng điều khiển năng lượng mặt trời công suất thấp. Đó là một cách hiệu quả để sạc pin lithium nhỏ từ tấm pin năng lượng mặt trời.
Điện trở Shunt:
Bất kỳ điện trở nào cũng tuân theo định luật ohm, có nghĩa là nếu một lượng dòng điện nhất định chạy qua điện trở, một lượng điện áp giảm nhất định sẽ xuất hiện. Điện trở Shunt không phải là một ngoại lệ và nó được sử dụng đặc biệt để đo dòng điện. Tuy nhiên, tùy thuộc vào dòng điện danh định chạy qua bảng điều khiển năng lượng mặt trời, hãy chọn một điện trở shunt sẽ tạo ra một lượng điện áp thích hợp có thể được đo bằng bộ vi điều khiển. Tuy nhiên, đồng thời, công suất của điện trở cũng là một điều quan trọng. Việc lựa chọn công suất điện trở shunt cũng rất quan trọng.
Điện áp rơi có thể được tính bằng công thức dưới đây. Đây được gọi là định luật Ohm-
V = I x R
V là điện áp sẽ được tạo ra trong thời gian 'I' tức là lượng dòng điện chạy qua điện trở 'R'. Ví dụ, điện trở 1 ohm sẽ tạo ra điện áp giảm 1V khi dòng điện 1A chạy qua nó.
Đối với công suất của điện trở, có thể sử dụng công thức cho dưới đây-
P = I 2 R
Trong đó I là cường độ dòng điện cực đại và R là giá trị điện trở. Đối với dòng điện 1A với điện trở 1 Ohms, 1 watt là đủ để tiêu tán công suất. Tuy nhiên, điều này hữu ích cho các dự án tấm pin mặt trời nhỏ nhưng không phù hợp cho các ứng dụng liên quan đến lưới điện mặt trời. Trong trường hợp như vậy, kỹ thuật đo dòng điện không xâm lấn thực sự là thứ cần được sử dụng. Trong trường hợp như vậy, dòng điện có thể được đo chính xác khi có thể đo được lượng dòng điện rất thấp cũng như lượng dòng điện rất cao.
Pin Lithium:
Việc lựa chọn pin lithium là một phần thiết yếu của bất kỳ dự án nào liên quan đến các tấm pin mặt trời. Bởi vì bộ vi điều khiển luôn bật và liên tục kiểm tra và gửi dữ liệu yêu cầu dòng điện ít nhất một trăm miliampe để hoạt động ổn định.
Dung lượng pin phải là thứ có thể cung cấp năng lượng cho bộ vi điều khiển trong ít nhất 4-5 ngày khi mặt trời không chiếu vì gió mùa. Điều quan trọng nữa là dòng sạc phải nhiều hơn dòng tải từ quan điểm của pin. Khá bất thường nếu ai đó kết nối tải 100mA với pin và cung cấp dòng điện sạc, nhỏ hơn thế. Để an toàn hơn, chúng ta nên có dòng nạp nhiều hơn dòng tải ít nhất 5 lần.
Mặt khác, điện áp pin cần phải cao hơn bất kỳ điện áp đầu vào bộ điều chỉnh điện áp thông thường nào yêu cầu đối với bộ vi điều khiển. Ví dụ: một pin lithium 7,4V có thể được kết nối qua cả bộ điều chỉnh điện áp tuyến tính 3,3V và 5,0V (vì bộ điều chỉnh tuyến tính yêu cầu điện áp xả cao hơn so với LDO và Chuyển mạch.)
Trong dự án của chúng tôi, chúng tôi sử dụng pin 4000mAH với định mức 7.4V. Chúng tôi đã sử dụng bộ điều chỉnh 5.0V cung cấp đủ đầu ra dòng điện và điện áp cho ESP32.
Chia điện áp:
Bộ chia điện áp là một phần thiết yếu của phép đo điện áp bảng điều khiển năng lượng mặt trời. Người ta nên chọn một bộ chia điện áp sẽ chia điện áp theo đầu vào điện áp I / O của vi điều khiển.
Chọn các điện trở trên sao cho điện áp đầu ra của bộ chia điện áp không được vượt quá điện áp I / O tối đa của bộ vi điều khiển (3,3V đối với ESP32). Tuy nhiên, nên sử dụng chiết áp vì nó sẽ mang lại sự linh hoạt để chọn bất kỳ bảng điều khiển năng lượng mặt trời nào đánh giá điện áp cao hơn hoặc thấp hơn và có thể dễ dàng đặt điện áp bằng cách sử dụng đồng hồ vạn năng.
Trong trường hợp của chúng tôi, chúng tôi có một chiết áp trong bảng mạch MPPT hoạt động như một bộ chia điện áp. Chúng tôi đặt bộ chia điện áp với hệ số phân chia là 6V. Chúng tôi đã kết nối hai đồng hồ đa năng, một ở đầu vào và một ở đầu ra của nồi, và đặt giá trị mà khi điện áp đầu vào là 18V, đầu ra sẽ là 3V vì điện áp đầu ra danh định của bảng điều khiển năng lượng mặt trời là 18V.
Cảm biến nhiệt độ cho bảng điều khiển năng lượng mặt trời:
Sản lượng điện của tấm pin mặt trời có mối liên hệ trực tiếp với nhiệt độ của tấm pin mặt trời. Tại sao? Bởi vì khi nhiệt độ của bảng điều khiển năng lượng mặt trời bắt đầu tăng, dòng điện đầu ra từ bảng điều khiển năng lượng mặt trời tăng theo cấp số nhân trong khi đầu ra điện áp bắt đầu giảm tuyến tính.
Theo công thức công suất, Công suất bằng điện áp nhân với dòng điện (W = V x A), giảm điện áp đầu ra cũng làm giảm công suất đầu ra của bảng điều khiển năng lượng mặt trời ngay cả sau khi dòng điện tăng lên. Bây giờ, câu hỏi tiếp theo xuất hiện trong đầu chúng ta là, làm thế nào để đo nhiệt độ mặt trời? Chà, khá thú vị vì các tấm pin mặt trời thường tiếp xúc với môi trường nhiệt vì nó tiếp xúc trực tiếp với ánh sáng mặt trời và vì những lý do rõ ràng. Cách tốt nhất để đo nhiệt độ bảng điều khiển năng lượng mặt trời là sử dụng cảm biến nhiệt độ bề mặt phẳng. Người ta cũng đề xuất sử dụng cặp nhiệt điện loại K đặt trực tiếp trong bảng năng lượng mặt trời.
Đối với ứng dụng của chúng tôi, chúng tôi đã sử dụng mô-đun cảm biến nhiệt độ dựa trên nhiệt điện trở, được hiển thị bên dưới.
Sơ đồ mạch cho Giám sát năng lượng mặt trời dựa trên IoT
Sơ đồ mạch hoàn chỉnh cho Màn hình năng lượng mặt trời được kích hoạt IoT được hiển thị bên dưới. Giản đồ rất đơn giản. Bảng chấm gạch ngang màu đỏ là bảng MPPT mà chúng tôi đã sử dụng cho dự án này.
Thiết lập ThingSpeak
Tạo tài khoản với ThingSpeak và chuyển đến tùy chọn “kênh của tôi”, sau đó nhấp vào Kênh mới.
Tạo kênh mới với tên trường.
Bây giờ sau khi thiết lập trường, hãy chuyển đến trường Khóa API nơi có Khóa ghi API. Khóa này cần được cung cấp trong mã cũng như ID kênh.
Địa chỉ ThingSpeak có thể được tìm thấy trên cùng một trang.
Với các bước trên, bạn có thể thiết lập ThingSpeak rất dễ dàng. Nếu bạn muốn tìm hiểu thêm về ThingSpeak và quá trình thiết lập của nó, bạn có thể xem các bài viết trước của chúng tôi về chủ đề này.
Mã Arduino để giám sát năng lượng mặt trời sử dụng ESP32
Bạn có thể tìm thấy mã giám sát năng lượng mặt trời ESP32 đầy đủ ở cuối trang này. Đoạn mã bắt đầu bằng việc xác định SSID, Mật khẩu và một vài tham số không đổi khác như hình dưới đây.
// xác định WiFi SSID & PWD cho đường lên. # xác định WLAN_SSID "xxxx" # xác định WLAN_PASS "xxxxxxxxxx"
// kháng ở 25 độ C #define THERMISTORNOMINAL 10000 // nhiệt độ. đối với điện trở danh định (hầu như luôn luôn là 25 C) #define TEMPERATURENOMINAL 25 // Hệ số beta của nhiệt điện trở (thường là 3000-4000) #define BCOEFFICIENT 3950 // giá trị của điện trở 'khác' #define SERIESRESISTOR 10000
Ôm danh định của nhiệt điện trở được cung cấp ở nhiệt độ danh định. Đặt giá trị này tùy thuộc vào biểu dữ liệu của nhiệt điện trở. Đặt hệ số Beta và giá trị điện trở nối tiếp của nhiệt điện trở.
// định nghĩa Analog cho dòng điện và điện áp const int curr_an_pin = 35; const int volt_an_pin = 34; const int ntc_temp_an_pin = 33;
Các mã PIN được xác định ở đây.
#define thingSpeakAddress "xxxxxxxxx" #define channelID xxxxx #define writeFeedAPIKey "xxxxxxx" #define readFeedAPIKey "xxxxxxx" #define readFieldAPIKey "xxxxxxxx" #define readStatusAPIKey "xxxxxxx"
Đặt điềuSpeakAddress, channelID, Write Feed API Key. Những thứ còn lại không bắt buộc nhưng vẫn hữu ích nếu dữ liệu cần được nhận từ web.
void setup () { // đặt mã thiết lập của bạn ở đây, để chạy một lần: // đặt cổng nối tiếp ở 115200 Serial.begin (115200); // Khởi tạo trễ nối tiếp (1000); WiFi.mode (WIFI_STA); ThingSpeak.begin (máy khách); // Khởi tạo ThingSpeak // todo: tạo một tác vụ để đọc một chân để lấy dòng điện & điện áp và tính toán watt và nhiệt độ của bảng điều khiển năng lượng mặt trời xTaskCreate ( wifi_task, / * Hàm tác vụ. * / "Wifi_task", / * Chuỗi có tên của nhiệm vụ. * / 1024 * 2, / * Kích thước ngăn xếp tính bằng byte. * / NULL, / * Tham số được truyền làm đầu vào của tác vụ * / 5, / * Mức độ ưu tiên của tác vụ. * / NULL); / * Điều khiển tác vụ. * / Serial.print ("Đọc dữ liệu."); }
Trong đoạn mã trên, máy chủ ThingSpeak được khởi tạo và một tác vụ được tạo sẽ lấy dữ liệu liên quan đến bảng điều khiển năng lượng mặt trời.
Trong vòng lặp chính, dòng điện và điện áp mặt trời được cảm nhận thông qua một chân tương tự và mức trung bình được thực hiện.
float Solar_curr_adc_val = 0; float Solar_volt_adc_val = 0; for (i = 0; i <NUMSAMPLES; i ++) { curr_samples = analogRead (curr_an_pin); volt_samples = analogRead (volt_an_pin); temp_samples = analogRead (ntc_temp_an_pin); chậm trễ (10); } // tính trung bình của tất cả các mẫu ra float curr_avg = 0; float volt_avg = 0; float temp_avg = 0; for (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); // chuyển đổi giá trị adc thành điện áp để nhận Dòng điện & Điện áp thực tế. float Solar_curr = (curr_avg * 3.3) / (4095); float solar_volt = (volt_avg * 3.3) / (4095); // bằng cách sử dụng bộ chia điện áp, chúng ta giảm điện áp thực tế xuống. // vì lý do đó, chúng tôi nhân 6 với điện áp trung bình để có được điện áp thực tế của bảng điều khiển năng lượng mặt trời. Solar_volt * = 6;
Điện áp mặt trời được gửi bằng cách nhân với 6 khi chúng tôi tạo bộ chia điện áp sẽ chia điện áp đầu vào cho 6 lần.
Nhiệt độ được tạo ra từ nhiệt điện trở bằng cách sử dụng hình thức logarit.
// chuyển đổi giá trị thành kháng temp_avg = 4095 / temp_avg - 1; temp_avg = SERIESRESISTOR / temp_avg; //Serial.print(" Điện trở điện trở "); //Serial.println(temp_avg); phao steinhart; 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 / Tới) steinhart = 1.0 / steinhart; // Đảo ngược steinhart - = 273.15; // chuyển đổi nhiệt độ tuyệt đối sang C
Dữ liệu được đọc sau mỗi 15 giây.
chậm trễ (1000); tính ++; Serial.print ("."); if (count> = 15) { count = 0; Serial.println ("============================================= ============================ "); Serial.print ("Điện áp mặt trời ="); Serial.println (solar_volt); Serial.print ("Dòng điện mặt trời ="); Serial.println (solar_curr); float Solar_watt = solar_volt * solar_curr; Serial.print ("Watt năng lượng mặt trời ="); Serial.println (solar_watt); Serial.print ("Nhiệt độ Mặt trời ="); Serial.println (steinhart); Serial.println ("============================================= ============================ ");
Dữ liệu cho các trường tương ứng được truyền bằng hàm Thing.Speak.setField (); khi kết nối WiFi.
if (WiFi.status () == WL_CONNECTED) { ThingSpeak.setField (1, solar_volt); ThingSpeak.setField (2, solar_curr); ThingSpeak.setField (3, solar_watt); ThingSpeak.setField (4, steinhart); // ghi vào kênh ThingSpeak int x = ThingSpeak.writeFields (channelID, writeFeedAPIKey); if (x == 200) { Serial.println ("Cập nhật kênh thành công."); } else { Serial.println ("Sự cố khi cập nhật kênh. Mã lỗi HTTP" + String (x)); } } else { Serial.println ("\ r \ n ######################################## ######################## "); Serial.println ("Không cập nhật được Dữ liệu lên Máy chủ thingSpeak."); Serial.println ("WiFi không được kết nối…"); Serial.println ("################################################ ############### \ r \ n "); } Serial.print ("Đọc dữ liệu."); } }
Tác vụ Wi-Fi được tạo trong đoạn mã dưới đây-
void wifi_task (void * parameter) { while (1) { if (WiFi.status ()! = WL_CONNECTED) { Serial.print ("Đang cố gắng kết nối với SSID:"); Serial.println (WLAN_SSID); while (WiFi.status ()! = WL_CONNECTED) { WiFi.begin (WLAN_SSID, WLAN_PASS); // Kết nối với mạng WPA / WPA2. Thay đổi dòng này nếu sử dụng mạng mở hoặc WEP Serial.print ("."); chậm trễ (5000); } Serial.println ("\ nConnected."); Serial.println (); Serial.println ("Đã kết nối WiFi"); Serial.println ("Địa chỉ IP:"); Serial.println (WiFi.localIP ()); } vTaskDelay (1000 / portTICK_PERIOD_MS); } vTaskDelete (NULL); }
Dữ liệu kiểm tra và giám sát
Bảng điều khiển năng lượng mặt trời được kết nối với mạch điện và đặt dưới ánh sáng mặt trời để thử nghiệm như hình dưới đây.
Hoạt động hoàn chỉnh được minh họa trong video dưới đây. Mạch của chúng tôi có thể đọc điện áp đầu ra, dòng điện và công suất từ bảng điều khiển và cập nhật trực tiếp trên kênh điều khiển như hình dưới đây.
Như chúng ta thấy, dữ liệu 15 phút được hiển thị trong biểu đồ trên. Vì đây là một dự án hoạt động ngoài trời, cần phải sử dụng PCB thích hợp cùng với hộp kèm theo. Vỏ bọc cần được chế tạo sao cho mạch điện không thấm nước khi mưa. Để sửa đổi mạch này hoặc để thảo luận về các khía cạnh khác của dự án này, vui lòng sử dụng diễn đàn hoạt động của Circuit Digest. Hy vọng bạn thích hướng dẫn và học được điều gì đó hữu ích.