Giới thiệu dự án

Nhu cầu năng lượng tái tạo, đặc biệt là điện mặt trời (Photovoltaic - PV), đang tăng trưởng mạnh mẽ trong bối cảnh các nguồn nhiên liệu hóa thạch dần cạn kiệt và biến đổi khí hậu toàn cầu diễn biến phức tạp. Theo các nghiên cứu thực nghiệm trong ngành năng lượng, các hệ thống pin quang điện lắp đặt cố định chịu tổn thất bức xạ đáng kể do góc tới của tia sáng mặt trời thay đổi liên tục theo thời gian trong ngày và theo mùa trong năm. Khi góc tới lệch khỏi phương pháp tuyến của bề mặt pin, mật độ quang thông hấp thụ giảm mạnh theo định luật hàm cos, làm suy giảm nghiêm trọng hiệu suất chuyển đổi quang - điện.

       Tia sáng Mặt Trời (Góc tới θ)
              \   |   /
               \  |  /
                \ | /  
     [ Bề mặt tấm Pin PV ]  <--- Cần duy trì góc vuông 90° (θ = 0°)

Vấn đề cốt lõi đặt ra là các phương pháp định hướng truyền thống bộc lộ nhiều nhược điểm:

  • Hệ thống cảm biến quang trở (LDR): Thời gian đáp ứng chậm, dễ bị nhiễu do nhiệt độ môi trường, sai số tích lũy lớn khi trời nhiều mây hoặc bóng râm cục bộ.
  • Hệ thống bám theo thuật toán thiên văn thuần túy (Open-loop Astronomer): Thiếu phản hồi quang học thực tế, giá thành đắt đỏ và không tự thích nghi được với sai lệch cơ khí sau thời gian dài vận hành.

Đề tài "Ứng dụng xử lý ảnh định hướng pin mặt trời" do sinh viên Phạm Hoàng NamPhan Trường Thành thực hiện dưới sự hướng dẫn của TS. Võ Minh Huân (Bộ môn Điện tử Công nghiệp, Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật TP.HCM) giải quyết trực tiếp bài toán tối ưu hóa góc đón nắng bằng phương pháp thị giác máy tính (Computer Vision) kết hợp điều khiển hồi tiếp vòng kín hai trục (Dual-Axis Closed-loop Tracking).

Mục tiêu kỹ thuật cụ thể:

  1. Thiết kế và chế tạo kết cấu cơ khí 2 bậc tự do (2-DOF): Xoay theo góc phương vị (Azimuth - Đông sang Tây) và góc nâng (Elevation - Bắc sang Nam) với cơ cấu truyền động bánh răng tỷ số truyền $1:3$ và bộ truyền đai răng giảm chấn.
  2. Xây dựng giải thuật xử lý ảnh trên MATLAB: Thu nhận luồng video từ webcam, nhị phân hóa (Binarization), lọc nhiễu và định vị trọng tâm hình học (Centroid) của Mặt Trời trên khung hình độ phân giải $160 \times 120 \text{ px}$.
  3. Phát triển hệ thống nhúng điều khiển phân tán: Sử dụng vi điều khiển PIC16F887 tần số $8\text{ MHz}$, điều khiển động cơ bước đơn cực theo chế độ nửa bước (Half-step) với bước dịch chuyển thực tế $0.3^\circ/\text{bước}$.
  4. Thiết lập giao thức truyền thông hai chiều qua UART: Tốc độ Baud 9600 bps kết nối PC - VĐK, đồng bộ dữ liệu tọa độ điều khiển và thu thập điện áp tấm pin thời gian thực qua bộ chuyển đổi ADC 10-bit.
  5. Nâng cao hiệu suất quang điện: Đảm bảo hệ thống đạt mức tăng sản lượng điện năng lên tới $37%$ so với hệ thống cố định cùng công suất.

Phạm vi đề tài tập trung vào việc mô hình hóa thực nghiệm hệ thống bám quang học cho tấm pin PV 10W, xử lý ảnh trong dải phổ khả kiến và hoạt động tự động trong khung giờ nắng thực tế từ 08:00 đến 18:00.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Để định vị giải pháp trong bài toán bám bức xạ mặt trời, bảng phân tích so sánh kỹ thuật giữa các cấu hình được tổng hợp dưới đây:

