1. Trang chủ
  2. » Tất cả

Luận án nghiên cứu một số phương pháp nâng cao hiệu quả khai thác nguồn pin mặt trời

166 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

1 MỞ ĐẦU Tính cấp thiết đề tài Trong bối cảnh nguồn lượng truyền thống nhiệt điện, thủy điện, ngày cạn kiệt gây ô nhiễm môi trường, động lực sử dụng nguồn lượng tái tạo mặt trời, gió ngày trở nên mạnh mẽ Tỷ trọng loại nguồn tăng lên theo cấp số nhân qua năm, nhận quan tâm phủ quốc gia toàn giới, nhà khoa học tất lĩnh vực liên quan Nguồn pin mặt trời (PVg) với ưu khơng gây tiếng ồn, lắp đặt nơi kể khu dân cư giúp cho trình phổ biến loại nguồn hệ thống điện nhanh so với nguồn khác Trong đó, vấn đề khai thác tối đa khả phát công suất nhờ biện pháp tìm điểm cơng suất cực đại (MPP) kỹ thuật điều khiển biến đổi (BBĐ) loại BBĐ khác hệ thống khai thác PVg mục tiêu trọng tâm nghiên cứu nước giới nhà điều khiển học Hiện nay, có nhiều nghiên cứu tìm MPP Tuy nhiên, chưa có nghiên cứu giải cách trọn vẹn vấn đề khai thác tối đa công suất điều kiện vận hành dựa mơ hình đầy đủ PVg, qua chưa đánh giá hiệu lượng thực đầy đủ, xác q trình khai thác PVg Nguyên nhân điều trước thiết bị đo công suất xạ mặt trời (G), nhiệt độ T lớp tiếp giáp p-n chưa thực phổ biến, chưa phù hợp với chủng loại PVg, giá thành cao Đặc biệt, mơ hình tốn học PVg phục vụ cho q trình mơ hình hóa, mơ phỏng, thực nghiệm chưa nhận quan tâm giải triệt để Bởi tác giả chọn đề tài nghiên cứu "Nghiên cứu số phương pháp nâng cao hiệu khai thác nguồn pin mặt trời " nhằm hồn thiện vấn đề cịn bỏ ngỏ chưa quan tâm đầy đủ kể -2- Mục đích nghiên cứu Đề tài tập trung nghiên cứu hồn thiện mơ hình tốn học cho PVg, xây dựng giải pháp giúp xác định xác thơng số MPP, qua thiết lập biện pháp điều khiển khai thác tối đa công suất PVg điều kiện vận hành thực tế, có xét tới thay đổi ngẫu nhiên (G, T) Đối tượng phạm vi nghiên cứu - Đối tượng nghiên cứu: Cấu trúc hệ thống khai thác PVg làm từ chất bán dẫn cấu trúc tinh thể mạng điện phân tán công suất vừa nhỏ - Phạm vi nghiên cứu: cell PVg đồng làm việc điều kiện giống Trọng tâm nghiên cứu luận án - Nghiên cứu áp dụng phương pháp Newton-Raphson xác định thông số ẩn cho PVg - Đề xuất áp dụng kỹ thuật IB (dị chia đơi) xác định thơng số MPP mối quan hệ hệ số đặc trưng n với nhiệt độ T lớp tiếp giáp p-n - Kết hợp kỹ thuật IB bám điểm công suất cực đại (MPPT) với kỹ thuật điều khiển trượt (SMC) kỹ thuật điều khiển điện áp trung bình (AVC) để điều khiển BBĐ DC/DC buck BBĐ DC/DC boost nhằm đạt mục tiêu bám đuổi MPP thời điểm, qua nâng cao hiệu khai thác lượng từ PVg - Hoàn thiện cấu trúc ghép nối lưới cho PVg, thực việc điều khiển khai thác tối đa công suất thu từ PVg - Xây dựng cấu trúc mô hệ thống Matlab để kiểm chứng kết nghiên cứu lý thuyết, đồng thời kết hợp cho cài đặt điều khiển mơ hình thiết bị thực Phương pháp nghiên cứu - Phân tích hệ thống xác định đặc thù đối tượng nghiên cứu thông qua nhiều cách tiếp cận -3- - Lựa chọn xây dựng cơng cụ tính tốn tốn học cần thiết cho nghiên cứu - Lựa chọn công cụ đánh giá kiểm chứng kết nghiên cứu, cụ thể là: Mơ hình hóa mơ phần mềm Matlab cài đặt thử nghiệm thuật toán điều khiển mơ hình thiết bị thực Ý nghĩa khoa học thực tiễn đề tài - Ý nghĩa khoa học đề tài hồn thiện mơ hình tốn học cho cấu trúc PVg bất kỳ, xây dựng giải tốn xác định xác thông số MPP điều kiện vận hành thực tế, qua thiết lập biện pháp điều khiển giúp khai thác hồn tồn cơng suất điều kiện vận hành với giá trị (G, T) - Ý nghĩa thực tiễn xây dựng mơ hình tốn đầy đủ PVg bổ sung cho tài liệu, sách, đồng thời làm sở cho nghiên cứu chuyên sâu lĩnh vực điều khiển khai thác loại nguồn Hơn nữa, đề tài đem lại kinh nghiệm cài đặt điều khiển hệ thống khai thác PVg nói riêng dạng nguồn phân tán sử dụng lượng tái tạo khác nói chung Cấu trúc luận án Luận án bố cục thành chương Chương 1: Giới thiệu tổng quan vấn đề nghiên cứu thông qua cách tiếp cận khoa học dựa nguồn tài liệu cập nhật công bố khoa học giới liên quan đến hướng nghiên cứu đề tài Phân tích xác định vấn đề cần nghiên cứu cho đề tài Chương 2: Trình bày nghiên cứu PVg - Xây dựng mơ hình đầy đủ cho PVg, bổ sung thông số chưa nói tới nghiên cứu trước - Xây dựng thuật tốn xác định xác MPP mơ hình PVg đầy đủ -4- - Đề xuất áp dụng kết nghiên cứu cấu trúc nguồn phân tán công suất vừa nhỏ Chương 3: Thiết kế hệ thống điều khiển PVg đáp ứng mục tiêu đề tài - Xây dựng mơ hình đối tượng điều khiển mạch lực hệ thống khai thác PVg có kết nối lưới - Thiết kế điều khiển có áp dụng thuật tốn xây dựng chương - Mô điều khiển hoạt động hệ thống, so sánh chất lượng điều khiển với phương pháp trước Chương 4: Xây dựng mơ hình thực nghiệm với quy mơ nhỏ, đủ để kiểm chứng số kết nghiên cứu - Xây dựng sơ đồ lắp đặt đấu nối thiết bị mạch lực với thiết bị đo, thiết bị điều khiển - Cài đặt điều khiển thiết bị thực - Đánh giá kết thực nghiệm thu để thấy tính đắn kết hợp kỹ thuật IB AVC Đồng thời, so sánh hiệu lượng điều kiện vận hành thực tế hệ thống có áp dụng kết nghiên cứu với hệ thống áp dụng số phương pháp điều khiển trước Kết luận chung luận án kiến nghị -5- CHƯƠNG TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU 1.1 Khái quát nguồn pin mặt trời PVg phổ biến cấu thành từ chất bán dẫn cấu trúc tinh thể (các nguyên tố thuộc phân nhóm nhóm IV bảng tuần hồn ngun tố hóa học) Silicon, Germanium hình thành lớp tiếp xúc bán dẫn p-n có khả biến đổi trực tiếp lượng xạ mặt trời thành điện nhờ hiệu ứng quang điện bên Các nguyên tố Boron, Photpho, Gallium, Cadmium Tellurium sử dụng chất phụ gia để gia tăng khả dẫn điện cho PVg Khi chiếu sáng lớp tiếp xúc p-n, cặp điện tử - lỗ trống tạo thành, tác dụng điện trường tiếp xúc nên cặp bị tách ra, bị gia tốc phía đối diện tạo nên sức điện động quang điện Một đặc điểm PVg ln phát dịng điện chiều mạch ngồi có tải xạ mặt trời chiếu vào Mối quan hệ dòng điện ipv điện áp vpv phát từ PVg mối quan hệ phi tuyến phức tạp, cơng suất phát thời điểm phụ thuộc vào nhiệt độ T lớp tiếp giáp p-n, công suất xạ mặt trời G mức tiêu thụ phụ tải [71] Đồng thời, trình chuyển từ trạng thái vận hành sang trạng thái vận hành khác tức thời không bị ảnh hưởng yếu tố liên quan đến quán tính Mặt khác, PVg tồn trạng thái vận hành mà công suất phát lớn tương ứng với cặp giá trị (G, T) Khai thác trạng thái vận hành giúp khắc phục nhược điểm hiệu suất thấp, giá thành cao dạng nguồn Điều đạt nhờ điều chỉnh lượng tải hấp thụ tương ứng với công suất MPP Xuất phát từ cell đơn lẻ với công suất điện áp nhỏ, PVg thường sử dụng dạng tổ hợp cell thành module, tổ hợp module thành panel, tổ hợp panel thành array mơ tả hình 1 [58] Trong đó, nhà sản xuất cung cấp thị trường sản phẩm đóng gói dạng panel -6- Hình 1 Phương pháp tổ hợp PVg 1.2 Cấu trúc chung hệ thống khai thác nguồn pin mặt trời PVg khai thác mạng điện cô lập kết nối với lưới điện (1 pha pha) qua BBĐ, máy biến áp (MBA) Cấu trúc chung hệ thống mô tả hình [48], [73], [74], [87], [95], [97], [103] Mạng cô lập DCbus Phụ tải DC DC Kho điện Kết nối lưới DC DC DC AC DC ipv CS1 CS3 Điều khiển dịng/áp Thơng tin G, T Giám sát/điều khiển Truyền thông tin MBA ~ PVg vpv L Chức Chức nâng cao Lưới điện Phụ tải AC ig CS2 Vdc Điều khiển Vdc Đồng với lưới MPPT Tích trữ điện Bù sóng hài Điều khiển (P, Q, f) Thu thập thông tin, điều khiển, phân phối điện Hình Cấu trúc chung hệ thống khai thác PVg ug -7- Các thông tin cần phải thu thập để thực điều khiển, phân phối điện vpv, ipv, G, T, điện áp Vdc DCbus, điện áp ug dòng điện ig điểm kết nối lưới Các điều khiển sử dụng thông tin thu thập để tính tốn, đưa định xung điều khiển CS1, CS2, CS3 nhờ kỹ thuật điều khiển nhằm thực chức nâng cao mơ tả hình Để thực vai trò điều khiển dòng lượng từ PVg cung cấp cho phụ tải kết nối với lưới điện, BBĐ sử dụng phần tử bán dẫn khơng điều khiển diode khóa chuyển mạch SW có điều khiển thyristor, GTO, BJT, MOSFET, IGBT kết hợp với phần tử có khả tích, phóng lượng tụ điện C, cuộn cảm L Với BBĐ DC/DC, thay đổi vị trí SW thực vai trị tăng áp (boost), giảm áp (buck) vừa boost vừa buck Với BBĐ DC/AC, SW điều khiển phối hợp để điều tiết dịng lượng chu kỳ, qua thực vai trị giữ Vdc giá trị khơng đổi, ghép nối với lưới điện, phát công suất vào lưới điện 1.3 Tình hình nghiên cứu giới nước pin mặt trời 1.3.1 Tình hình nghiên cứu giới Các nghiên cứu PVg tập trung vào toán nâng cao hiệu khai thác PVg, quản lý/điều tiết lượng, áp dụng biện pháp điều khiển để nâng cao chất lượng điện toán ghép nối lưới • Nâng cao hiệu khai thác để khắc phục nhược điểm giá thành cao hiệu suất thấp PVg Vấn đề phân chia thành hướng giải sau: - Dịch chuyển điểm vận hành MPP thông qua việc đưa điện áp vpv điện áp Vmpp MPP, ipv dòng điện Impp MPP, điện dẫn g= ipv/vpv giá trị điện dẫn tối ưu (Impp/Vmpp) đưa công suất tức thời ppv phát từ PVg công suất Pmpp MPP thời điểm Vì vậy, hệ thống khai thác PVg trang bị bám điểm công suất cực đại (MPPT) với kỹ thuật khác để xác định thông số MPP sử dụng với kỹ thuật điều khiển để đưa đầu vào BBĐ thông số MPP MPPT cung cấp -8- Kỹ thuật tìm MPP đơn giản điện áp (CV) sử dụng cảm biến đo điện áp sở coi điện áp MPP gần không thay đổi so với giá trị Vmpp STC Giá trị điều khiển trì khơng đổi suốt trình vận hành PVg [71], [77], [78] Kỹ thuật dòng điện ngắn mạch (SC) sử dụng phần tử đóng cắt theo chu kỳ mắc song song vào hai đầu PVg để gây ngắn mạch cảm biến đo giá trị dòng điện ngắn mạch (ISC) thời điểm xét Tương tự, kỹ thuật điện áp hở mạch (OV) sử dụng phần tử đóng cắt theo chu kỳ mắc nối tiếp với PVg cảm biến đo điện áp để đo giá trị điện áp hở mạch (VOC) thời điểm xét Hai kỹ thuật có cách thực tương đồng, thơng tin MPP xác định tích hệ số dòng kImppSC so với dòng điện ngắn mạch hệ số áp kVmppOV so với điện áp hở mạch [30], [71], [77], [78] Các kỹ thuật tạo nhiễu loạn quan sát (P&O), điện dẫn gia tăng (INC), dò tìm cực trị (ESC), trọng lượng điểm sử dụng cảm biến đo dòng điện điện áp đầu PVg thời điểm đo để đưa nhận định điểm vận hành Trong đó, kỹ thuật P&O đánh giá dấu độ lệch biến thiên công suất với điện áp (dppv/dvpv) hai thời điểm liên tiếp kỹ thuật INC lại đánh giá dấu độ lệch điện dẫn tức thời g với độ gia tăng điện dẫn dipv/dvpv (dipv/dvpv+g) hai thời điểm liên tiếp [30], [68], [71], [72], [77], [78] Kỹ thuật ESC thực quan sát dao động dựa việc thêm sóng dao động hình sin vào tín hiệu vpv (hoặc ipv) để đánh giá dao động công suất [30], [32], [71], [81], [82] Kỹ thuật trọng lượng điểm (three-point weight) kỹ thuật giúp tìm MPP thơng qua q trình thay đổi độ rộng xung quan sát công suất thu trạng thái gần thơng qua q trình chủ động thay đổi độ rộng xung để thử phản ứng PVg nên kỹ thuật trọng lượng điểm tương đồng với kỹ thuật P&O, INC [54], [71] Kỹ thuật nhiệt độ (Temp) đưa thông tin Vmpp nhờ việc sử dụng giá trị điện áp MPP STC, hệ số thay đổi điện áp theo nhiệt độ (CTV) thông tin T nhờ cảm biến đo nhiệt độ (TempS) [39], [71] Kỹ thuật không đánh giá ảnh hưởng thay đổi G đến Vmpp -9- Kỹ thuật độ dốc tối ưu (OG) áp dụng tính tốn số học dựa việc tối ưu hóa độ dốc Ý tưởng kỹ thuật chọn hướng tìm kiếm ngược với dấu tiếp tuyến dấu tiếp tuyến âm để tiếp cận dần cực trị Các đường đặc tính vpv-ppv PVg mô tả hàm phi tuyến ppv(vpv) mục tiêu MPPT tìm điểm đỉnh đường đặc tính vpv-ppv Trong đó, hàm ppv(vpv) hàm phi tuyến, hàm liên tục có đạo hàm bậc vpv biến hàm p(vpv) Điện áp bước lặp xác định (1.1): v(pvk +1) = v(pvk ) + α ( k )g ( k ) (1.1) đó, số thực α(k) đặc trưng cho ước lượng nghiệm g(k) đặc trưng cho độ dài tiếp tuyến điểm làm việc xác lập v(kpv) Các đại lượng xác định (1.2) (1.3): g ( k ) = g( v (pvk ) ) = dp pv ( v pv ) dv pv dP( v (pvk ) + α ( k ) g ( k ) ) dα ( k ) (1.2) Vpv = Vpv (k) =0 (1.3) Q trình tính lặp dừng lại độ lệch điện áp hai bước nằm giới hạn cho phép, nhờ xác định Vmpp [53] Với kỹ thuật tìm MPP trên, MPPT sử dụng kỹ thuật CV, OV, Temp, OG xuất thông tin Vmpp Impp nên để đưa điểm vận hành thời MPP phải kết hợp với điều khiển sử dụng kỹ thuật điều khiển điện áp trung bình (AVC) điều khiển trượt (SMC) Trong đó, kỹ thuật AVC đưa điện áp đầu vào BBĐ dao động xung quanh điểm làm việc mong muốn (Vmpp) kỹ thuật SMC sử dụng mặt trượt công suất, điện áp tổng trở để trượt điểm vận hành mặt trượt điểm mong muốn Riêng với kỹ thuật P&O, INC ESC, biện pháp điều khiển thay đổi xung điều khiển trực tiếp nên MPPT điều khiển coi kỹ thuật phương pháp điều khiển [31], [40], [41], [43], [57], [75], [86], [104] -10- Một cách tiếp cận vấn đề tìm MPP khác, sử dụng kỹ thuật SMC mạng nơron (ANN) MPPT Với kỹ thuật SMC, tài liệu [41] sử dụng mặt trượt dipv/dt sở coi tổng trở tải PVg không thay đổi trình điều khiển tài liệu [57] sử dụng kỹ thuật SMC với mặt trượt công suất để đánh giá biến thiên dấu công suất bước Đồng thời, tài liệu [38], [40], [43], [75], [76], [86], [104] sử dụng kỹ thuật SMC kết hợp với kỹ thuật P&O ESC Với kỹ thuật ANN, điều khiển phải thực trình huấn luyện để có sở liệu mối tương quan độ rộng xung điều khiển, MPP với cặp giá trị (G, T) [21], [22], [24], [27], [71], [83] Kết hợp logic mờ (FL) với ANN P&O hướng tiếp cận với vấn đề tìm MPP [24], [30], [71], [80], [85] Bản chất cách thực làm giảm thời gian huấn luyện ANN giảm bước nhảy đạt đỉnh Các phân tích cho thấy có nhiều cách để nhận dạng đưa PVg vận hành MPP, tài liệu [30] đề xuất chia kỹ thuật thành ba nhóm nhóm kỹ thuật offline, nhóm kỹ thuật online nhóm lai FL với ANN P&O Các kỹ thuật online (bao gồm P&O, INC, ESC) sử dụng thơng tin tức thời dịng điện điện áp PVg, kỹ thuật offline (như OV, SC, ANN) sử dụng mơ hình bản, thường thông số vật lý PVg để nhận dạng MPP Các kỹ thuật dị tìm MPP kỹ thuật điều khiển phân tích áp dụng cho trường hợp cell PVg đồng có điều kiện làm việc hồn tồn giống Với trường hợp làm việc không đồng không giống bị che khuất hay hư hỏng phần PVg, việc phân biệt MPP thực với MPP lân cận khó khăn khơng có nhiều biện pháp giải vấn đề này, thường có kết hợp ANN với P&O PSO [42], [49], [50], [63], [64], [93] - Điều khiển góc nghiêng PVg để xạ mặt trời đến vng góc với bề mặt PVg cách nâng cao khả phát điện PVg Ý tưởng khó khả thi thực với quy mơ lắp đặt PVg lớn phải phần lượng để thực thay đổi góc nghiêng nên khơng có nhiều nghiên cứu theo hướng [16], [35], [94] -152- enum charger_state {off,startup,mppt_track} charger_state; modbusDevice regBank; modbusSlave slave; void setup() { regBank.setId(10); regBank.add(10003); regBank.add(10004); regBank.add(30001); regBank.add(30002); regBank.add(30003); regBank.add(30004); regBank.add(30005); regBank.add(30006); regBank.add(30007); regBank.add(30008); regBank.add(30009); regBank.add(30010); regBank.add(30011); regBank.add(30012); regBank.add(30013); regBank.add(30015); regBank.add(30016); regBank.add(40010); regBank.add(40011); regBank.add(40012); regBank.add(40013); regBank.add(40014); regBank.add(40015); regBank.add(40016); regBank.add(40017); regBank.add(40018); regBank.add(40019); slave._device = ®Bank; slave.setBaud(9600); track_direction = 1; TCCR1B = (TCCR1B & 0b11111000) | B00000001; } void loop() { read_sensors(); modbus_232(); run_charger(); run_load(); tinh_cong_suat(); full_load_en(); } void read_sensors() { int sample1=0; int sample2=0; int sample3=0; int sample4=0; int sample5=0; int sample7=0; int sample8=0; int sample9=0; for(int i=0;i 14000)){ -153- pwm1_setpoint =0; digitalWrite(9,LOW); } if ((mode_run == 1) && (bat_volt < 13800) && (solar_volt > bat_volt + 1000)){ if ((solar_volt > 18400) && (pwm1_setpoint < 250) && (solar_current 15)){ pwm1_setpoint = pwm1_setpoint - 1; } analogWrite(9, pwm1_setpoint); delayMicroseconds(10); } if ((mode_run == 2) && (bat_volt < 13800) && (solar_volt > bat_volt + 1000)){ if ((solar_volt > Vmax*100) && (pwm1_setpoint < 250) && (solar_current 15)){ pwm1_setpoint = pwm1_setpoint - 1; } analogWrite(9, pwm1_setpoint); delayMicroseconds(10); } old_solar_watts = solar_watts; } if((mode_run == 3) && (bat_volt < 13800) && (solar_volt > bat_volt + 2000)) { if ((solar_watts > old_solar_watts) && (pwm1_setpoint < 250) && (solar_current old_solar_volt) {pwm1_setpoint = pwm1_setpoint + step_value; } if (solar_volt < old_solar_volt) {pwm1_setpoint = pwm1_setpoint step_value; }} if ((solar_watts < old_solar_watts) && (pwm1_setpoint >15)){ if (solar_volt > old_solar_volt) {pwm1_setpoint = pwm1_setpoint + step_value; } if (solar_volt < old_solar_volt) {pwm1_setpoint = pwm1_setpoint - step_value; } pwm1_setpoint = pwm1_setpoint - step_value; } analogWrite(9, pwm1_setpoint); delayMicroseconds(10); old_solar_watts = solar_watts; } if((mode_run == 4) && (bat_volt bat_volt + 2000)) { if ((solar_watts >= old_solar_watts) && (pwm1_setpoint < 250) && (solar_current 15)){ pwm1_setpoint = pwm1_setpoint - step_value; } analogWrite(9, pwm1_setpoint); old_solar_watts = solar_watts; } if((mode_run == 4) && (bat_volt >= 13600) && (bat_volt bat_volt + 2000)) { if ((solar_watts >= old_solar_watts) && (pwm1_setpoint < 250) && (solar_current < 186800-13.5*solar_volt ) && (solar_volt >= old_solar_volt)){ pwm1_setpoint = pwm1_setpoint + step_value; } if ((solar_watts < old_solar_watts) && (pwm1_setpoint >15) && (solar_current > 186800-13.5*solar_volt) && (solar_volt set_load_volt) && (pwm2_setpoint < 250) && (load_current < 5000)){ pwm2_setpoint = pwm2_setpoint + 1; } if (((bat_volt < set_load_volt) && (pwm2_setpoint >10)) || (load_current >= 5000)){ pwm2_setpoint = pwm2_setpoint - 1; } analogWrite(6, pwm2_setpoint); } } void tinh_cong_suat() { Times = millis(); if (start_tinh_cong_suat ==1) { -154- Old_energy = Old_energy + solar_watts*(Times - Old_times)/60000; W_ph= Old_energy/100; } Old_times = Times; if (reset_Wph ==1) { Old_energy = 0; } } void full_load_en() { if (load_en == 1) { if (full_load ==1 ){analogWrite(6, 250); }} } Mạch #include #include #include #include #include #include #define IN_pin #define CS_PIN 10 #define CLOCK_PIN 13 #define MOSI_PIN 11 #define MISO_PIN 12 MCP3008 adc(CLOCK_PIN, MOSI_PIN, MISO_PIN, CS_PIN); MCP3008 long solar_volt; long solar_current; long bat_volt ; long bat_current; long load_current; long pwm1_current; long pwm1_setpoint; long pwm2_setpoint; long light_sense; long air_temp; long solar_temp; long solar_watts, W_ph, Buck_watts; long old_solar_watts; long old_solar_ current; int track_direction; word mode_run, start_tinh_cong_suat, full_load; word load_en; word set_load_volt; word step_value; word wide_set; word wide2_set; long Pmax, Vmax, Times, Old_energy, solanlaymau, Old_times, Buck_Wph, Old_energy2; word reset_Wph; const int Solar[] PROGMEM = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000}; const int Pmax20[] PROGMEM = {485, 1030, 1590, 2162, 2740, 3321, 3905, 4491, 5079, 5665}; const int Pmax21[] PROGMEM = {480, 1003, 1580, 2152, 2726, 3304, 3886, 4467, 5053, 5636}; const int Pmax22[] PROGMEM = {480, 1020, 1574, 2142, 2713, 3287, 3864, 4445, 5025, 5600}; const int Pmax23[] PROGMEM = {480, 1018, 1565, 2132, 2700, 3271, 3845, 4421, 5000, 5575}; const int Pmax24[] PROGMEM = {480, 1013, 1557, 2124, 2680, 3255, 3825, 4398, 4970, 5537}; const int Pmax25[] PROGMEM = {479, 1015, 1559, 2114, 2674, 3237, 3800, 4370, 4940, 5500}; const int Pmax26[] PROGMEM = {480, 1009, 1551, 2101, 2656, 3217, 3777, 4340, 4908, 5472}; const int Pmax27[] PROGMEM = {473, 1007, 1545, 2091, 2645, 3200, 3758, 4321, 4882, 5444}; const int Pmax28[] PROGMEM = {476, 1004, 1539, 2084, 2632, 3185, 3742, 4298, 4858, 5417}; const int Pmax29[] PROGMEM = {470, 1000, 1535, 2075, 2622, 3174, 3727, 4280, 4835, 5390}; const int Pmax30[] PROGMEM = {473, 999, 1528, 2068, 2612, 3159, 3709, 4261, 4815, 5368}; const int Pmax31[] PROGMEM = {472, 994, 1523, 2057, 2598, 3145, 3693, 4242, 4792, 5343}; const int Pmax32[] PROGMEM = {478, 993, 1517, 2049, 2587, 3130, 3674, 4221, 4769, 5317}; const int Pmax33[] PROGMEM = {478, 989, 1510, 2041, 2576, 3116, 3658, 4200, 4745, 5288}; const int Pmax34[] PROGMEM = {477, 983, 1503, 2031, 2565, 3100, 3638, 4181, 4721, 5264}; const int Pmax35[] PROGMEM = {478, 979, 1499, 2023, 2552, 3086, 3622, 4158, 4696, 5234}; const int Pmax36[] PROGMEM = {479, 978, 1494, 2014, 2541, 3070, 3603, 4137, 4673, 5209}; const int Pmax37[] PROGMEM = {479, 975, 1487, 2010, 2443, 2950, 3450, 4140, 4670, 5210}; const int Pmax38[] PROGMEM = {480, 980, 1490, 2030, 2530, 3050, 3580, 4120, 4650, 5180}; const int Pmax39[] PROGMEM = {478, 969, 1475, 1987, 2506, 3028, 3570, 4100, 4630, 5160}; const int Pmax40[] PROGMEM = {476, 968, 1370, 1980, 2494, 3013, 3533, 4056, 4579, 5130}; const int Pmax41[] PROGMEM = {478, 963, 1461, 1969, 2483, 2999, 3517, 4036, 4556, 5100}; const int Pmax42[] PROGMEM = {478, 963, 1458, 1963, 2472, 2984, 3499, 4017, 4533, 5080}; const int Pmax43[] PROGMEM = {473, 959, 1451, 1955, 2461, 2971, 3483, 3996, 4510, 5050}; const int Pmax44[] PROGMEM = {470, 960, 1450, 1950, 2460, 2970, 3480, 4000, 4510, 5030}; -155- const int Pmax45[] PROGMEM = {470, 960, 1450, 1950, 2450, 2960, 3470, 3980, 4490, 5000}; const int Pmax46[] PROGMEM = {470, 950, 1440, 1940, 2440, 2940, 3450, 3960, 4470, 4980}; const int Pmax47[] PROGMEM = {470, 950, 1430, 1930, 2430, 2930, 3430, 3940, 4450, 4950}; const int Pmax48[] PROGMEM = {470, 950, 1430, 1920, 2420, 2920, 3420, 3920, 4420, 4930}; const int Pmax49[] PROGMEM = {470, 940, 1430, 1910, 2410, 2900, 3400, 3900, 4400, 4910}; const int Pmax50[] PROGMEM = {470, 940, 1420, 1910, 2400, 2896, 3390, 3890, 4380, 4880}; const int Pmax51[] PROGMEM = {470, 940, 1410, 1890, 2380, 2880, 3370, 3860, 4360, 4860}; const int Pmax52[] PROGMEM = {450, 940, 1390, 1880, 2370, 2860, 3360, 3850, 4340, 4840}; const int Pmax53[] PROGMEM = {460, 930, 1390, 1880, 2370, 2850, 3340, 3830, 4320, 4810}; const int Pmax54[] PROGMEM = {450, 930, 1390, 1870, 2350, 2840, 3320, 3830, 4320, 4790}; const int Pmax55[] PROGMEM = {450, 920, 1380, 1850, 2330, 2820, 3310, 3800, 4280, 4770}; const int Pmax56[] PROGMEM = {440, 920, 1380, 1850, 2330, 2820, 3300, 3780, 4270, 4750}; const int Pmax57[] PROGMEM = {430, 910, 1370, 1852, 2330, 2810, 3290, 3770, 4250, 4720}; const int Pmax58[] PROGMEM = {430, 910, 2370, 1830, 2310, 2790, 3270, 3750, 4230, 4700}; const int Pmax59[] PROGMEM = {430, 900, 1370, 1830, 2310, 2790, 3260, 3740, 4210, 4690}; const int Pmax60[] PROGMEM = {420, 890, 1370, 1830, 2300, 2775, 3240, 3720, 4200, 4630}; const int Pmax61[] PROGMEM = {420, 890, 1370, 1830, 2292, 2767, 3230, 3710, 4184, 4610}; const int Pmax62[] PROGMEM = {410, 880, 1360, 1810, 2288, 2750, 3220, 3690, 4160, 4590}; const int Pmax63[] PROGMEM = {400, 870, 1360, 1700, 2280, 2740, 3210, 3680, 4150, 4570}; const int Pmax64[] PROGMEM = {390, 860, 1350, 1800, 2270, 2730, 3200, 3660, 4130, 4550}; const int Pmax65[] PROGMEM = {380, 850, 1350, 1800, 2260, 2720, 3190, 3650, 4110, 4530}; const int Pmax66[] PROGMEM = {370, 840, 1350, 1790, 2250, 2710, 3180, 3640, 4100, 4500}; const int Pmax67[] PROGMEM = {360, 830, 1350, 1790, 2250, 2710, 3160, 3620, 4090, 4480}; const int Pmax68[] PROGMEM = {350, 800, 1340, 1780, 2240, 2700, 3150, 3610, 4070, 4460}; const int Pmax69[] PROGMEM = {340, 790, 1340, 1780, 2230, 2690, 3150, 3600, 1060, 4430}; const int Pmax70[] PROGMEM = {330, 780, 1340, 1780, 2230, 2680, 3140, 3590, 4000, 4410}; const int Pmax71[] PROGMEM = {380, 770, 1340, 1770, 2220, 2670, 3130, 3580, 4030, 4390}; const int Pmax72[] PROGMEM = {760, 1330, 1330, 1770, 2220, 2660, 3120, 3570, 4020, 4370}; const int Pmax73[] PROGMEM = {750, 1320, 1330, 1750, 2200, 2660, 3100, 3560, 4010, 4350}; const int Pmax74[] PROGMEM = {740, 1310, 1330, 1760, 2210, 2650, 3100, 3550, 4000, 4330}; const int Pmax75[] PROGMEM = {730, 1300, 1330, 1750, 2190, 2650, 3090, 3540, 3980, 4300}; const int Vmax20[] PROGMEM={1673, 1694, 1745, 1717, 1819, 1838, 1853, 1866, 1873,1887}; const int Vmax21[] PROGMEM={1662, 1688, 1729, 1761, 1783, 1825, 1840, 1853, 1863, 1877}; const int Vmax22[] PROGMEM={1659, 1671, 1700, 1756, 1777, 1817, 1832, 1841, 1853, 1867}; const int Vmax23[] PROGMEM={1626, 1659, 1688, 1742, 1763, 1807, 1822, 1835, 1843, 1856}; const int Vmax24[] PROGMEM={1600, 1638, 1671, 1739, 1760, 1797, 1812, 1825, 1836, 1853}; const int Vmax25[] PROGMEM={1658, 1675, 1696, 1723, 1744, 1796, 1811, 1824, 1835, 1845}; const int Vmax26[] PROGMEM={1623, 1691, 1730, 1757, 1778, 1795, 1810, 1819, 1830, 1840}; const int Vmax27[] PROGMEM={1662, 1681, 1719, 1746, 1767, 1784, 1798, 1807, 1818, 1828}; const int Vmax28[] PROGMEM={1642, 1671, 1708, 1735, 1756, 1772, 1787, 1800, 1806, 1816}; const int Vmax29[] PROGMEM={1640, 1656, 1693, 1720, 1740, 1756, 1770, 1782, 1793, 1803}; const int Vmax30[] PROGMEM={1628, 1643, 1679, 1705, 1725, 1742, 1755, 1767, 1778, 1787}; const int Vmax31[] PROGMEM={1625, 1636, 1672, 1697, 1717, 1726, 1740, 1751, 1762, 1771}; const int Vmax32[] PROGMEM={1595, 1620, 1656, 1681, 1701, 1717, 1730, 1740, 1750, 1759}; const int Vmax33[] PROGMEM={1584, 1599, 1621, 1654, 1685, 1700, 1714, 1728, 1738, 1750}; const int Vmax34[] PROGMEM={1563, 1624, 1652, 1665, 1675, 1689, 1702, 1714, 1724, 1733}; const int Vmax35[] PROGMEM={1559, 1619, 1631, 1655, 1674, 1682, 1695, 1707, 1717, 1725}; const int Vmax36[] PROGMEM={1542, 1600, 1620, 1644, 1663, 1672, 1685, 1696, 1706, 1715}; const int Vmax37[] PROGMEM={1531, 1589, 1618, 1640, 1650, 1766, 1780, 1691, 1700, 1709}; const int Vmax38[] PROGMEM={1590, 1561, 1612, 1636, 1645, 1660, 1673, 1684, 1694, 1703}; const int Vmax39[] PROGMEM={1514, 1560, 1598, 1622, 1630, 1644, 1657, 1668, 1677, 1686}; const int Vmax40[] PROGMEM={1502, 1549, 1692, 1611, 1621, 1635, 1648, 1658, 1668, 1676}; const int Vmax41[] PROGMEM={1500, 1559, 1592, 1610, 1617, 1626, 1638, 1648, 1658, 1675}; const int Vmax42[] PROGMEM={1520, 1536, 1568, 1590, 1598, 1617, 1630, 1640, 1649, 1658}; const int Vmax43[] PROGMEM={1500, 1514, 1550, 1579, 1597, 1611, 1623, 1633, 1643, 1651}; -156- const int Vmax44[] PROGMEM={1491, 1512, 1543, 1566, 1587, 1601, 1613, 1623, 1633, 1641}; const int Vmax45[] PROGMEM={1490, 1511, 1543, 1565, 1580, 1595, 1606, 1617, 1626, 1634}; const int Vmax46[] PROGMEM={1473, 1495, 1522, 1559, 1576, 1585, 1597, 1607, 1616, 1624}; const int Vmax47[] PROGMEM={1464, 1473, 1503, 1550, 1566, 1578, 1590, 1600, 1609, 1617}; const int Vmax48[] PROGMEM={1460, 1476, 1500, 1545, 1558, 1572, 1583, 1593, 1600, 1610}; const int Vmax49[] PROGMEM={1460, 1483, 1513, 1535, 1549, 1563, 1574, 1584, 1593, 1600}; const int Vmax50[] PROGMEM={1460, 1483, 1513, 1534, 1550, 1551, 1562, 1572, 1580, 1588}; const int Vmax51[] PROGMEM={1456, 1468, 1456, 1485, 1520, 1533, 1544, 1554, 1560, 1574}; const int Vmax52[] PROGMEM={1380, 1400, 1420, 1470, 1500, 1514, 1539, 1549, 1557, 1565}; const int Vmax53[] PROGMEM={1360, 1398, 1417, 1471, 1504, 1517, 1528, 1538, 1449, 1555}; const int Vmax54[] PROGMEM={1350, 1394, 1420, 1455, 1486, 1505, 1516, 1530, 1537, 1543}; const int Vmax55[] PROGMEM={1340, 1390, 1414, 1433, 1462, 1488, 1513, 1522, 1530, 1534}; const int Vmax56[] PROGMEM={1330, 1380, 1416, 1436, 1466, 1495, 1506, 1515, 1523, 1530}; const int Vmax57[] PROGMEM={1320, 1370, 1400, 1435, 1466, 1494, 1505, 1514, 1522, 1629}; const int Vmax58[] PROGMEM={1320, 1360, 1400, 1418, 1449, 1477, 1487, 1513, 1521, 1528}; const int Vmax59[] PROGMEM={1310, 1350, 1398, 1417, 1448, 1476, 1486, 1495, 1503, 1510}; const int Vmax60[] PROGMEM={1310, 1350, 1397, 1416, 1447, 1459, 1469, 1494, 1502, 1509}; const int Vmax61[] PROGMEM={1300, 1340, 1396, 1415, 1430, 1458, 1468, 1493, 1501, 1508}; const int Vmax62[] PROGMEM={1290, 1340, 1390, 1398, 1429, 1457, 1467, 1476, 1484, 1490}; const int Vmax63[] PROGMEM={1290, 1340, 1379, 1382, 1428, 1440, 1466, 1474, 1482, 1485}; const int Vmax64[] PROGMEM={1290, 1330, 1378, 1381, 1427, 1439, 1465, 1474, 1481, 1483}; const int Vmax65[] PROGMEM={1280, 1320, 1370, 1380, 1410, 1422, 1448, 1456, 1463, 1470}; const int Vmax66[] PROGMEM={1280, 1320, 1377, 1379, 1409, 1420, 1447, 1455, 1462, 1468}; const int Vmax67[] PROGMEM={1280, 1310, 1376, 1378, 1408, 1419, 1429, 1437, 1461, 1465}; const int Vmax68[] PROGMEM={1270, 1310, 1375, 1362, 1391, 1419, 1428, 1436, 1444, 1450}; const int Vmax69[] PROGMEM={1260, 1300, 1359, 1361, 1390, 1417, 1427, 1435, 1443, 1449}; const int Vmax70[] PROGMEM={1250, 1290, 1350, 1360, 1389, 1400, 1426, 1434, 1440, 1445}; const int Vmax71[] PROGMEM={1250, 1280, 1350, 1354, 1383, 1394, 1419, 1428, 1435, 1441}; const int Vmax72[] PROGMEM={1270, 1340, 1341, 1348, 1377, 1388, 1413, 1421, 1428, 1435}; const int Vmax73[] PROGMEM={1260, 1330, 1325, 1332, 1360, 1387, 1396, 1420, 1427, 1433}; const int Vmax74[] PROGMEM={1250, 1320, 1320, 1342, 1370, 1381, 1405, 1414, 1420, 1427}; const int Vmax75[] PROGMEM={1240, 1310, 1310, 1336, 1349, 1390, 1399, 1407, 1414, 1420}; int j,n; enum charger_state {off,startup,mppt_track} charger_state; modbusDevice regBank;modbusSlave slave; void setup() { regBank.setId(12); regBank.add(10003); regBank.add(10004); regBank.add(30001); regBank.add(30002); regBank.add(30003); regBank.add(30004); regBank.add(30005); regBank.add(30006); regBank.add(30007); regBank.add(30008); regBank.add(30009); regBank.add(30010); regBank.add(30011); regBank.add(30012); regBank.add(30013); regBank.add(30014); regBank.add(30015); regBank.add(30016); regBank.add(40010); regBank.add(40011); regBank.add(40012); regBank.add(40013); regBank.add(40014); regBank.add(40015); regBank.add(40017); regBank.add(40018); regBank.add(40019); Serial.begin(9600); slave._device = ®Bank; slave.setBaud(9600); track_direction = 1; TCCR1B = (TCCR1B & 0b11111000) | B00000001; } void loop() { read_sensors(); modbus_232(); pmax_vmax(); run_charger(); run_load(); tinh_cong_suat(); full_load_en(); } void read_sensors() { int sample1=0; int sample2=0; int sample3=0; int sample4=0; int sample5=0; int sample7=0; long sample8=0; long sample9=0; for(int i=0;i 14000)){ pwm1_setpoint =0; digitalWrite(9,LOW); } if ((mode_run == 1) && (bat_volt < 13800) && (solar_volt > bat_volt +1000) && (light_sense>=100)) { if ((solar_volt > Vmax*10) && (pwm1_setpoint < 250) && (solar_current 15)){ pwm1_setpoint = pwm1_setpoint - 1; } analogWrite(9, pwm1_setpoint); delayMicroseconds(10); } old_solar_watts = solar_watts; } void run_load(){ if (load_en == 0) { pwm2_setpoint =0; digitalWrite(6,LOW); } if (load_en == 1) { if ((bat_volt >= set_load_volt) && (pwm2_setpoint < 250) && (load_current < 5000)){ pwm2_setpoint = pwm2_setpoint + 1; } if (((bat_volt < set_load_volt) && (pwm2_setpoint >10)) || (load_current >= 5000)){ pwm2_setpoint = pwm2_setpoint - 1; } analogWrite(6, pwm2_setpoint); } } -165- void tinh_cong_suat() { Times = millis(); if (start_tinh_cong_suat ==1) { Old_energy = Old_energy + solar_watts*(Times - Old_times)/60000; W_ph= Old_energy } Old_times = Times; if (reset_Wph ==1) { Old_energy = 0; } } void full_load_en() { if (load_en == 1) { if (full_load ==1 ){ analogWrite(6, 250); } } } 10 Sơ đồ dây mạch lực mạch điều khiển mơ hình thiết bị thực J15 D2 F1 2200uF R4 C34 + 20k C12 1nF C30 0.1uF VCC IN SD COM R6 VB HO VS LO Q1 CAP NP R7 L1 R5 IRFZ44N/TO 10R 100k IP+ IP+ IPIP- U10 ACS712-5 RESISTOR U11 ACS712-5 D11 DIODE 2200uF + C21 1000uF C33 C23 1nF R8 0.1uF C13 0.1uF 20k C31 1nF C32 0.1uF C24 0.1uF C22 CAP NP D1N4148 U9 J4 1 U5 LM7812CT IN GND D7 OUT D8 IN C17 + C16 + C OUT 1000uF VCC IN SD COM VB HO VS LO D14 D1N4148 D13 D1N4148 Q2 R9 IRFZ44N/TO 10R LOAD IR2104 GND U13 LM7805CT C18 + D6 D INDUCTOR FERRITE IR2104 D15 D10 CON6 IP+ IP+ IPIP- D5 D1N4148 D4 D1N4148 VCC VIOUT FILTER GND U7 C20 CAP NP D1N4148 C14 + VCC VIOUT FILTER GND 150k C15 D3 Sol Batt Tran Tran GND GND D DIODE IP+ IP+ IPIP- R3 U3 ACS712-5 VCC VIOUT FILTER GND FUSE D12 DIODE 1000uF 2200uF C J6 D9 J7 LCD C9 C10 100nF 16 VCC MAX3232 32 31 30 29 28 27 26 25 C5 100n C3 22pF PD3 PD4 VCC GND VCC GND PB6 PB7 C27 100n PC1 PC0 ADC7 AGND AREF ADC6 AVCC PB5 10 11 12 13 14 15 16 C4 22pF Y2 16MHz IC1 24 23 22 21 20 19 18 17 VCC VREF AGND CLK DOUT DIN CS/SHDN DGND 16 15 14 13 12 11 10 C19 100nF J9 D16 ZENER - RV1 R12 10R Air_Temp LM324 11 C26 100n CH0 CH1 CH2 CH3 CH4 CH5 CH6 CH7 1 R10 VARISTOR 10R J10 MCP3008 C11 B Light_Sen U12B 100nF 100nF 14 U2 U12A + 100n D17 ATmega88-MLF32 ZENER J13 J14 2 + LM324 11 100nF C7 C1+ C1C2+ C2V+ V- C25 100n C8 12 PD2 PD1 PD0 PC6 PC5 PC4 PC3 PC2 100nF T1OUT T2OUT Cell_Temp CONNECTOR DB9 C6 T2IN T1IN C28 100n PD5 PD6 PD7 PB0 PB1 PB2 PB3 PB4 B 10 11 R1OUT R2OUT GND R1IN R2IN 15 13 R2 10K U6 P1 VCC SCl SDA GND J8 C29 100n RV2 R13 10R VARISTOR R11 10R MOSI MISO SCK RESET VCC GND J2 A A ISP Trường Đại học Kỹ thuật Công nghiệp - Đại học Thái Nguyên Mạch lực biến đổi DC/DC buck mạch điều khiển nguồn pin mặt trời Luận án tiến sĩ kỹ thuật chuyên ngành Kỹ thuật điều khiển Tự động hóa Nghiên cứu sinh: Lê Tiên Phong Date: ... nghiên cứu giới nước pin mặt trời 1.3.1 Tình hình nghiên cứu giới Các nghiên cứu PVg tập trung vào toán nâng cao hiệu khai thác PVg, quản lý/điều tiết lượng, áp dụng biện pháp điều khiển để nâng. .. toán khai thác tối ưu nguồn lượng phát từ PVg đối tượng nghiên cứu luận án Trong đó, tập trung vào vấn đề xác định xác thơng số MPP để làm thông số đặt cho điều khiển, qua nâng cao hiệu khai thác. .. tiêu nâng cao hiệu khai thác PVg, cụ thể xây dựng phương pháp luận cụ thể để cải tiến -17- MPPT thiết lập giải pháp điều khiển, luận án tập trung vào số vấn đề sau: - Giải vấn đề xác định thông số

Ngày đăng: 16/01/2023, 13:04

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w