Tải bản đầy đủ (.pdf) (31 trang)

nghiên cứu thiết kế phần mềm trợ giúp chế tạo phần mềm trợ cảm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.39 MB, 31 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH

BÁO CÁO TỔNG KẾT
ĐỀ TÀI KH&CN CẤP TRƯỜNG

NGHIÊN CỨU THIẾT KẾ PHẦN MỀM
TRỢ GIÚP CHẾ TẠO PHẦN MỀM TRỢ CẢM
S

K

C

0

0

3

9
2

5
7

9
4

MÃ SỐ: T2009 - 09



S KC 0 0 3 2 8 8

Tp. Hồ Chí Minh, 2009


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH


ĐỀ TÀI NCKH CẤP TRƯỜNG
NGHIÊN CỨU THIẾT KẾ PHẦN MỀM TRỢ GIÚP
CHẾ TẠO PHẦN TỬ ĐIỆN CẢM

MÃ SỐ: T2009-07

THUỘC NHÓM NGÀNH: KHOA HỌC KỸ THUẬT
NGƯỜI CHỦ TRÌ:
ĐẬU TRỌNG HIỂN
ĐƠN VỊ:
KHOA ĐIỆN - ĐIỆN TỬ

TP. HỒ CHÍ MINH – 8/2009


Trang 1

PHẦN I: ĐẶT VẤN ĐỀ

I.


ĐỐI TƢỢNG NGHIÊN CỨU
Đề tài nghiên cứu phương thức và mối quan hệ giữa các thành phần trong
cuộn dây từ đó hỗ trợ tính tốn cũng như thiết kế cuộn dây phục vụ sinh
viên, kỹ sư ngành điện, điều khiển tự động, cơ điện tử.

II.

TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGỒI NƢỚC
Đã có một số phần mềm tính tốn phần tử điện cảm nhưng còn đơn giản
chưa đáp ứng tốt được nhu cầu thực tế.

III.

NHỮNG VẤN ĐỀ CỊN TỒN TẠI
Phần tử điện cảm là phần tử quan trọng trong mạch điện, đặc biệt
trong ngành viễn thông. Hiện nay thò trường không có bán sẵn linh
kiện này nên các kỹ sư cũng như sinh viên khi thiết kế thi công mạch
đều phải mày mò tự chế tạo phần tử này. Công việc chế tạo này đòi
hỏi phài tính toán phức tạp vì vậy việc thiết kế xây dựng phần
mềmtrợ giúp chế tạo phần tử điện cảm là rất cần thiết..


Trang 2

PHẦN II: GIẢI QUYẾT VẤN ĐỀ

MỤC ĐÍCH CỦA ĐỀ TÀI

I)


Nghiên cứu thiết kế phần mềm hỗ trợ chế tạo phần tử điện cảm như tính
toán số vòng dây, vật liệu chế tạo lõi, hình dáng, đường kính vòng dây .
PHƢƠNG PHÁP NGHIÊN CỨU

II)

Nghiên cứu tính chất, đặc tính của phần tử điện cảm và các phương tình tốn
học liên quan. Từ đó đưa ra các giải thuật tính tốn phù hợp.
III)
1.

NỘI DUNG
Các tính chất và vật liệu từ

1.1 cuộn dây một lớp

Cuộn dây một lớp có hai thuận lợi. Thứ nhất nó khơng bị tổn hao lõi sắt và
phi tuyến. Thứ hai, cuộn dây một lớp có điện dung ký sinh thấp vì vậy tần số
tự cộng hưởng rất cao. Loại cuộn cảm này thường được sử dụng với tần số
trên 3Mhz. Một cách tương đối chúng ta có thể tính tốn điện cảm của cuộn
dây theo biểu thức sau:
L = 0.001 N2r2 / (228r + 254l)
Trong đó L(H): cảm kháng , r(m): bán kính cuộn dây, l(m): chiều dài cuộn
dây, N: số vòng cuộn dây. Cơng thức này áp dụng cho tần số thấp. Tại tần số
đủ cao xảy ra hiệu ứng da thì suy giảm 2%.
Chúng ta có thể làm suy giảm cảm kháng bằng cách kéo các vòng dây xa
nhau một chút. Điều này cũng ảnh hưởng tới tần số cộng hưởng riêng của



Trang 3