Tiêu chí Pin cố định (Fixed Mount) Bám 1 trục dùng LDR Bám 2 trục dựa trên thuật toán thị giác máy tính (Đề tài)
Góc điều khiển Cố định ($10^\circ - 15^\circ$ hướng Nam) 1 trục (Đông - Tây) 2 trục (Đông - Tây & Bắc - Nam)
Cảm biến đầu vào Không có Cặp quang trở LDR ($R_{dark} > 1\text{ M}\Omega$) Webcam độ phân giải $160 \times 120\text{ px}$
Độ nhạy nhiệt độ Không ảnh hưởng điều khiển Sai số cao khi $T > 45^\circ\text{C}$ Không bị ảnh hưởng bởi nhiệt độ bề mặt
Độ phân giải góc $0^\circ$ Thấp ($\pm 5^\circ - \pm 8^\circ$) Rất cao ($\approx 0.3^\circ/\text{bước cơ khí}$)
Khả năng tự hiệu chỉnh Không có Kém khi trời âm u Tự bù góc sau mỗi 30 phút ($7.5^\circ$) khi mất dấu
Gia tăng sản lượng Cơ sở ($0%$) $+18% \dots +22%$ $+35% \dots +37%$
Yêu cầu hệ thống theo mô hình MoSCoW:

Thiết kế hệ thống

Kiến trúc tổng thể của hệ thống là sự kết hợp chặt chẽ giữa khối xử lý máy tính cấp cao (High-level Image Processing Host) và khối chấp hành nhúng cấp thấp (Low-level Embedded Controller).

flowchart TD
    subgraph Host_PC["Host Computer (MATLAB Environment)"]
        Cam[Webcam 160x120 px] -->|Luồng ảnh YUY2/RGB| ImgProc[Xử lý ảnh: Phân ngưỡng nhị phân & Lọc Centroid]
        ImgProc -->|Tính sai lệch tọa độ X, Y| PID[Khối quyết định xung điều khiển & Bù thời gian]
        GUI[Giao diện điều khiển GUI MATLAB] <--> PID
    end

    PID -->|Chuỗi ký tự điều khiển '1','2','3','4','5'| UART_Tx[Cổng COM / MAX232: 9600 bps]
    UART_Tx -->|UART Rx| PIC[Vi điều khiển Microchip PIC16F887 - 8MHz]

    subgraph Embedded_Board["Khối điều khiển và Công suất"]
        PIC -->|Tín hiệu Logic điều khiển nửa bước| Driver[Mạch đệm MosFET IRF540 N-Channel]
        Driver -->|Xung công suất 5V - 1.5A| Stepper1[Động cơ bước 1: Trục ngang Azimuth]
        Driver -->|Xung công suất 5V - 1.5A| Stepper2[Động cơ bước 2: Trục đứng Elevation]
        
        Sensor_Volt[Cầu phân áp tấm Pin PV 10W] -->|Điện áp Analog 0-5V| ADC[Kênh ADC 10-bit AN13]
        ADC --> PIC
        
        LimitSW[Công tắc hành trình HT0, HT1] -->|Tín hiệu mức thấp| PIC
        PIC -->|Dữ liệu 4-bit bus| LCD[Màn hình LCD 16x2 HD44780]
    end

    PIC -->|Gửi dữ liệu điện áp mV| UART_Rx[Cổng COM]
    UART_Rx --> GUI

