Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

1.

Mô hình của bộ biến đổi DC-DC tăng áp Boost

Bộ biến đổi Boost được biết đến như là bộ biến đổi DC-DC tăng áp.Sơ đồ mạch của bộ biến đổi
này như hình 1.1

Hình 1.1 Bộ biến đổi DC-DC tăng áp Boost

(a) Transistor Q ở trạng thái ON (b) Transistor Q ở trạng thái OFF


Hình 1.2 Bộ biến đổi DC-DC tăng áp Boost khi transistor ở trạng thái ON và OFF

Giả thiết rằng các van bán dẫn trong bộ biến đổi này là hoàn toàn lý tưởng: transistor Q đóng
cắt không có thời gian trễ và điện áp trên diode D khi thông dẫn dòng bằng không. Gọi () là
dòng điện chảy qua điện cảm  và () là điện áp trên tụ 

Khi transistor Q ở trạng thái ON, diode D khóa. Kết quả là không có sự kết nối năng lương giữa
nguồn điện áp E và tải R, lúc này sơ đồ mạch có dạng như hình 1.2 (a). Áp dụng hai luật Kirchoff
ta có các phương trình sau :


 =
(1.1)

 
 =− (1.2)
 

1
Khi transistor Q ở trạng thái OFF, diode D thông dẫn dòng, cho phép kết nối năng lượng giữa
nguồn E và tải R, lúc này sơ đồ mạch có dạng như hình 1.2 (b) . Áp dụng hai định luật Kirchoff
ta có các phương trình sau :


 = − +
(1.3)

 
 =− (1.4)
 
Gọi  là trạng thái logic của transistor Q, ta thấy rằng  chỉ nhận hai giá trị 0 hoặc 1. Các
phương trình (1.1) và (1.2) sẽ ứng với giá trị  = 1 còn các phương trình (1.3) và (1.4) sẽ ứng
với giá trị  = 0. Khi đó các phương trình (1.1), (1.2), (1.3) và (1.4) sẽ được viết thành:


 = −(1 − ) +
(1.5)

 
 = (1 − ) − (1.6)
 
Đặt các biến trạng thái :

1  
 =  . ;  = (1.7)



Khi đó các phương trình (1.5) và (1.6) trở thành :


= −(1 −  ) + 1 (1.8)

 
= (1 −  ) − (1.9)
 

Trong đó :  là hàm đo chất lượng của mạch

 = ! ⁄ (1.10)

= (1.11)
√
Khi các biến trạng thái  ,  tiến đến giá trị xác lập  ,  và tín hiệu điều khiển  = & =
'()*+* , ta có :

−(1 − &) + 1 = 0 (1.12)

2

(1 − &) − =0 (1.13)


Từ các phương trình (1.12) và (1.13) ta có giá trị ở trạng thái tĩnh:

1 1 1
 = ;  = (1.14)
 (1 − &) 1−&

Gọi ,- là giá trị điện áp đầu ra trung bình mong muốn và được xác định ,- =  , từ (1.14) ta
có:

1  ,- − 1
 = ,- ;  = ,- ; & = (1.15)
 ,-

Mặt khác từ (1.14) ta có hàm truyền đạt tĩnh của bộ biến đổi như sau :

1
ℋ (&) =  = (1.16)
1−&
Dễ thấy rằng hàm truyền đạt tĩnh của mạch luôn luôn lớn hơn 1, từ đó giải thích vì sao bộ biến
đổi này được gọi là bộ tăng áp hay bộ biến đổi Boost. Đồ thị của hàm truyền đạt tĩnh được thể
hiện trên hình 1.3

Hình 1.3 Hàm truyền đạt tĩnh của bộ biến đổi DC-DC tăng áp Boost

Các giá trị trung bình cân bằng của dòng điện qua cuộn cảm () và điện áp trên tải () của bộ
biến đổi được tính từ các biến trạng thái cân bằng như sau :

1 

= ; = (1.17)

1−&
Các phương trình (1.8) và (1.9) là các phương trình trạng thái với giả thiết rằng tín hiệu điều
khiển  = 1 tương ứng với trạng thái transistor Q dẫn và  = 0 tương ứng với trạng thái
transistor Q khóa, nhưng nếu bây giờ ta đặt ngược lại rằng:  = 0 tương ứng với trạng thái