cuộn dây. Đây cũng chính là khuyết điểm khi ta cần một cuộn dây có cảm
kháng ổn định. Để khắc phục khuyết điểm này sau khi thực hiện xong cuộn
dây và cân chỉnh được giá trị phù hợp ta đổ sáp lên cuộn dây để cố định
khoảng cách giữa các vòng dây.
1.2 Cuộn dây đa lớp
Hình dưới đây mô tả cuộn dây đa lớp.

Kiểu cuộn dây này rất phổ biến vì nó có thể dễ dàng được quấn bởi máy
quấn dây kết hợp với một cái lõi quấn. Điều quan trọng ở đây là kiểu hình
dạng nào của cuộn dây cho hiệu quả cao nhất.
Tỉ số giữa độ dày và chiều dài cuộn dây c/b gần bằng 1. Vì thế cuộn dây có
phần giao nhau theo hình vuông. Bởi vì hình vuông sẽ giữ các vòng dây gần
nhau để duy trì hệ số ghép từ tính.


Trang 4

Trong hình 2 chúng ta thấy 3 cuộn dây theo mặt cắt phần giao nhau. Mỗi
cuộn dây đều có chung chiều dài nhưng đường kính cuộn dây thì khác nhau.
Cảm kháng của một vòng dây tỉ lệ tuyến tính với đường kính của nó. Vì thế
chúng ta muốn đường kính cuộn dây lớn để đạt được cảm kháng lớn. Và
chúng ta cũng cần các vòng dây này gần nhau. Cuộn dây phía bên trái thỏa
mãn được điều này, nhưng vấn đề ở đây là chúng ta sẽ không đủ dây để
quấn nhiều vòng.
Ta đặt S1 = (c/2a)2 thì cảm kháng được tính như sau:
L = 4×10-7πa N2((0.5+S1/12)ln(8/S1) -0.84834+0.2041S1)
Trong đó bán kính cuộn dây đo bằng mm.
Nếu chúng ta sử dụng phương pháp Brooks để quấn cuộn dây thì ta có thể

tính cảm kháng theo công thức sau:
L = 1.6994×10-6aN2 henrys
1.3 Mật độ từ thông trong cuộn dây có lõi không khí
Ở một vài ứngdụng cuộn dây được sử dụng để tạo ra một khoảng không
gian có mật độ từ thông xác định chẳng hạn như cuộn lái ngang và lái dọc
trong ống tia cathode để điều khiển chùm tia. Khi chúng ta xác định được từ
trường xung quanh cuôn dây chúng ta có thể tính được cảm kháng cuộn dây.


Trang 5

Phương trình Biot-Savart:

dB = μ0 I ds sinθ / (4π r2) teslas
Biot-Savart equation
1.4 Mối quan hệ giữa các đại lƣợng từ hóa

Magnetic quantities in the SI
Quantity

Quantity

Quantity

Quantity

name

symbol


name

symbol

coercivity

Hc

core factor

Σl/A

effective area

Ae

effective length

le

effective permeability

μe

flux linkage

λ

induced voltage


e

inductance

L

inductance factor

Al

initial permeability

μi

intensity of
magnetization
magnetic flux
magnetic mass
susceptibility

I

Φ

χρ

magnetic polarization

J


magnetization

M

magnetic field
strength
magnetic flux
density
magnetic moment
magnetic
susceptibility
magnetomotive
force

H

B

m

χ

Fm


Trang 6

permeability

μ


relative permeability

μr

remnance

Br

permeability of
vacuum
reluctance

μ0
Rm

Chúng ta lấy ví dụ cuộn “toroid” dƣới đây để tính toán:

Data for approved toroid
Parameter

Symbol

Value

Effective magnetic path length

le

27.6×10-3 m


Effective core area

Ae

19.4×10-6 m2

Relative permeability

μr

2490

Inductance factor

Al

2200 nH

saturation flux density

Bsat

360 mT

Giả sử ta muốn tính cảm kháng cuộn dây trong trường hợp số vòng dây là 2:
Σl/A = le / Ae = 27.6×10-3 / 19.4×10-6 = 1420 m-1
μ = μ0 × μr = 1.257×10-6 × 2490 = 3.13×10-3 Hm-1
Rm = (Σl/A) / μ = 1420 / 3.13×10-3 = 4.55×105 A-t Wb-1
Al = 109 / Rm = 109 / 4.55×105 = 2200 nH per turn2



Trang 7

1.5 đƣờng cong từ hóa
Đường cong từ hóa biểu diễn mối quan hệ giữa B và H:

1.6 Vật liệu sắt từ

Điều quan trọng nhất của vật liệu từ chính là tính sắt từ.


Trang 8
1.7 Phân loại vật liệu