Thông số thành phần công nghệ và phần cứng:

  • Vi điều khiển: Microchip PIC16F887 (Kiến trúc 8-bit RISC, bộ nhớ Flash 8KB, 256B RAM, 14 kênh ADC 10-bit, bộ định thời Timer0/Timer1, khối EUSART tích hợp).
  • Môi trường phần mềm: MATLAB R2013a / R2014a (Image Processing Toolbox, Data Acquisition Toolbox), MikroC PRO for PIC v5.1.
  • Tầng công suất chuyển mạch: 8 MosFET kênh N chuẩn IRF540 ($V_{DS} = 100\text{V}$, $I_D = 30\text{A}$, $R_{DS(on)} = 0.044\Omega$), trang bị diode dập xung ngược bảo vệ cuộn cảm động cơ.
  • Cơ cấu chấp hành: 02 Động cơ bước đơn cực (Unipolar) 2 pha 6 dây, điện áp định mức 5V DC, dòng định mức 1.5A/pha, góc bước cơ bản $1.8^\circ$.
  • Tỷ số truyền cơ khí: Cặp bánh răng trụ răng thẳng với bánh chủ động $Z_1 = 14\text{ răng}$, bánh bị động $Z_2 = 42\text{ răng}$, tỷ số truyền: $$u = \frac{d_2}{d_1} = \frac{42}{14} = 3:1$$
  • Khi điều khiển động cơ ở chế độ nửa bước ($0.9^\circ/\text{bước}$), góc quay thực tế tại trục đỡ tấm pin là: $$\theta_{step} = \frac{0.9^\circ}{3} = 0.3^\circ/\text{bước}$$

Phương pháp luận phát triển (Methodology)

Dự án áp dụng quy trình phát triển dạng thác nước tích hợp kiểm định vòng lặp (V-Model for Mechatronics):

Tiến độ triển khai 16 tuần (03/2014 - 07/2014):

Hệ thống quản lý rủi ro tập trung vào việc ngăn ngừa xung đột phần cứng: sử dụng công tắc hành trình cơ khí kết hợp ngắt ngoại vi phần mềm để chống kẹt trục xoay; thiết lập vùng chết (Deadband) đối xứng trên ma trận điểm ảnh để triệt tiêu hiện tượng dao động lắc quanh tâm (Hunting Oscillation).


Triển khai thực nghiệm và kết quả

Quy trình phát triển và thuật toán lõi

Toàn bộ hệ thống vận hành tự động theo vòng lặp điều khiển đồng bộ giữa Host MATLAB và Client PIC16F887.

1. Thuật toán xử lý ảnh và tính toán Centroid (MATLAB)

Ảnh chụp từ Webcam được chuẩn hóa về định dạng nhị phân. Vùng sáng mặt trời vượt ngưỡng $I_{th}$ được gán giá trị logic 1, nền trời xung quanh gán 0. Tọa độ tâm hình học $(X_c, Y_c)$ được trích xuất trực tiếp thông qua hàm moment diện tích regionprops.

% Đoạn mã trích xuất tâm bức xạ trên không gian ảnh 160x120 px
vid = videoinput('winvideo', 1, 'YUY2_160x120');
set(vid, 'FramesPerTrigger', 1);
set(vid, 'ReturnedColorSpace', 'gray');

% Đọc frame và chuyển đổi nhị phân
img_gray = getsnapshot(vid);
bw = im2bw(img_gray, 0.85); % Ngưỡng phân tách lõi sáng Mặt Trời

% Tính toán Centroid của vùng liên thông có diện tích lớn nhất
s = regionprops(bw, 'Centroid', 'Area');
if ~isempty(s)
    [max_area, idx] = max([s.Area]);
    center_x = s(idx).Centroid(1);
    center_y = s(idx).Centroid(2);
    
    % Kiểm tra vùng chết (Deadband: X in [75, 85], Y in [55, 65])
    % Tâm quang học chuẩn của khung hình: (80, 60)
    if center_x < 75
        fprintf(c, '%s', '1'); % Quay động cơ 1 chiều thuận (Đông -> Tây)
    elseif center_x > 85
        fprintf(c, '%s', '2'); % Quay động cơ 1 chiều nghịch
    end
    
    if center_y < 55
        fprintf(c, '%s', '3'); % Quay động cơ 2 chiều thuận (Góc ngẩng lên)
    elseif center_y > 65
        fprintf(c, '%s', '4'); % Quay động cơ 2 chiều nghịch (Góc hạ xuống)
    end
else
    % Thuật toán dự báo khi trời âm u / mất dấu mặt trời
    % Trái đất tự quay quanh trục: 360 deg / 24h = 15 deg / h => 30 min = 7.5 deg
    % Với góc bước cơ khí 0.3 deg/step: Cần kích 25 bước dịch chuyển
    step_compensation = round(7.5 / 0.3); % ~ 25 steps
    for step_idx = 1:step_compensation
        fprintf(c, '%s', '1');
        pause(0.05);
    end
end