3
transistor Q dẫn và  = 1 tương ứng với trạng thái transistor Q khóa thì ta có một mô hình trạng
thái khác của bộ biến đổi như sau :


= − + 1 (1.18)

 
=  − (1.19)
 

2. Điều khiển trượt bộ biến đổi DC-DC tăng áp Boost

Mô hình không gian trạng thái của bộ biến đổi DC-DC tăng áp Boost được xây dựng ở phần 1 có
dạng như sau :

/  = − + 1 (2.1)

1
/  =  −  (2.2)
 

Ký hiệu:

1
 1 −
 = 0 1 ; 234 = 5 6 ; 734 = 0  1 (2.3)
− 

 

Khi đó mô hình trạng thái của bộ biến đổi DC-DC tăng áp Boost được viết lại thành

/ = 2() + 7() (2.4)

Nhiệm vụ của bài toán điều khiển trượt bộ biến đổi DC-DC tăng áp Boost là thiết kế bộ điều
khiển  = 834 để đưa biến trạng thái điện áp  tới giá trị trạng thái điện áp cân bằng mong
muốn ̅

2.1. Điều khiển trực tiếp

Xét hàm

ℎ() =  − ̅  (2.5)

Để đạt được mục đích đề ra là  tiến tiệm cận tới giá trị trung bình cân bằng mong muốn ̅ thì
bộ điều khiển  = 8() cần phải làm cho hàm ℎ() tiến tiệm cận tới 0

Hiển nhiên rằng để làm được điều này, bộ điều khiển phải tạo ra được dấu của hàm ℎ() phải
luôn ngược dấu với đạo hàm của nó là ℎ()⁄ , nói cách khác khi ℎ() > 0 thì bộ điều khiển
phải tạo ra được ℎ()⁄ < 0 để làm giảm giá trị của ℎ(), ngược lại khi ℎ() < 0 thì bộ điều

4
khiển phải làm tăng giá trị nó lên bằng cách tạo ra ℎ()⁄ > 0, nói tóm lại bộ điều khiển phải
luôn làm thỏa mãn (2.6) sau thì ℎ() sẽ tiến tiệm cận tới 0

ℎ34
)7*(ℎ()) < 0 (2.6)

Bất phương trình (2.6) chính là điều kiện để thiết kế bộ điều khiển trượt  = 8() sao cho . Ta
có:

ℎ() =ℎ()  =ℎ()


= = >2() + 7()? = @ ℎ() + A ℎ() (2.7)
 =  =

Trong công thức (2.7) ta có:

=ℎ() 1 =ℎ()
@ ℎ() = 2() = −  ; A ℎ() = 7() = 
=  =

Khi đó bất phương trình (2.6) được viết thành :

>@ ℎ34 + A ℎ34? )7*(ℎ34) < 0

1
⇔ C−  +  D )7*( − ̅ ) < 0 (2.8)
 

Từ bất phương trình (2.8) ta có thể đưa ra được nhiều bộ điều khiển  = 834 khác nhau và một
trong các bộ điều khiển thỏa mãn (2.8) như sau :

1 
 = 834 = −E. )7*( − ̅ ) + (2.9)
 

Trong công thức (2.9) : E là số thực dương chọn tùy ý

Với bộ điều khiển trượt được thiết kế sao cho thoả mãn (2.8) ta sẽ đưa được biến trạng thái
 tiến tiệm cận tới ̅ sau một khoảng thời gian  . Tuy nhiên khi  đã tiến tiệm cận tới ̅  thì
biến trạng  lại không tiến tới giá trị trung bình cân bằng ̅ và có thể ra xa vô cùng . Thật vậy:

Khi  đã tiến tiệm cận tới ̅ thì :

1 ̅ 
 = FG = (2.10)
 

1 ̅  1 ̅ 
/  = − + 1 = − H I+1= H − I (2.11)
   

Xét hàm Lyapunov như sau :

5

1 ̅  
, ( ) = H − I (2.12)
2 

Dễ thấy rằng hàm Lyapunov (2.12) là xác định dương . Lấy đạo hàm của , ( ) theo  ta được :

=, ̅   1 ̅   1 ̅  
,/ ( ) = / = H − I. H − I = . H − I ≥0 (2.13)
=      