Bảng phân loại sau dựa trên hoạt động của vật liệu từ tính:

Table MPJ: Materials classified by their magnetic properties.
Dependant

χ
Class

on

dependant

temperature

on B?


Hysteresis?

Example

?

Diamagnetic

No

No

No

water

Paramagnetic

No

Yes

No

Aluminium

Ferromagnetic

Yes


Yes

Yes

Iron

Yes

Yes

Yes

Terbium

Yes

Yes

Yes

MnZn(Fe2O4)2

Antiferromagn
etic
Ferrimagnetic

1.8 Độ từ thẩm

Độ từ thẩm trong hệ SI

Quantity name
Quantity symbol
Unit name
Unit symbols
Base units

χ

permeability
alias absolute permeability
μ
henrys per metre
H m-1
kg m s-2 A-2

Duality with the Electric World
Quantity

Unit

Formula

Permeability

henrys per metre

μ = L/d

Permittivity


farads per metre

ε = C/d

-9.0
×10-6
2.2
×10-5
3000
9.51
E-02
2500


Trang 9

μ=B/H

1.9 Từ thẩm tƣơng đối (Relative permeability)

Relative permeability
Quantity name
Quantity symbol
Unit symbols

Relative permeability
μr
dimensionless

Độ từ thẩm tương đối là thông số được sử dụng thường xuyên trong việc

tính toán.
μr = μ / μ0
Thông thường khi nói đến độ từ thẩm thì có thể hiểu ngầm đó là từ thông
tương đối.


Trang 10

Approximate maximum permeabilities
Material

μ/(H m1

μr

)

Application

Ferrite U 60

1.00E-05

8

UHF chokes

Ferrite M33

9.42E-04


750

Resonant circuit RM cores

7.54E-04

600

-

Ferrite N41

3.77E-03

3000

Power circuits

Iron (99.8% pure)

6.28E-03

5000

-

Ferrite T38

1.26E-02


10000

Broadband transformers

Silicon GO steel

5.03E-02

40000

supermalloy

1.26

1000000

Nickel (99%
pure)

Dynamos, mains
transformers
Recording heads


Trang 11

2.

Thiết kế chƣơng trình


2.1 Các hàm tính toán
coilDlg.h : header file
//
#if!defined(AFX_COILDLG_H__15352B27_1D45_4EAB_9758_2CBD5C
C52C02__INCLUDED_)
#define
AFX_COILDLG_H__15352B27_1D45_4EAB_9758_2CBD5CC52C02__I
NCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CCoilDlg dialog

class CCoilDlg : public CDialog
{
// Construction
public:
CCoilDlg(CWnd* pParent = NULL);

// Dialog Data
//{{AFX_DATA(CCoilDlg)
enum { IDD = IDD_COIL_DIALOG };
float m_a;
float m_a2;
float m_b;
float m_b2;


// standard constructor


Trang 12

float m_l;
float m_l2;
float m_induct;
float m_induct2;
int

m_n;

int

m_n2;

float m_a3;
float m_a4;
float m_induct3;
float m_induct4;
float m_l3;
float m_l4;
int

m_n3;

int


m_n4;

//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCoilDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV
support
//}}AFX_VIRTUAL

// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_MSG(CCoilDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);


Trang 13

afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnCalinduct();
afx_msg void OnButton1();
afx_msg void OnCalturns();
afx_msg void OnCalinduct2();
afx_msg void OnCalturns2();

//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately
before the previous line.

#endif //
!defined(AFX_COILDLG_H__15352B27_1D45_4EAB_9758_2CBD5CC5
2C02__INCLUDED_)


Trang 14

coilDlg.cpp : implementation file
//

#include "stdafx.h"
#include "coil.h"
#include "coilDlg.h"
#include "math.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:


Trang 15

virtual void DoDataExchange(CDataExchange* pDX);
support
//}}AFX_VIRTUAL

// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};


CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// DDX/DDV


Trang 16

// CCoilDlg dialog

CCoilDlg::CCoilDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCoilDlg::IDD, pParent)