2. Thuật toán điều khiển nửa bước và đo đạc ADC (MikroC on PIC16F887)

Tại vi điều khiển, mảng kích từ 8 trạng thái a[8] được nạp lần lượt vào các cổng GPIO nối cực Gate của MosFET để tạo từ trường quay mượt mà, triệt tiêu hiện tượng rung giật của động cơ bước.

/* Bảng trạng thái kích cực Half-Step cho động cơ bước đơn cực */
const unsigned char a[8] = {
    0b00001000, // Phase 1A
    0b00001100, // Phase 1A + 2A
    0b00000100, // Phase 2A
    0b00000110, // Phase 2A + 1B
    0b00000010, // Phase 1B
    0b00000011, // Phase 1B + 2B
    0b00000001, // Phase 2B
    0b00001001  // Phase 2B + 1A
};

signed char j = 0, k = 0;
unsigned long temp;
char digit[7] = "00.000";

void Process_Tracking() {
    if (UART1_Data_Ready()) {
        char uart_rd = UART1_Read();
        
        // Điều khiển trục ngang (Đông - Tây: Port D)
        if (uart_rd == '1') {
            j++; if (j > 7) j = 0;
            PORTD = a[j];
        } else if (uart_rd == '2') {
            j--; if (j < 0) j = 7;
            PORTD = a[j];
        }
        
        // Điều khiển trục đứng (Bắc - Nam: Port B)
        if (uart_rd == '3') {
            k++; if (k > 7) k = 0;
            PORTB = a[k];
        } else if (uart_rd == '4') {
            k--; if (k < 0) k = 7;
            PORTB = a[k];
        }
    }
    
    // Đọc điện áp tấm Pin qua ADC 10-bit (Kênh AN13 / Cầu phân áp 1:4)
    temp = ADC_Read(13); // Giá trị số nguyên 0 - 1023
    temp = (temp * 20000UL) / 1023; // Chuẩn hóa về mV (dải đo max 20V)
    
    // Tách chuỗi ký tự ASCII hiển thị và gửi UART
    digit[0] = (temp / 10000) + 48;
    digit[1] = ((temp % 10000) / 1000) + 48;
    digit[2] = '.';
    digit[3] = (((temp % 10000) % 1000) / 100) + 48;
    digit[4] = ((((temp % 10000) % 1000) % 100) / 10) + 48;
    digit[5] = ((((temp % 10000) % 1000) % 100) % 10) + 48;
    
    Lcd_Out(2, 9, digit);
    UART1_Write_Text(digit);
}

Thử nghiệm và đánh giá chất lượng

Hệ thống được kiểm thử thực tế tại sân thượng Tòa nhà Trung tâm - ĐH Sư phạm Kỹ thuật TP.HCM trong điều kiện nắng tự nhiên liên tục 10 tiếng (08:00 - 18:00).

Ma trận kiểm thử thực nghiệm (Test Matrix):
Thông số đo đạc Giá trị thiết kế Giá trị thực nghiệm Đánh giá sai số
Độ phân giải góc trục xoay $0.300^\circ/\text{step}$ $0.302^\circ/\text{step}$ $\pm 0.67%$ (do khe hở cơ khí)
Thời gian trễ đáp ứng lệnh $< 100\text{ ms}$ $65\text{ ms}$ Vượt chỉ tiêu thiết kế
Độ chính xác định vị tâm ảnh $\pm 5\text{ px}$ $\pm 3\text{ px}$ (trong Deadband) Hệ thống không bị hunting
Dòng rò tĩnh MosFET IRF540 $< 1\text{ }\mu\text{A}$ $0.2\text{ }\mu\text{A}$ An toàn nhiệt tuyệt đối
Sản lượng công suất tăng thêm $> 30%$ $+37.14%$ Tương đương đồ thị Hình 1.4
Đồ thị so sánh công suất thu nhận P(W) theo thời gian trong ngày:

Công suất (W)
10 |                  * * * * * * (Hệ thống bám 2 trục Vision: ~9.5W duy trì)
 8 |              * *             * *
 6 |          *                         *
 4 |      . . . . . . . . . . . . . . . . . (Hệ thống cố định đỉnh nhọn lúc 12:00)
 2 |    .                                   .
 0 +-------------------------------------------> Thời gian (Giờ)
   08:00     10:00     12:00     14:00     16:00     18:00