Từ (2.13) ta thấy rằng ,/ ( ) là bán xác định dương do đó khi  tiến tiệm cận tới ̅ thì
 không tiến tới giá trị trung bình cân bằng ̅ = ̅  ⁄ mà tiến ra vô cùng, tức là hệ sẽ không
ổn định. Do đó, hệ sẽ không có tính động học không (The zero dynamics)

Phương án điều khiển trực tiếp biến trạng thái điện  là không khả thi. Do đó ở đây ta sẽ điều
khiển gián tiếp biến trạng thái điện áp  thông qua điều khiển biến trạng thái dòng điện  .

2.2. Điều khiển gián tiếp

Xét hàm

ℎ() =  − ̅ (2.14)

Trong công thứ (2.14): ̅ = ̅  ⁄ ; ̅ là điểm trạng thái điện áp mong muốn

Tư tưởng của phương án điều khiển gián tiếp là thiết kế bộ điều khiển để làm cho  tiến tiệm
cận tới ̅ thông qua đó sẽ làm cho  tiến tiệm cận tới ̅  và hệ ổn định tại điểm trạng thái cân
bằng đó

Để làm cho  tiến tiệm cận tới ̅ thì bộ điều khiển  = 8() cần phải làm cho hàm ℎ() tiến
tiệm cận tới 0

Hiển nhiên rằng để làm được điều này, bộ điều khiển phải tạo ra được dấu của hàm ℎ() phải
luôn ngược dấu với đạo hàm của nó là ℎ()⁄ , nói cách khác khi ℎ() > 0 thì bộ điều khiển
phải tạo ra được ℎ()⁄ < 0 để làm giảm giá trị của ℎ(), ngược lại khi ℎ() < 0 thì phải bộ
điều khiển phải làm tăng giá trị nó lên bằng cách tạo ra ℎ()⁄ > 0, nói tóm lại nhiệm vụ của
bộ điều khiển là phải tạo ra được :

ℎ()
)7*(ℎ()) < 0 (2.15)

Bất phương trình (2.15) chính là điều kiện để thiết kế bộ điều khiển trượt  = 8() sao cho
 tiến tiệm cận tới ̅ . Ta có:

ℎ() =ℎ()  =ℎ()


= = >2() + 7()? = @ ℎ() + A ℎ() (2.16)
 =  =

6
Trong công thức (2.16) ta có:

=ℎ34 =ℎ34
@ ℎ34 = 234 = 1 ; A ℎ34 = 734 = − (2.17)
= =

Khi đó bất phương trình (2.15) được viết thành :

>@ ℎ34 + A ℎ34? )7*(ℎ()) < 0

⇔ (1 −  ))7*( − ̅ ) < 0 (2.18)

Từ bất phương trình (2.18) ta có thể đưa ra được nhiều bộ điều khiển  = 834 khác nhau và
một trong các bộ điều khiển đó như sau :

1
 = 834 = −E. )7*( − ̅ ) + (2.19)


Trong công thức (2.18) : E là một số thực dương chọn tùy ý

Với bộ điều khiển trượt thỏa mãn (2.18) sẽ làm cho  tiến tiệm cận tới ̅ sau một khoảng thời
gian  và khi  đã tiến tiệm cận tới ̅ thì  sẽ tiến tiệm cận tới ̅ và hệ ổn định tại điểm cân
bằng đó. Thật vậy:

Khi  đã tiến tiệm cận tới ̅thì :

1
 = FG = (2.20)


1 ̅ 1 ̅   1 1
/  =  −  = − −  = − +  = − 3̅  −   4 (2.21)
      

Xét hàm Lyapunov như sau :

1
, ( ) = ( − ̅ ) (2.22)
2 
Dễ thấy rằng hàm Lyapunov (2.22) là xác định dương. Lấy đạo hàm của , ( ) theo  ta được :

=, 1 1
,/ ( ) = /  = −( − ̅ ) 3̅  −   4 = − ( − ̅  ) ( + ̅  ) (2.23)
=  

Từ (2.23) ta thấy rằng ,/ ( ) < 0 với ∀  ≠ ̅ . Do đó ,/ ( ) xác định âm

Suy ra  sẽ tiến tiệm cận tới ̅ khi  đã tiến tiệm cận tới ̅ . Vậy với bộ điều khiển trượt được
thiết kế thỏa mãn (2.18) ta sẽ đưa được vector trạng thái của hệ  = ( ,  ) M tiến tiệm cận tới
điểm trung bình cân bằng ( ,  ) M và ổn định tại đó

