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. (LA tiến sĩ)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. (LA tiến sĩ)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. (LA tiến sĩ)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. (LA tiến sĩ)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. (LA tiến sĩ)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. (LA tiến sĩ)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. (LA tiến sĩ)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. (LA tiến sĩ)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. (LA tiến sĩ)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. (LA tiến sĩ)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. (LA tiến sĩ)
BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC THÁI NGUYÊN LÊ TIÊN PHONG 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 LUẬN ÁN TIẾN SĨ KỸ THUẬT THÁI NGUYÊN – NĂM 2017 B0 crAo DUCvA DAorAo , DAI HOC THAI NGTryEN a a lf, rrtN PHoNG NGHrfll.IcuU Mgr s6 Pnrloxc PSAP nAnc cAo HrSuquAKIrArrnAc xcuox PrNh,tlTTRor Chuy0nnginh: Ki thu$t Aidumi6n vi Tg tlQngh6a Mn s6 z 62.52.02.16 LUaNANilnN SiKv rHUaT HUof{c DANKHoA HQC: NGTIOT VIn Li6n |W Nguy6n 1.PGS.TS NgdDftcMinh N 2.PGS.TS THAI NCUTSN-NAM zlfi i LỜI CAM ĐOAN Tôi xin cam đoan luận án thành nghiên cứu thân hướng dẫn PGS.TS Nguyễn Văn Liễn – Viện Điện, Trường Đại học Bách Khoa Hà Nội, PGS.TS Ngô Đức Minh – Khoa Điện, trường Đại học Kỹ thuật Công Nghiệp, Đại học Thái Nguyên tập thể nhà khoa học khoa Điện trường Đại học Kỹ thuật Công nghiệp, Đại học Thái Nguyên Kết nghiên cứu luận án trung thực chưa công bố cơng trình khác Thái Ngun, ngày tháng Tác giả luận án Lê Tiên Phong năm 2017 -ii- LỜI CẢM ƠN Đầu tiên, xin bày tỏ lời cảm ơn sâu sắc đến hai thầy hướng dẫn khoa học trực tiếp, PGS.TS Nguyễn Văn Liễn PGS.TS Ngô Đức Minh trực tiếp hướng dẫn, định hướng khoa học q trình nghiên cứu Tơi xin gửi lời cảm ơn chân thành kính trọng đến tập thể nhà khoa học khoa Điện, trường Đại học Kỹ thuật Công nghiệp, Đại học Thái Nguyên, bạn bè đồng nghiệp đóng góp ý kiến quý báu chuyên môn suốt thời gian thực luận án Tác giả luận án xin trân trọng cảm ơn Ban giám hiệu, Phòng Đào tạo, Ban chủ nhiệm khoa Điện, Trường Đại học Kỹ thuật Công nghiệp, Đại học Thái Nguyên tạo điều kiện thuận lợi cho nghiên cứu sinh suốt trình học tập nghiên cứu Cuối cùng, tơi muốn nói lời cảm ơn sâu sắc đến bố mẹ, anh chị, vợ ln bên tơi, hết lòng quan tâm, sẻ chia, ủng hộ, động viên tinh thần, tạo điều kiện giúp tơi có nghị lực vượt qua giai đoạn khó khăn nhất, vất vả để hồn thành luận án Tác giả luận án Lê Tiên Phong -iii- MỤC LỤC KÝ HIỆU VIẾT TẮT vii KÝ HIỆU ix DANH MỤC CÁC HÌNH VẼ xii DANH MỤC CÁC BẢNG xv MỞ ĐẦU CHƯƠNG TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU 1.1 Khái quát nguồn pin mặt trời 1.2 Cấu trúc chung hệ thống khai thác nguồn pin mặt trời 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 1.3.2 Tình hình nghiên cứu nước 11 1.4 Một số vấn đề tồn đề xuất hướng giải 12 1.4.1 Một số vấn đề tồn 12 1.4.2 Tiếp cận vấn đề 15 1.4.3 Đề xuất hướng giải 16 1.5 Kết luận chương 17 CHƯƠNG 19 MƠ HÌNH HĨA ĐẦY ĐỦ VÀ NHẬN DẠNG CHÍNH XÁC ĐIỂM CƠNG SUẤT CỰC ĐẠI CHO NGUỒN PIN MẶT TRỜI 19 2.1 Mơ hình tốn học nguồn pin mặt trời 19 2.2 Xây dựng giải pháp nhận dạng thông số ẩn cho nguồn pin mặt trời điều kiện vận hành tiêu chuẩn 23 2.2.1 Nêu vấn đề 23 2.2.2 Thiết lập phương trình điểm đặc biệt điều kiện tiêu chuẩn 24 2.2.3 Phương pháp xác định thông số ẩn 26 2.2.4 Xây dựng thuật toán xác định thông số ẩn 27 -iv- 2.2.5 Áp dụng xác định thông số ẩn cho số loại pin quang điện 29 2.3 Giải pháp nhận dạng xác điểm cơng suất cực đại cho nguồn pin mặt trời 31 2.3.1 Nội dung giải pháp đề xuất 31 2.3.2 Đánh giá tính xác giải pháp đề xuất 34 2.4 Mơ hình hóa đầy đủ cho nguồn pin mặt trời 35 2.4.1 Quy đổi giá trị thông số từ điều kiện vận hành tiêu chuẩn điều kiện vận hành 35 2.4.2 Xây dựng hàm số n(T) 38 2.4.3 Mơ hình hóa đầy đủ cho nguồn pin mặt trời 43 2.5 Kết luận chương 44 CHƯƠNG 45 THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN NGUỒN PIN MẶT TRỜI THEO MƠ HÌNH ĐẦY ĐỦ 45 3.1 Cấu trúc điều khiển hệ thống 45 3.2 Cơ sở lý thuyết điều khiển mơ tả tốn học biến đổi 47 3.2.1 Cơ sở lý thuyết điều khiển 47 3.2.1.1 Kỹ thuật điều khiển trượt biến đổi DC/DC 47 3.2.1.2 Kỹ thuật điều khiển điện áp trung bình 50 3.2.2 Mơ tả tốn học biến đổi DC/DC buck 51 3.2.2.1 Bộ biến đổi DC/DC buck 51 3.2.2.2 Bộ biến đổi DC/DC boost 52 3.3 Điều khiển khai thác điểm công suất cực đại nguồn pin mặt trời theo mơ hình đầy đủ điều kiện vận hành 54 3.3.1 Phương pháp IB-SMC 54 3.3.1.1 Nguyên lý chung phương pháp IB-SMC 54 3.3.1.2 Phương pháp IB-SMC cho BBĐ DC/DC buck 55 3.3.1.3 Phương pháp IB-SMC cho BBĐ DC/DC boost 58 3.3.1.4 Chiến lược điều khiển BBĐ DC/DC theo phương pháp IB-SMC 60 -v- 3.3.1.5 Mô đánh giá phương pháp IB-SMC 62 3.3.2 Phương pháp IB-AVC 69 3.3.2.1 Nguyên lý chung phương pháp IB-AVC 69 3.3.2.2 Phương pháp IB-AVC cho BBĐ DC/DC buck 71 3.3.2.3 Phương pháp IB-AVC cho BBĐ DC/DC boost 73 3.3.2.4 Chiến lược điều khiển BBĐ DC/DC theo phương pháp IB-AVC 75 3.3.2.5 Kết mô phương pháp IB-AVC 77 3.3.3 So sánh hiệu lượng khả ứng dụng 81 3.4 Điều khiển ghép nối lưới cho nguồn pin mặt trời 86 3.4.1 Cấu trúc điều khiển ghép nối lưới 86 3.4.2 Mô hệ thống điều khiển ghép nối lưới cho nguồn pin mặt trời 87 3.5 Kết luận chương 97 CHƯƠNG 99 KIỂM CHỨNG KẾT QUẢ NGHIÊN CỨU TRÊN MƠ HÌNH THIẾT BỊ THỰC 99 4.1 Xây dựng mơ hình cấu trúc thiết bị thực 99 4.2 Các thiết bị 101 4.2.1 Cảm biến đo công suất xạ mặt trời 101 4.2.2 Cảm biến đo nhiệt độ 102 4.2.3 Ắc quy 102 4.2.4 Sơ đồ đấu nối mạch lực điều khiển 102 4.2.5 Lắp đặt thiết bị cài đặt 105 4.3 Phương thức vận hành mơ hình thiết bị thực 106 4.4 Kết thực nghiệm 109 4.4.1 Kiểm chứng tính xác giải pháp đề xuất 109 4.4.2 Đánh giá hiệu lượng giải pháp đề xuất 110 4.5 Kết luận chương 115 KẾT LUẬN VÀ KIẾN NGHỊ 117 -vi- DANH MỤC CƠNG TRÌNH KHOA HỌC CĨ LIÊN QUAN ĐẾN LUẬN ÁN ĐÃ CÔNG BỐ 119 TÀI LIỆU THAM KHẢO 120 PHỤ LỤC 132 -vii- KÝ HIỆU VIẾT TẮT Ký hiệu Cụm từ viết tắt tiếng Việt Cụm từ viết tắt từ tiếng Anh tương đương tương đương AC Dòng điện xoay chiều Alternative Current AI Trí thơng minh nhân tạo Artificial Intelligence ANN Mạng nơron nhân tạo Artificial Neural Network AVC Điều khiển điện áp trung bình Average Voltage Control BBĐ Bộ biến đổi điện tử công suất Power Converter CS Tín hiệu điều khiển Control Signal CV Điện áp khơng đổi Constant Voltage DC Dòng điện chiều Direct Current DCbus Thanh điện áp chiều Điều khiển dò tìm cực trị Extremum seeking control FL Logic mờ Fuzzy Logic IB Kỹ thuật dò chia đơi Iterative and Bisectional technique ESC IB-AVC Phương pháp dò chia đôi - Điều Iterative and Bisectional - Average khiển điện áp trung bình Voltage Control method IB-SMC Phương pháp dò chia đơi - Điều Iterative and Bisectional - Sliding khiển trượt Mode Control method INC Điện dẫn gia tăng Incermental Conductance MBA Máy biến áp Transformer MPP Điểm công suất cực đại Maximum Power Point Bộ bám điểm công suất cực đại Maximum Power Point Tracking OG Độ dốc tối ưu Optimal Gradient OV Điện áp hở mạch Open-Circuit Voltage P&O Dao động quan sát Perturb and Observe PSO Tối ưu bầy đàn Particle Swarm Optimization PVg Nguồn pin mặt trời, hệ thống pin mặt Photovoltaic power generation, trời, cell/module/panel/array pin mặt Photovoltaic system, trời, pin mặt trời Photovoltaic module/panel/array, MPPT solar cell/module/panel/array PYR Cảm biến đo công suất xạ mặt Pyranometer -viii- trời Dòng điện ngắn mạch Short-Circuit Current SMC Điều khiển trượt Sliding Mode Control STC Điều kiện vận hành tiêu chuẩn Standard Test Condition SW Khóa chuyển mạch Switch TempS Cảm biến đo nhiệt độ Temperature sensor THD Tổng độ méo sóng hài Total Harmonic Distorsion SC -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. .. QUAN VẤN ĐỀ NGHIÊN CỨU 1.1 Khái quát nguồn pin mặt trời 1.2 Cấu trúc chung hệ thống khai thác nguồn pin mặt trời 1.3 Tình hình nghiên cứu giới nước pin mặt trời ... thông số điều khiển trở thành kinh điển, nhà nghiên cứu tập trung giải triệt để 1.3.2 Tình hình nghiên cứu nước Tài liệu [4] số biện pháp nâng cao chất lượng hiệu suất cho hệ thống khai thác PVg