Đổi mới và đóng góp khoa học

Đề tài mang lại các đóng góp cải tiến kỹ thuật rõ nét so với các công trình khóa trước:

  1. Khắc phục triệt để trôi điểm làm việc do nhiệt của LDR: Các hệ thống quang trở thông thường bị lệch trở kháng khi nhiệt độ vỏ hộp cảm biến vượt $50^\circ\text{C}$. Bằng việc đưa thuật toán xử lý vùng sáng trên ma trận ảnh kỹ thuật số, hệ thống loại bỏ hoàn toàn hiện tượng cảm ứng nhiệt sai lệch.
  2. Kỹ thuật điều khiển Deadband thích nghi: Thiết lập vùng đệm sai số tọa độ $X \in [75, 85]$ và $Y \in [55, 65]$ trên kích thước ảnh $160 \times 120\text{ px}$. Giải pháp này giảm tần suất đóng ngắt MosFET tới $64%$, tiết kiệm năng lượng tiêu thụ của động cơ bước và nâng cao tuổi thọ của bộ truyền động cơ khí.
  3. Cơ chế bám lai (Hybrid Vision-Astronomical Mode): Tích hợp khả năng tự nội suy dịch chuyển $7.5^\circ$ mỗi 30 phút dựa trên vận tốc tự quay của Trái Đất ($15^\circ/\text{h}$) khi camera bị mây che khuất hoàn toàn, đảm bảo khi trời quang trở lại, tấm pin vẫn nằm trong góc đón nắng trực tiếp.

Ứng dụng thực tế và triển khai

Hệ thống có khả năng chuyển giao và ứng dụng thực tiễn trong nhiều mô hình năng lượng mặt trời phân tán:

Các kịch bản triển khai thương mại:

Phân tích chi phí và hiệu quả đầu tư (ROI Estimation)

  • Quy mô mô hình thử nghiệm: Chi phí vật tư (PIC16F887, webcam, cơ khí, MosFET IRF540) dưới $1.500.000\text{ VNĐ}$.
  • Quy mô thương mại ($1\text{ kWp}$ Rooftop):
    • Đầu tư cố định thông thường: 12.000.000 VNĐ, sản lượng trung bình $4.0\text{ kWh/ngày}$.
    • Đầu tư hệ thống bám 2 trục: Thêm 3.500.000 VNĐ cơ điện, sản lượng đạt $5.48\text{ kWh/ngày}$ ($+37%$).
    • Chênh lệch doanh thu điện tạo ra rút ngắn thời gian hoàn vốn (Payback Period) từ 4.8 năm xuống còn 3.2 năm.

Hạn chế và hướng phát triển

Dù đạt được toàn bộ chỉ tiêu ban đầu, đề tài vẫn tồn tại một số điểm cần tiếp tục hoàn thiện:

  • Hạn chế phần cứng: Hệ thống hiện tại yêu cầu máy tính Host chạy MATLAB xử lý ảnh, chưa đạt tính độc lập tuyệt đối (Standalone Unit).
  • Độ rọi camera: Webcam thông thường dễ bị bão hòa quang phổ (Overexposure) khi chiếu thẳng tâm điểm Mặt Trời ở cường độ bức xạ $> 1000\text{ W/m}^2$.
  • Hướng phát triển:
    1. Nhúng trực tiếp giải thuật xử lý ảnh lên chip SoC hiệu năng cao (như STM32F4/F7 hoặc vi điều khiển DSPic/Raspberry Pi tích hợp OpenCV C++).
    2. Tích hợp giải thuật MPPT (Maximum Power Point Tracking) dựa trên vi điều khiển kết hợp mạch Buck-Boost đồng bộ để thu hoạch năng lượng tối đa tại điểm $V_{MPP} \times I_{MPP}$.
    3. Bổ sung cảm biến đo tốc độ gió để tự động gập phẳng tấm pin khi có bão lớn bảo vệ kết cấu cơ khí.