7
Kết hợp với điều kiện rằng tín hiệu điều khiển  chỉ nhận một trong hai giá trị 0 hoặc 1, từ bất
phương trình (2.18) ta cũng đưa ra được bộ điều khiển như sau :

0 Oℎ  − ̅ < 0P


=N (2.24)
1 Oℎ  − ̅ > 0

Hay :

1
= (1 + )7*( − ̅ )) (2.25)
2
3. Mô phỏng điều khiển trượt bộ biến đổi DC-DC tăng áp Boost

Các phương trình (1.5) và (1.6) là cơ sở để ta xây dựng mô hình mô phỏng cho bộ biến đổi DC –
DC tăng áp Boost. Để xây dựng mô hình mô phỏng cho bộ biến đổi này ta có thể sử dụng các
khối có sẵn trong thư viện của Matlab và Simulink hoặc tự tạo ra các khối mới sử dụng hàm S –
Function . Để tạo hàm S – Function có hai cách : Soạn thảo một script (m-File), lập trình tính
toán các phương trình (1.8) , (1.9) và cách thứ 2 là sọan thảo chương trình bằng ngôn ngữ C,
C++ tính toán các phương trình mô hình (1.8), (1.9) của bộ biến đổi. Sau khi soạn thảo mã
nguồn được dịch sang File chạy trực tiếp, File chạy được gọi là mex-File có đuôi .dll (Dynamic
Link Library)

Giải pháp tốt nhất để xây dựng mô hình mô phỏng bộ biến đổi DC – DC tăng áp Boost là xây
dựng mô hình dưới dạng C-mex-File, dịch sang thành .dll-Flie để gọi từ khối S-Function. Đoạn
mã nguồn C dưới đây là mô hình của bộ biến đởi DC – DC tăng áp Boost
/* File : BoostConverter.c
*
*/

#define S_FUNCTION_NAME BoostConverter


#define S_FUNCTION_LEVEL 2

#include "simstruc.h"

#define U(element) (*uPtrs[element]) /* Pointer to Input Port0 */

#define INDUCTOR_IDX 0
#define INDUCTOR_PARAM(S) ssGetSFcnParam(S,INDUCTOR_IDX)

#define LOAD_IDX 1
#define LOAD_PARAM(S) ssGetSFcnParam(S,LOAD_IDX)

#define CAPACITOR_IDX 2
#define CAPACITOR_PARAM(S) ssGetSFcnParam(S,CAPACITOR_IDX)

#define VOLTAGE_IDX 3
#define VOLTAGE_PARAM(S) ssGetSFcnParam(S,VOLTAGE_IDX)

8
#define X0_IDX 4
#define X0_PARAM(S) ssGetSFcnParam(S,X0_IDX)

#define NPARAMS 5
#define NSTATES 2
#define NINPUTS 1
#define NOUTPUTS 2

/*====================*
* S-function methods *
*====================*/

#define MDL_CHECK_PARAMETERS
#if defined(MDL_CHECK_PARAMETERS) && defined(MATLAB_MEX_FILE)

/* Function: mdlCheckParameters =============================================


* Abstract:
* Validate our parameters to verify they are okay.
*/
static void mdlCheckParameters(SimStruct *S)
{

}
#endif /* MDL_CHECK_PARAMETERS */

/* Function: mdlInitializeSizes==============================================
*
*/

static void mdlInitializeSizes(SimStruct *S)


{
ssSetNumSFcnParams(S, NPARAMS); /* Number of expected parameters */
#if defined(MATLAB_MEX_FILE)
if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) {
mdlCheckParameters(S);
if (ssGetErrorStatus(S) != NULL) {
return;
}
} else {
return; /* Parameter mismatch will be reported by Simulink */
}
#endif

{
int iParam = 0;
int nParam = ssGetNumSFcnParams(S);

for ( iParam = 0; iParam < nParam; iParam++ )


{
ssSetSFcnParamTunable( S, iParam, SS_PRM_SIM_ONLY_TUNABLE );
}
}

ssSetNumContStates(S, NSTATES);
ssSetNumDiscStates(S, 0);

