Bây giờ mình sẽ chỉ cách triển khai phản hồi cho xung SPWM.

Do các hạn chế khác nhau trong PIC16, chẳng hạn như tốc độ ADC, thời gian lệnh và ALU, rất khó, nếu không muốn nói là không thể, để tính toán trong thời gian thực các giá trị cần thiết cho phản hồi trong điều chế độ rộng xung hình sin (xung SPWM). Do đó, để thực hiện phản hồi, phải sử dụng một cách kiểm tra khác . Cách kiểm tra đó sẽ là truy xuất các giá trị từ một bảng sin có chứa các giá trị chu kỳ nhiệm vụ cho một chu kỳ nhiệm vụ cụ thể.
Đây là một bảng sin mà mình đã sử dụng, ví dụ:

const unsigned char sin_table [416] = {
0, 16, 32, 47, 62, 77, 91, 103, 115, 126, 136, 144, 151, 156, 160, 162,
163, 162, 160, 156, 151 , 144, 136, 126, 115, 103, 91, 77, 62, 47, 32,
16, // 65%

0, 17, 33, 49, 65, 80, 94, 107, 120, 131, 141, 149, 156, 162, 166, 168,
169, 168, 166, 162, 156, 149, 141, 131, 120, 107, 94, 80, 65, 49, 33,
17, //67.5%

0, 17, 34, 51, 67, 82, 97, 111, 124, 135, 146, 154, 162, 167, 172, 174,
175, 174, 172, 167, 162, 154, 146, 135, 124, 111, 97, 82, 67, 51, 34,
17, //70%

0, 18, 35, 53, 69, 85, 101, 115, 128, 140, 150, 160, 167, 173, 178, 180,
181, 180, 178, 173, 167, 160, 150, 140, 128, 115, 101, 85, 69, 53, 35,
18, //72.5%

0, 18, 37, 55, 72, 89, 104, 119, 133, 145, 156, 166, 174, 180, 184, 187,
188, 187, 184, 180, 174, 166, 156, 145, 133, 119, 104, 89, 72, 55, 37,
18, //75%

0, 19, 38, 56, 74, 91, 108, 123, 137, 150, 161, 171, 179, 186, 190, 193,
194, 193, 190, 186, 179, 171, 161, 150, 137, 123, 108, 91, 74, 56, 38,
19, //77.5%

0, 20, 39, 58, 77, 94, 111, 127, 141, 155, 166, 176, 185, 191, 196, 199,
200, 199, 196, 191, 185, 176, 166, 155, 141, 127, 111, 94, 77, 58, 39,
20, //80%

0, 20, 40, 60, 79, 97, 114, 131, 146, 159, 171, 182, 190, 197, 202, 205,
206, 205, 202, 197, 190, 182, 171, 159, 146, 131, 114, 97, 79, 60, 40,
20, //82.5%

0, 21, 42, 62, 82, 100, 118, 135, 151, 165, 177, 188, 197, 204, 209,
212, 213, 212, 209, 204, 197, 188, 177, 165, 151, 135, 118, 100, 82, 62,
42, 21, //85

0, 21, 43, 64, 84, 103, 122, 139, 155, 169, 182, 193, 202, 210, 215,
218, 219, 218, 215, 210, 202, 193, 182, 169, 155, 139, 122, 103, 84, 64,
43, 21, //87.5%

0, 22, 44, 65, 86, 106, 125, 143, 159, 174, 187, 198, 208, 215, 221,
224, 225, 224, 221, 215, 208, 198, 187, 174, 159, 143, 125, 106, 86, 65,
44, 22, //90%

0, 23, 45, 67, 88, 109, 128, 147, 163, 179, 192, 204, 213, 221, 227,
230, 231, 230, 227, 221, 213, 204, 192, 179, 163, 147, 128, 109, 88, 67,
45, 23, //92.5%

0, 23, 46, 69, 91, 112, 132, 151, 168, 184, 198, 210, 220, 228, 233,
237, 238, 237, 233, 228, 220, 210, 198, 184, 168, 151, 132, 112, 91, 69,
46, 23 //95%

//0, 25, 49, 73, 96, 118, 139, 159, 177, 193, 208, 220, 231, 239, 245,
249, 250, 249, 245, 239, 231, 220, 208, 193, 177, 159, 139, 118, 96, 73,
49, 25, //100%

Mỗi bộ giá trị tương ứng với một chu kỳ nhiệm vụ có 32 giá trị.

Một con trỏ bảng được sử dụng để truy xuất các giá trị cho một chu kỳ nhiệm vụ nhất định.
Vì vậy, khi giá trị của con trỏ bảng là 0, chương trình đọc 32 giá trị đầu tiên (chu kỳ nhiệm vụ 65%), sau đó là 32 giá trị tiếp theo khi giá trị của con trỏ bảng là 1, v.v.

Đầu tiên bộ vi điều khiển bắt đầu với chu kỳ nhiệm vụ thấp nhất và sau đó phân tích điện áp đầu ra.

Nếu điện áp đầu ra phải được tăng lên, giá trị của con trỏ bảng sẽ tăng lên và do đó, bộ giá trị tiếp theo được truy xuất, làm tăng chu kỳ làm việc và do đó điện áp đầu ra. Nếu phải giảm điện áp đầu ra, giá trị của con trỏ bảng sẽ giảm xuống để bộ giá trị trước đó được truy xuất, giảm chu kỳ nhiệm vụ và do đó điện áp đầu ra.

Đây là cách con trỏ bảng được cập nhật:

                    FBV = ADC_Get_Sample (FBCh);
                    if (FBV <512) {
                       FB_Step ++;
                       if (FB_Step> 12) FB_Step = 12;
                    }
                    else {
                         if (FB_Step> 0) {
                            FB_Step–;
                         }
                    }
                    adder = FB_Step << 5;
                    TMR1L = 0;
                    TMR1H = 0;
                    T1IF_bit = 0;

                

Giá trị tham chiếu của ADC là 5V, vì vậy 512 đại diện cho điện áp 2,5V, là điện áp tham chiếu phản hồi trong ví dụ này. Khi điện áp trên chân ADC> 2,5V, giá trị con trỏ bảng giảm và khi nó <2,5V, giá trị con trỏ bảng tăng lên.

Bộ giá trị bắt buộc được truy xuất và áp dụng bởi một thứ như sau:

        TBL_POINTER_NEW = TBL_POINTER_OLD + SET_FREQ;
        if (TBL_POINTER_NEW <TBL_POINTER_OLD) {
           P1M1_bit = ~ P1M1_bit;
        }
        TBL_POINTER_SHIFT = TBL_POINTER_NEW >> 11;
        DUTY_CYCLE = TBL_POINTER_SHIFT + bộ cộng;
        CCPR1L = sin_table [DUTY_CYCLE];
        TBL_POINTER_OLD = TBL_POINTER_NEW;
        TMR2IF_bit = 0;

Bây giờ mình đã trình bày cách tạo bảng sin theo cách thủ công và với “Smart Sine”, triển khai xung SPWM trong PIC16 và bây giờ, cách triển khai phản hồi, bạn có thể dễ dàng tạo một bộ Inverter sóng sin bằng cách sử dụng thông tin mình đã cung cấp. Tất cả những gì bạn cần làm là đảm bảo rằng bạn đã hiểu những gì mình đã nói và tự mình thực hiện một số nghiên cứu để hoàn thành Project.

Để làm cho điều này rõ ràng hơn và để bạn hiểu rõ hơn, mình trình bày một số câu hỏi phổ biến và câu trả lời của chúng.

Câu hỏi : mình đang thiết kế một bộ nghịch lưu sóng sin thuần túy sử dụng cầu H đầu ra ở 310vdc. Có cần kiểm soát nguồn cấp dữ liệu trở lại nếu mình giữ 310 Vdc ổn định không?
Trả lời: Nếu bạn có thể giữ 310VDC ổn định, thì không cần phản hồi của xung SPWM. Đầu ra của bạn sẽ tương đối ổn định, vì bus DC được điều chỉnh.

Câu hỏi : Tại sao phản hồi là không cần thiết, vì sẽ có sụt áp khi tăng tải? Hãy nhớ rằng mã không tăng hoặc giảm tại thời điểm này. Bây giờ hãy lấy một ví dụ về Inverter sin được sửa đổi bình thườngcủa bạnsử dụng SG3524 hoặc các IC PWM nào.
Điện ápđầu ragiảm khi tăng tải nhưng điện áp pin không thay đổi.

Do đó cũng sẽ có nhu cầu kiểm soát mã. Đúng?
Trả lời: Khi tăng tải, bạn sẽ nhận thấy rằng điện áp của pin luôn giảm do nội trở. Đo điện áp pin của Inverter dưới tải và bạn sẽ thấy rằng nó giảm khi tải tăng. Một pin đo khoảng 12-13V hở mạch có thể giảm xuống 11V hoặc thấp hơn khi tải. Thêm vào đó, có một sự sụt giảm đáng kể bởi biến áp dưới tải.

Ngoài ra, hãy nghĩ về điều này: trong bộ chuyển đổi cầu H, khi tải tăng (và do đó dòng điện tăng) nhưng điện áp bus + ve không đổi, thì điện áp sẽ bị giảm ở đâu? Không có biến áp để xử lý, vì PWM phía sơ cấp sẽ xử lý sự cố rơi xuống của biến áp (và sụt áp pin) và giữ cố định đầu ra. Nơi duy nhất để giảm điện áp là các MOSFET và sẽ có một sự sụt giảm điện áp trong các MOSFET, nhưng không lớn đến mức điện áp đầu ra sẽ vượt quá giới hạn chấp thấy. Câu hỏi : Bạn đã hiển thị 32 giá trị cho mỗi chu kỳ nhiệm vụ trong chương trình. mình có thể sử dụng 192 cho thiết kế 3.5kHz của mình không? Trả lời : Bạn có thể sử dụng các số lượng giá trị chu kỳ nhiệm vụ nào trong một mảng.

32 thường là đủ, nhưng với 192, có thể có độ chính xác cao hơn,đặc biệt là vì tần số là 3,5kHz và khoảng thời gian
dài hơn nhiều so với 16kHz. Vì vậy, xung SPWM chính xác hơn. Tuy nhiên, chỉ cần lưu ý rằng tất cả các giá trị được lưu trữ trong bộ nhớ chương trình.
Vì vậy, nó sẽ tiêu tốn nhiều bộ nhớ chương trình hơn. 

Bạn có thể sử dụng phần mềm SmartSine để tạo bảng sin

Câu hỏi : Điều gì về ký tự không dấu này mà mình có thể thấy (416) trong mã. Cái này được dùng để làm gì?
Trả lời: 32 giá trị tương ứng với sóng sin tại một chu kỳ nhiệm vụ. mình đã đặt 13 cài đặt chu kỳ nhiệm vụ. 13 * 32 = 416
Có tổng cộng 416 giá trị trong mảng, 13 bộ và mỗi bộ (chứa 32 giá trị) tương ứng với một cài đặt chu kỳ nhiệm vụ.

Mỗi bộ giá trị tương ứng với một chu kỳ nhiệm vụ có 32 giá trị.

Một con trỏ bảng được sử dụng để truy xuất các giá trị cho một chu kỳ nhiệm vụ nhất định.
Vì vậy, khi giá trị của con trỏ bảng là 0, chương trình đọc 32 giá trị đầu tiên (chu kỳ nhiệm vụ 65%), sau đó là 32 giá trị tiếp theo khi giá trị của con trỏ bảng là 1, v.v.

Ví dụ thực tế:
Đầu tiên bộ vi điều khiển bắt đầu với chu kỳ nhiệm vụ thấp nhất và sau đó phân tích điện áp đầu ra.

Nếu điện áp đầu ra phải được tăng lên, giá trị của con trỏ bảng sẽ tăng lên và do đó, bộ giá trị tiếp theo được truy xuất, làm tăng chu kỳ làm việc và do đó điện áp đầu ra. Nếu phải giảm điện áp đầu ra, giá trị của con trỏ bảng sẽ giảm xuống để bộ giá trị trước đó được truy xuất, giảm chu kỳ nhiệm vụ và do đó điện áp đầu ra. Con trỏ bảng tiếp tục tăng 1 để tăng chu kỳ làm việc và do đó, điện áp đầu ra của Inverter. Ví dụ thực tế: Khi bắt đầu thực hiện chương trình,
con trỏ bảng bằng 0 và bộ vi điều khiển bắt đầu với chu kỳ nhiệm vụ 65%. Giả sử mình có một biến áp 8V (sơ cấp) đến 256V (thứ cấp) và một bộ chuyển đổi cầu đầy đủ đang được sử dụng để điều khiển biến áp. Các
cầu đang được thúc đẩy bởi các tín hiệu từ vi điều khiển – những xung SPWM tín hiệu.

Điện áp RMS đến sơ cấp của biến áp sẽ là (0,65 * 12 / 1,4142135) V = 5,5V.
Tỷ số vòng quay của biến áp (sơ cấp: thứ cấp) là 1:32.
Vì vậy, điện áp thứ cấp (giả sử 100% hiệu suất biến áp) sẽ là 32 * 5,5V = 176V.
Vì mình yêu cầu một đầu ra là 220V, điều này thấp hơn yêu cầu. Vì vậy,
điện áp đầu ra phải được tăng lên. Vì vậy, con trỏ bảng được tăng lên 1.
Sau đó, chu kỳ nhiệm vụ là 67,5% và điện áp đầu ra là 183V.
Con trỏ bảng được tăng lên 2.
Chu kỳ nhiệm vụ là 70% và điện áp đầu ra là 190V.
Con trỏ bảng được tăng lên 3.
Chu kỳ làm việc là 72,5% và điện áp đầu ra là 197V.
Con trỏ bảng được tăng lên 4.
Chu kỳ làm việc là 75% và điện áp đầu ra là 204V.
Con trỏ bảng được tăng lên 5.
Chu kỳ nhiệm vụ là 77,5% và điện áp đầu ra là 210V.
Con trỏ bảng được tăng lên 6.
Chu kỳ nhiệm vụ là 80% và điện áp đầu ra là 217V.
Con trỏ bảng được tăng lên 7.
Chu kỳ nhiệm vụ là 82,5% và điện áp đầu ra là 224V.
Con trỏ bảng được giảm xuống còn 6.
Chu kỳ làm việc là 80% và điện áp đầu ra là 217V.
Con trỏ bảng được tăng lên 7.
Chu kỳ nhiệm vụ là 82,5% và điện áp đầu ra là 224V.
Con trỏ bảng được giảm xuống còn 6.
Chu kỳ làm việc là 80% và điện áp đầu ra là 217V.
.
.
Và như thế.

Đây là cách quy định đạt được.

TRUNG TÂM SỬA CHỮA ĐIỆN TỬ QUẢNG BÌNH
MR. XÔ - 0901.679.359 - 80 Võ Thị Sáu, Phường Quảng Thuận, tx Ba Đồn, tỉnh Quảng Bình
Sửa điện tử tại Quảng Bình

Đây là tất cả ở 12V. Tuy nhiên, bạn có thể thấy con trỏ bảng sẽ được thay đổi như thế nào để duy trì đầu ra không đổi.

❀◕ ‿ ◕❀

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

− 1 = 2