Đối tượng hưởng lợi

  • Sinh viên ngành Kỹ thuật Điện - Điện tử / Cơ điện tử: Nguồn học liệu tham khảo trực quan về lập trình nhúng PIC họ Mid-range, kỹ thuật điều khiển động cơ bước nửa bước, và phương pháp kết nối dữ liệu MATLAB - VĐK qua chuẩn giao tiếp UART.
  • Kỹ sư R&D thiết bị tự động hóa: Mẫu thiết kế mạch công suất MosFET chịu dòng cao, giải pháp cơ khí truyền động bánh răng ăn khớp chính xác với chi phí chế tạo tối thiểu.
  • Doanh nghiệp năng lượng tái tạo: Cơ sở dữ liệu thực nghiệm chứng minh tính khả thi của việc gia tăng $37%$ sản lượng điện năng cho các trạm quan trắc hải đảo hoặc hệ thống pin mặt trời độc lập.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu nguồn cấp nuôi $5\text{V} - 2\text{A}$ cho mạch điều khiển và $12\text{V}/24\text{V}$ cho tải pin/động cơ; máy tính Host có cổng USB-to-COM hỗ trợ RS232, cài đặt MATLAB có Image Processing Toolbox; bo mạch điều khiển PIC16F887 dao động thạch anh $8\text{MHz}$.

2. Tại sao lại chọn động cơ bước đơn cực thay vì động cơ Servo hay DC giảm tốc?

Động cơ bước có khả năng định vị vị trí góc chính xác dạng số mà không cần encoder phản hồi ngoài, mô-men giữ (Holding Torque) lớn giúp khóa cứng tấm pin tại vị trí đón nắng mà không bị trượt do gió, đồng thời việc điều khiển theo xung giúp vi điều khiển dễ dàng kiểm soát chính xác góc $0.3^\circ/\text{bước}$.

3. Làm sao hệ thống phân biệt được ánh sáng mặt trời thật và các nguồn sáng giả tạo (đèn pha, phản quang)?

Thuật toán MATLAB sử dụng phép lọc hình thái học (Morphological Filtering) kết hợp lọc diện tích Area. Chỉ những vùng liên thông có cường độ sáng vượt ngưỡng bão hòa và có diện tích khối sáng phù hợp với góc mở quang học của Mặt Trời mới được nhận diện để tính toán Centroid.

4. Hệ thống hoạt động thế nào trong những ngày mưa bão hoặc nhiều mây?

Nếu sau 3 chu kỳ liên tiếp không tìm thấy Centroid, hệ thống chuyển sang chế độ tự động nội suy thời gian: cứ 30 phút tự dịch chuyển trục ngang $7.5^\circ$ theo hướng Đông - Tây. Đến 18:00 hoặc khi chạm công tắc hành trình hướng Tây (HT1), tấm pin tự kích hoạt động cơ quay ngược lại vị trí đón nắng ban đầu tại hướng Đông.

5. Chi phí bảo trì của cơ cấu cơ khí 2 trục này như thế nào?

Nhờ sử dụng ổ bi đỡ 1 dãy được bôi trơn bằng mỡ định kỳ và bộ truyền đai răng giảm chấn, hệ thống vận hành êm, không đòi hỏi bảo dưỡng phức tạp; chi phí bảo dưỡng định kỳ hàng năm ước tính dưới $5%$ tổng giá trị lắp đặt.


Kết luận

Đồ án tốt nghiệp "Ứng dụng xử lý ảnh định hướng pin mặt trời" của nhóm tác giả Phạm Hoàng NamPhan Trường Thành đã hoàn thành xuất sắc các mục tiêu đề ra: làm chủ công nghệ thiết kế cơ - điện tử 2 trục, xây dựng thành công giải thuật xử lý ảnh định vị tâm bức xạ mặt trời trên nền tảng MATLAB, và lập trình mạch nhúng vi điều khiển PIC16F887 điều khiển động cơ bước chính xác với độ phân giải $0.3^\circ$.

Kết quả thực nghiệm khẳng định hệ thống vận hành ổn định, mang lại hiệu quả gia tăng sản lượng quang điện lên đến $37%$ so với hệ thống cố định. Đây là tiền đề kỹ thuật vững chắc để phát triển thành các sản phẩm thương mại hóa hoàn chỉnh phục vụ cho nhu cầu phát triển năng lượng sạch và tự động hóa tại Việt Nam.