9
if (!ssSetNumInputPorts(S, 1)) return;
ssSetInputPortWidth(S, 0, NINPUTS);
ssSetInputPortDirectFeedThrough(S, 0, 1);

if (!ssSetNumOutputPorts(S, 1)) return;


ssSetOutputPortWidth(S, 0, NOUTPUTS);

ssSetNumSampleTimes(S, 1);
ssSetNumRWork(S, 0);
ssSetNumIWork(S, 0);
ssSetNumPWork(S, 0);
ssSetNumModes(S, 0);
ssSetNumNonsampledZCs(S, 0);

/* Take care when specifying exception free code - see BoostConverter.c */


ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
}

/* Function: mdlInitializeSampleTimes========================================
* Abstract:
* S-function is comprised of only continuous sample time elements
*/

static void mdlInitializeSampleTimes(SimStruct *S)


{
ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);
ssSetModelReferenceSampleTimeDefaultInheritance(S);

#define MDL_INITIALIZE_CONDITIONS
/* Function: mdlInitializeConditions ========================================
* Abstract:
* If the initial condition parameter (X0) is not an empty matrix,
* then use it to set up the initial conditions, otherwise,
* set the intial conditions to all 0.0
*/
static void mdlInitializeConditions(SimStruct *S)
{

real_T *x0 = ssGetContStates(S);


int_T i, nStates;

nStates = ssGetNumContStates(S);
if (mxGetM(X0_PARAM(S)) != 0) {
const real_T *pr = mxGetPr(X0_PARAM(S));

for (i = 0; i < nStates; i++) {


*x0++ = *pr++;
}

10
} else {
for (i = 0; i < nStates; i++) {
*x0++ = 0.0;
}
}
}

/* Function: mdlOutputs
=======================================================
*
*/
static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T *y = ssGetOutputPortRealSignal(S,0);
real_T *x = ssGetContStates(S);
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
const real_T *INDUCTOR = mxGetPr(INDUCTOR_PARAM(S));
const real_T *LOAD = mxGetPr(LOAD_PARAM(S));
const real_T *CAPACITOR = mxGetPr(CAPACITOR_PARAM(S));
const real_T *VOLTAGE = mxGetPr(VOLTAGE_PARAM(S));
real_T di,dv,i,v,u,L,R,C,E;
int_T nStates = ssGetNumContStates(S);
int_T nInputs = ssGetInputPortWidth(S,0);

UNUSED_ARG(tid); /* not used in single tasking mode */

y[0] = x[0];
y[1] = x[1];

