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