{
//{{AFX_DATA_INIT(CCoilDlg)
m_a = 0.0f;
m_a2 = 0.0f;
m_b = 0.0f;
m_b2 = 0.0f;
m_l = 0.0f;
m_l2 = 0.0f;
m_induct = 0.0f;
m_induct2 = 0.0f;
m_n = 0;
m_n2 = 0;
m_a3 = 0.0f;
m_a4 = 0.0f;
m_induct3 = 0.0f;
m_induct4 = 0.0f;
m_l3 = 0.0f;
m_l4 = 0.0f;
m_n3 = 0;
m_n4 = 0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in
Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCoilDlg::DoDataExchange(CDataExchange* pDX)


Trang 17


{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCoilDlg)
DDX_Text(pDX, IDC_A, m_a);
DDX_Text(pDX, IDC_A2, m_a2);
DDX_Text(pDX, IDC_B, m_b);
DDX_Text(pDX, IDC_B2, m_b2);
DDX_Text(pDX, IDC_L, m_l);
DDX_Text(pDX, IDC_L2, m_l2);
DDX_Text(pDX, IDC_INDUCT, m_induct);
DDX_Text(pDX, IDC_INDUCT2, m_induct2);
DDX_Text(pDX, IDC_N, m_n);
DDX_Text(pDX, IDC_N2, m_n2);
DDX_Text(pDX, IDC_A3, m_a3);
DDX_Text(pDX, IDC_A4, m_a4);
DDX_Text(pDX, IDC_INDUCT3, m_induct3);
DDX_Text(pDX, IDC_INDUCT4, m_induct4);
DDX_Text(pDX, IDC_L3, m_l3);
DDX_Text(pDX, IDC_L4, m_l4);
DDX_Text(pDX, IDC_N3, m_n3);
DDX_Text(pDX, IDC_N4, m_n4);
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCoilDlg, CDialog)
//{{AFX_MSG_MAP(CCoilDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(ID_CALINDUCT, OnCalinduct)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)


Trang 18

ON_BN_CLICKED(IDC_CALTURNS, OnCalturns)
ON_BN_CLICKED(ID_CALINDUCT2, OnCalinduct2)
ON_BN_CLICKED(IDC_CALTURNS2, OnCalturns2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCoilDlg message handlers

BOOL CCoilDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,
IDM_ABOUTBOX, strAboutMenu);
}
}


Trang 19

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);

// Set big icon

SetIcon(m_hIcon, FALSE);

// Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
}

void CCoilDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{

CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CCoilDlg::OnPaint()
{
if (IsIconic())


Trang 20

{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM)
dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;

GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CCoilDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

void CCoilDlg::OnCalinduct()


Trang 21

{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if (!(m_n*m_a*m_l)) MessageBox(" Please input parameters!",
MB_OK);

else
{m_induct=m_n*m_n*0.2*m_a*m_a/(25.4*(3*m_a+9*m_l+10*(m_am_b)));UpdateData(FALSE);}

}

void CCoilDlg::OnButton1()
{
// TODO: Add your control notification handler code here
MessageBox("outer diameter: diameter of the winding form including
the wire layer(s) inner diameter: diameter of the winding form length: length
of the coil (only the coil itself, not the winding form) Don't forget to select
your unit for outer diameter, inner diameter and length!");

}

void CCoilDlg::OnCalturns()
{
UpdateData(TRUE);
if (!(m_induct2*m_a2*m_l2)) MessageBox(" Please input parameters!",
MB_OK);
else {m_n2=sqrt((m_induct2*25.4*(3*m_a2+9*m_l2+10*(m_a2m_b2)))/(0.2*m_a*m_a));UpdateData(FALSE);}

}


Trang 22

void CCoilDlg::OnCalinduct2()
{
UpdateData(TRUE);

if (!(m_n3*m_a3*m_l3)) MessageBox(" Please input parameters!",
MB_OK);
else
{m_induct3=m_n3*m_n3*0.25*m_a3*m_a3/(25.4*(4.5*m_a3+10*m_l3));
UpdateData(FALSE);}

}

void CCoilDlg::OnCalturns2()
{
UpdateData(TRUE);
if (!(m_induct4*m_a4*m_l4)) MessageBox(" Please input parameters!",
MB_OK);
else
{m_n4=sqrt((m_induct4*25.4*(4.5*m_a4+10*m_l4))/(0.25*m_a4*m_a4));
UpdateData(FALSE);}
}


Trang 23

2.2 Thiết kế giao diện
2.2.1 Tính toán cảm kháng cuộn dây đơn lớp
Number of turns: số vòng dây cuộn
cảm
Outer diameter: đường kính cuộn dây
Length: chiều dài cuộn dây
Inductane: giá trị cảm kháng

2.2.2 Thiết kế cuộn dây đơn lớp


Number of turns: số vòng dây cuộn cảm
Outer diameter: đường kính cuộn dây
Length: chiều dài cuộn dây
Inductane: giá trị cảm kháng


×