#define MDL_DERIVATIVES
/* Function: mdlDerivatives =================================================
*
*/
static void mdlDerivatives(SimStruct *S)
{
real_T *dx = ssGetdX(S);
real_T *x = ssGetContStates(S);
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
const real_T *INDUCTOR = mxGetPr(INDUCTOR_PARAM(S));
const real_T *LOAD = mxGetPr(LOAD_PARAM(S));
const real_T *CAPACITOR = mxGetPr(CAPACITOR_PARAM(S));
const real_T *VOLTAGE = mxGetPr(VOLTAGE_PARAM(S));
real_T di,dv,i,v,u,L,R,C,E;
int_T nStates = ssGetNumContStates(S);
int_T nInputs = ssGetInputPortWidth(S,0);

UNUSED_ARG(S); /* unused input argument */


L=*INDUCTOR;
R=*LOAD;
C=*CAPACITOR;
E=*VOLTAGE;
i=x[0];

11
v=x[1];
u=U(0);

di = -(1-u)*v/L + E/L;
dv =(1-u)*i/C-v/(R*C);
dx[0]=di;
dx[1]=dv;

/* Function: mdlTerminate
=====================================================
* Abstract:
* No termination needed, but we are required to have this routine.
*/
static void mdlTerminate(SimStruct *S)
{
UNUSED_ARG(S); /* unused input argument */
}

#ifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */


#include "simulink.c" /* MEX-file interface mechanism */
#else
#include "cg_sfun.h" /* Code generation registration function */
#endif

Mô hình mô phỏng của bộ điều khiển trượt được xây dựng dựa trên (2.24), được viết bằng C-
mex-File và dịch sang thành .dll-Flie để gọi từ khối S-Function . Đoạn mã nguồn C dưới đây là
mô hình của bộ biến đổi DC – DC tăng áp Boost .
/* File : Controller.c
*
*/

#define S_FUNCTION_NAME Controller


#define S_FUNCTION_LEVEL 2

#include "simstruc.h"
#include <math.h>

#define U(element) (*uPtrs[element]) /* Pointer to Input Port0 */

#define NPARAMS 0
#define NINPUTS 2
#define NOUTPUTS 1

/*====================*
* S-function methods *
*====================*/

#define MDL_CHECK_PARAMETERS

12
#if defined(MDL_CHECK_PARAMETERS) && defined(MATLAB_MEX_FILE)
/* Function: mdlCheckParameters
=============================================
* Abstract:
* Validate our parameters to verify they are okay.
*/
static void mdlCheckParameters(SimStruct *S)
{

}
#endif /* MDL_CHECK_PARAMETERS */

static void mdlInitializeSizes(SimStruct *S)


{
ssSetNumSFcnParams(S, NPARAMS); /* Number of expected parameters */
#if defined(MATLAB_MEX_FILE)
if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) {
mdlCheckParameters(S);
if (ssGetErrorStatus(S) != NULL) {
return;
}
} else {
return; /* Parameter mismatch will be reported by Simulink */
}
#endif
{
int iParam = 0;
int nParam = ssGetNumSFcnParams(S);

for ( iParam = 0; iParam < nParam; iParam++ )


{
ssSetSFcnParamTunable( S, iParam, SS_PRM_SIM_ONLY_TUNABLE );
}
}
ssSetNumContStates(S, 0);
ssSetNumDiscStates(S, 0);

if (!ssSetNumInputPorts(S, 1)) return;


ssSetInputPortWidth(S, 0, NINPUTS);
ssSetInputPortDirectFeedThrough(S, 0, 1);

if (!ssSetNumOutputPorts(S, 1)) return;


ssSetOutputPortWidth(S, 0, NOUTPUTS);

ssSetNumSampleTimes(S, 1);
ssSetNumRWork(S, 0);
ssSetNumIWork(S, 0);
ssSetNumPWork(S, 0);
ssSetNumModes(S, 0);
ssSetNumNonsampledZCs(S, 0);

/* Take care when specifying exception free code - see sfuntmpl_doc.c */


ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);

13
/* Function: mdlInitializeSampleTimes
=========================================
* Abstract:
* S-function is comprised of only continuous sample time elements
*/
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime(S, 0, 0.0);
ssSetOffsetTime(S, 0, 0.0);
ssSetModelReferenceSampleTimeDefaultInheritance(S);

/* Function: mdlOutputs
=======================================================
*
*/
static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T *y = ssGetOutputPortRealSignal(S,0);
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
real_T Iref,current,u;

UNUSED_ARG(tid); /* not used in single tasking mode */


u=0;
Iref = U(0);
current = U(1);

if (current>Iref)
u=0;
if (current<Iref)
u=1;
*y=u;
}

/* Function: mdlTerminate
=====================================================
* Abstract:
* No termination needed, but we are required to have this routine.
*/
static void mdlTerminate(SimStruct *S)
{
UNUSED_ARG(S); /* unused input argument */
}

#ifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */


#include "simulink.c" /* MEX-file interface mechanism */
#else
#include "cg_sfun.h" /* Code generation registration function */
#endif

14
Sơ đồ mô phỏng điều khiển trượt bộ biến đổi DC- DC tăng áp như hình (3.1)

Hình 3.1 Mô phỏng điều khiển trượt bộ biến đổi DC – DC tăng áp Boost

Các thông số mô phỏng:

Điện cảm  = 15.91 mH

Điện dung  = 50 μF

Tải  = 52 Ω

Điện áp nguồn
= 12 V

Giá trị điệp áp trung bình cân bằng mong muốn trên tải  = 24 V

Tương ứng với giá trị điệp áp trung bình cân bằng trên tải là giá trị dòng điện cân bằng

 = 0.923 V

Kết quả mô phỏng được thể hiện trên hình 3.2

15
Hình 3.2 Kết quả mô phỏng điều khiển trượt bộ biến đổi DC – DC tăng áp Boost

Nhận xét:

Giá trị điệp áp trung bình cân bằng trên tải và giá trị dòng điện trung bình cân bằng qua cuộn dây
đúng như tính toán ở phần trên

16

You might also like