Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
c4428ae5
Commit
c4428ae5
authored
Aug 07, 2011
by
jean-pierre charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Pcb calculator: Add track width tool
parent
4de4a208
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
4906 additions
and
219 deletions
+4906
-219
CMakeLists.txt
pcb_calculator/CMakeLists.txt
+1
-0
UnitSelector.h
pcb_calculator/UnitSelector.h
+5
-0
pcb_calculator_frame_base.cpp
pcb_calculator/dialogs/pcb_calculator_frame_base.cpp
+245
-18
pcb_calculator_frame_base.fbp
pcb_calculator/dialogs/pcb_calculator_frame_base.fbp
+4370
-196
pcb_calculator_frame_base.h
pcb_calculator/dialogs/pcb_calculator_frame_base.h
+51
-3
RF_attenuators.odt
pcb_calculator/docs/RF_attenuators.odt
+0
-0
tracks_width_formulas.pdf
pcb_calculator/docs/tracks_width_formulas.pdf
+0
-0
pcb_calculator.h
pcb_calculator/pcb_calculator.h
+26
-0
pcb_calculator_frame.cpp
pcb_calculator/pcb_calculator_frame.cpp
+4
-0
tracks_width_versus_current.cpp
pcb_calculator/tracks_width_versus_current.cpp
+202
-0
transline_ident.cpp
pcb_calculator/transline_ident.cpp
+2
-2
No files found.
pcb_calculator/CMakeLists.txt
View file @
c4428ae5
...
...
@@ -14,6 +14,7 @@ set(PCB_CALCULATOR_SRCS
params_read_write.cpp
regulators_funct.cpp
transline_ident.cpp
tracks_width_versus_current.cpp
UnitSelector.cpp
transline/transline.cpp
transline/c_microstrip.cpp
...
...
pcb_calculator/UnitSelector.h
View file @
c4428ae5
...
...
@@ -27,6 +27,11 @@ public:
* to normalized units (meter, herz, ohm, radian )
*/
virtual
double
GetUnitScale
()
=
0
;
wxString
GetUnitName
()
{
return
GetStringSelection
();
}
};
class
UNIT_SELECTOR_LEN
:
public
UNIT_SELECTOR
...
...
pcb_calculator/dialogs/pcb_calculator_frame_base.cpp
View file @
c4428ae5
...
...
@@ -136,6 +136,228 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
m_panelRegulators
->
Layout
();
bSizerMainReg
->
Fit
(
m_panelRegulators
);
m_Notebook
->
AddPage
(
m_panelRegulators
,
_
(
"Regulators"
),
false
);
m_panelTrackWidth
=
new
wxPanel
(
m_Notebook
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
wxTAB_TRAVERSAL
);
wxBoxSizer
*
bSizerTrackWidth
;
bSizerTrackWidth
=
new
wxBoxSizer
(
wxHORIZONTAL
);
wxStaticBoxSizer
*
sbSizerTW_Prms
;
sbSizerTW_Prms
=
new
wxStaticBoxSizer
(
new
wxStaticBox
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Parameters:"
)
),
wxVERTICAL
);
m_staticText89
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Valid max values:
\n
35A for external traces and 17.5A for internal.
\n
400mil widths.
\n
Maximum temperature rise of 100C."
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText89
->
Wrap
(
-
1
);
m_staticText89
->
SetFont
(
wxFont
(
wxNORMAL_FONT
->
GetPointSize
(),
70
,
90
,
92
,
false
,
wxEmptyString
)
);
sbSizerTW_Prms
->
Add
(
m_staticText89
,
0
,
wxALL
,
5
);
wxFlexGridSizer
*
fgSizer10
;
fgSizer10
=
new
wxFlexGridSizer
(
4
,
3
,
0
,
0
);
fgSizer10
->
AddGrowableCol
(
1
);
fgSizer10
->
SetFlexibleDirection
(
wxBOTH
);
fgSizer10
->
SetNonFlexibleGrowMode
(
wxFLEX_GROWMODE_SPECIFIED
);
m_staticTextCurrent
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Current"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticTextCurrent
->
Wrap
(
-
1
);
fgSizer10
->
Add
(
m_staticTextCurrent
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_TrackCurrentValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizer10
->
Add
(
m_TrackCurrentValue
,
0
,
wxALL
|
wxEXPAND
,
5
);
m_staticText62
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"A"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText62
->
Wrap
(
-
1
);
fgSizer10
->
Add
(
m_staticText62
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_staticText63
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Temperature rise"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText63
->
Wrap
(
-
1
);
fgSizer10
->
Add
(
m_staticText63
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_TrackDeltaTValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizer10
->
Add
(
m_TrackDeltaTValue
,
0
,
wxALL
|
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
,
5
);
m_staticText64
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"C"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText64
->
Wrap
(
-
1
);
fgSizer10
->
Add
(
m_staticText64
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_staticText65
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Cu thickness"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText65
->
Wrap
(
-
1
);
fgSizer10
->
Add
(
m_staticText65
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
|
wxRIGHT
|
wxLEFT
,
5
);
m_TrackThicknessValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizer10
->
Add
(
m_TrackThicknessValue
,
0
,
wxALL
|
wxEXPAND
,
5
);
wxArrayString
m_TW_CuThickness_choiceUnitChoices
;
m_TW_CuThickness_choiceUnit
=
new
UNIT_SELECTOR_LEN
(
m_panelTrackWidth
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
m_TW_CuThickness_choiceUnitChoices
,
0
);
m_TW_CuThickness_choiceUnit
->
SetSelection
(
0
);
fgSizer10
->
Add
(
m_TW_CuThickness_choiceUnit
,
0
,
wxALL
|
wxEXPAND
,
5
);
m_staticText66
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Conductor length"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText66
->
Wrap
(
-
1
);
fgSizer10
->
Add
(
m_staticText66
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
|
wxRIGHT
|
wxLEFT
,
5
);
m_TrackLengthValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizer10
->
Add
(
m_TrackLengthValue
,
0
,
wxALL
|
wxEXPAND
,
5
);
wxArrayString
m_TW_CuLength_choiceUnitChoices
;
m_TW_CuLength_choiceUnit
=
new
UNIT_SELECTOR_LEN
(
m_panelTrackWidth
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
m_TW_CuLength_choiceUnitChoices
,
0
);
m_TW_CuLength_choiceUnit
->
SetSelection
(
0
);
fgSizer10
->
Add
(
m_TW_CuLength_choiceUnit
,
0
,
wxALL
|
wxEXPAND
,
5
);
sbSizerTW_Prms
->
Add
(
fgSizer10
,
1
,
wxEXPAND
,
5
);
m_htmlWinFormulas
=
new
wxHtmlWindow
(
m_panelTrackWidth
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
wxHW_NO_SELECTION
|
wxHW_SCROLLBAR_AUTO
|
wxSIMPLE_BORDER
);
sbSizerTW_Prms
->
Add
(
m_htmlWinFormulas
,
1
,
wxALL
|
wxEXPAND
,
5
);
bSizerTrackWidth
->
Add
(
sbSizerTW_Prms
,
1
,
wxALL
|
wxEXPAND
,
5
);
m_buttonTW
=
new
wxButton
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
">>>"
),
wxDefaultPosition
,
wxDefaultSize
,
wxBU_EXACTFIT
);
bSizerTrackWidth
->
Add
(
m_buttonTW
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxTOP
|
wxBOTTOM
,
5
);
wxBoxSizer
*
bSizeRight
;
bSizeRight
=
new
wxBoxSizer
(
wxVERTICAL
);
wxStaticBoxSizer
*
sbSizerTW_Result
;
sbSizerTW_Result
=
new
wxStaticBoxSizer
(
new
wxStaticBox
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Tracks Caracteristics (External Layers):"
)
),
wxVERTICAL
);
wxFlexGridSizer
*
fgSizerTW_Results
;
fgSizerTW_Results
=
new
wxFlexGridSizer
(
5
,
3
,
0
,
0
);
fgSizerTW_Results
->
AddGrowableCol
(
1
);
fgSizerTW_Results
->
SetFlexibleDirection
(
wxBOTH
);
fgSizerTW_Results
->
SetNonFlexibleGrowMode
(
wxFLEX_GROWMODE_SPECIFIED
);
m_staticTextWidth
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Required trace width"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticTextWidth
->
Wrap
(
-
1
);
fgSizerTW_Results
->
Add
(
m_staticTextWidth
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_ExtTrackWidthValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results
->
Add
(
m_ExtTrackWidthValue
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
wxArrayString
m_TW_ExtTrackWidth_choiceUnitChoices
;
m_TW_ExtTrackWidth_choiceUnit
=
new
UNIT_SELECTOR_LEN
(
m_panelTrackWidth
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
m_TW_ExtTrackWidth_choiceUnitChoices
,
0
);
m_TW_ExtTrackWidth_choiceUnit
->
SetSelection
(
0
);
fgSizerTW_Results
->
Add
(
m_TW_ExtTrackWidth_choiceUnit
,
0
,
wxEXPAND
|
wxALIGN_CENTER_VERTICAL
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_staticTextArea
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Cross-section area"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticTextArea
->
Wrap
(
-
1
);
fgSizerTW_Results
->
Add
(
m_staticTextArea
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_ExtTrackAreaValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results
->
Add
(
m_ExtTrackAreaValue
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_ExtTrackAreaUnitLabel
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"mm ^ 2"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_ExtTrackAreaUnitLabel
->
Wrap
(
-
1
);
fgSizerTW_Results
->
Add
(
m_ExtTrackAreaUnitLabel
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_staticText651
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Resistance"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText651
->
Wrap
(
-
1
);
fgSizerTW_Results
->
Add
(
m_staticText651
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
|
wxRIGHT
|
wxLEFT
,
5
);
m_ExtTrackResistValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results
->
Add
(
m_ExtTrackResistValue
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_staticText84
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Ohm"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText84
->
Wrap
(
-
1
);
fgSizerTW_Results
->
Add
(
m_staticText84
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_staticText661
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Voltage drop"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText661
->
Wrap
(
-
1
);
fgSizerTW_Results
->
Add
(
m_staticText661
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
|
wxRIGHT
|
wxLEFT
,
5
);
m_ExtTrackVDropValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results
->
Add
(
m_ExtTrackVDropValue
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_staticText83
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Volt"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText83
->
Wrap
(
-
1
);
fgSizerTW_Results
->
Add
(
m_staticText83
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_staticText79
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Loss"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText79
->
Wrap
(
-
1
);
fgSizerTW_Results
->
Add
(
m_staticText79
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_RIGHT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_ExtTrackLossValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results
->
Add
(
m_ExtTrackLossValue
,
0
,
wxALL
|
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
,
5
);
m_staticText791
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Watt"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText791
->
Wrap
(
-
1
);
fgSizerTW_Results
->
Add
(
m_staticText791
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
sbSizerTW_Result
->
Add
(
fgSizerTW_Results
,
0
,
wxEXPAND
,
5
);
bSizeRight
->
Add
(
sbSizerTW_Result
,
1
,
wxEXPAND
|
wxALL
,
5
);
wxStaticBoxSizer
*
sbSizerTW_Result1
;
sbSizerTW_Result1
=
new
wxStaticBoxSizer
(
new
wxStaticBox
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Tracks Caracteristics (Internal Layers):"
)
),
wxVERTICAL
);
wxFlexGridSizer
*
fgSizerTW_Results1
;
fgSizerTW_Results1
=
new
wxFlexGridSizer
(
6
,
3
,
0
,
0
);
fgSizerTW_Results1
->
AddGrowableCol
(
1
);
fgSizerTW_Results1
->
SetFlexibleDirection
(
wxBOTH
);
fgSizerTW_Results1
->
SetNonFlexibleGrowMode
(
wxFLEX_GROWMODE_SPECIFIED
);
m_staticTextWidth11
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Required trace width"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticTextWidth11
->
Wrap
(
-
1
);
fgSizerTW_Results1
->
Add
(
m_staticTextWidth11
,
0
,
wxALL
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_IntTrackWidthValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results1
->
Add
(
m_IntTrackWidthValue
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
wxArrayString
m_TW_IntTrackWidth_choiceUnitChoices
;
m_TW_IntTrackWidth_choiceUnit
=
new
UNIT_SELECTOR_LEN
(
m_panelTrackWidth
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
m_TW_IntTrackWidth_choiceUnitChoices
,
0
);
m_TW_IntTrackWidth_choiceUnit
->
SetSelection
(
0
);
fgSizerTW_Results1
->
Add
(
m_TW_IntTrackWidth_choiceUnit
,
0
,
wxEXPAND
|
wxALIGN_CENTER_VERTICAL
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_staticTextArea1
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Cross-section area"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticTextArea1
->
Wrap
(
-
1
);
fgSizerTW_Results1
->
Add
(
m_staticTextArea1
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_IntTrackAreaValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results1
->
Add
(
m_IntTrackAreaValue
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_IntTrackAreaUnitLabel
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"mm ^ 2"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_IntTrackAreaUnitLabel
->
Wrap
(
-
1
);
fgSizerTW_Results1
->
Add
(
m_IntTrackAreaUnitLabel
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_staticText6511
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Resistance"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText6511
->
Wrap
(
-
1
);
fgSizerTW_Results1
->
Add
(
m_staticText6511
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
|
wxRIGHT
|
wxLEFT
,
5
);
m_IntTrackResistValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results1
->
Add
(
m_IntTrackResistValue
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_staticText841
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Ohm"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText841
->
Wrap
(
-
1
);
fgSizerTW_Results1
->
Add
(
m_staticText841
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_staticText6611
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Voltage drop"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText6611
->
Wrap
(
-
1
);
fgSizerTW_Results1
->
Add
(
m_staticText6611
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
|
wxRIGHT
|
wxLEFT
,
5
);
m_IntTrackVDropValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results1
->
Add
(
m_IntTrackVDropValue
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
|
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_staticText831
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Volt"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText831
->
Wrap
(
-
1
);
fgSizerTW_Results1
->
Add
(
m_staticText831
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_staticText792
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Loss"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText792
->
Wrap
(
-
1
);
fgSizerTW_Results1
->
Add
(
m_staticText792
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_RIGHT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_IntTrackLossValue
=
new
wxTextCtrl
(
m_panelTrackWidth
,
wxID_ANY
,
wxEmptyString
,
wxDefaultPosition
,
wxDefaultSize
,
0
);
fgSizerTW_Results1
->
Add
(
m_IntTrackLossValue
,
0
,
wxALL
|
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
,
5
);
m_staticText7911
=
new
wxStaticText
(
m_panelTrackWidth
,
wxID_ANY
,
_
(
"Watt"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_staticText7911
->
Wrap
(
-
1
);
fgSizerTW_Results1
->
Add
(
m_staticText7911
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
sbSizerTW_Result1
->
Add
(
fgSizerTW_Results1
,
0
,
wxEXPAND
,
5
);
bSizeRight
->
Add
(
sbSizerTW_Result1
,
1
,
wxEXPAND
|
wxALL
,
5
);
bSizerTrackWidth
->
Add
(
bSizeRight
,
1
,
wxEXPAND
,
5
);
m_panelTrackWidth
->
SetSizer
(
bSizerTrackWidth
);
m_panelTrackWidth
->
Layout
();
bSizerTrackWidth
->
Fit
(
m_panelTrackWidth
);
m_Notebook
->
AddPage
(
m_panelTrackWidth
,
_
(
"Track Width"
),
true
);
m_panelTransline
=
new
wxPanel
(
m_Notebook
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
wxTAB_TRAVERSAL
);
wxBoxSizer
*
bSizeTransline
;
bSizeTransline
=
new
wxBoxSizer
(
wxHORIZONTAL
);
...
...
@@ -444,66 +666,69 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
wxStaticBoxSizer
*
sbMessagesSizer
;
sbMessagesSizer
=
new
wxStaticBoxSizer
(
new
wxStaticBox
(
m_panelTransline
,
wxID_ANY
,
_
(
"Results:"
)
),
wxVERTICAL
);
wxGridSizer
*
gSizerResults
;
gSizerResults
=
new
wxGridSizer
(
7
,
2
,
0
,
0
);
wxFlexGridSizer
*
fgSizerTranslResults
;
fgSizerTranslResults
=
new
wxFlexGridSizer
(
7
,
2
,
0
,
0
);
fgSizerTranslResults
->
AddGrowableCol
(
1
);
fgSizerTranslResults
->
SetFlexibleDirection
(
wxBOTH
);
fgSizerTranslResults
->
SetNonFlexibleGrowMode
(
wxFLEX_GROWMODE_SPECIFIED
);
m_left_message1
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_left_message1
->
Wrap
(
-
1
);
gSizer
Results
->
Add
(
m_left_message1
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
fgSizerTransl
Results
->
Add
(
m_left_message1
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_Message1
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Message1
->
Wrap
(
-
1
);
gSizerResults
->
Add
(
m_Message1
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
fgSizerTranslResults
->
Add
(
m_Message1
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
,
5
);
m_left_message2
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_left_message2
->
Wrap
(
-
1
);
gSizer
Results
->
Add
(
m_left_message2
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
fgSizerTransl
Results
->
Add
(
m_left_message2
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_Message2
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Message2
->
Wrap
(
-
1
);
gSizer
Results
->
Add
(
m_Message2
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
fgSizerTransl
Results
->
Add
(
m_Message2
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
m_left_message3
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_left_message3
->
Wrap
(
-
1
);
gSizer
Results
->
Add
(
m_left_message3
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
fgSizerTransl
Results
->
Add
(
m_left_message3
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_Message3
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Message3
->
Wrap
(
-
1
);
gSizerResults
->
Add
(
m_Message3
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
fgSizerTranslResults
->
Add
(
m_Message3
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
,
5
);
m_left_message4
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_left_message4
->
Wrap
(
-
1
);
gSizer
Results
->
Add
(
m_left_message4
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
fgSizerTransl
Results
->
Add
(
m_left_message4
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_Message4
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Message4
->
Wrap
(
-
1
);
gSizerResults
->
Add
(
m_Message4
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
fgSizerTranslResults
->
Add
(
m_Message4
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
,
5
);
m_left_message5
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_left_message5
->
Wrap
(
-
1
);
gSizer
Results
->
Add
(
m_left_message5
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxRIGHT
|
wxLEFT
|
wxALIGN_RIGHT
,
5
);
fgSizerTransl
Results
->
Add
(
m_left_message5
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxRIGHT
|
wxLEFT
|
wxALIGN_RIGHT
,
5
);
m_Message5
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Message5
->
Wrap
(
-
1
);
gSizerResults
->
Add
(
m_Message5
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxRIGHT
|
wxLEFT
,
5
);
fgSizerTranslResults
->
Add
(
m_Message5
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxRIGHT
|
wxLEFT
|
wxEXPAND
,
5
);
m_left_message6
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_left_message6
->
Wrap
(
-
1
);
gSizer
Results
->
Add
(
m_left_message6
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
fgSizerTransl
Results
->
Add
(
m_left_message6
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_Message6
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Message6
->
Wrap
(
-
1
);
gSizerResults
->
Add
(
m_Message6
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxRIGHT
|
wxLEFT
,
5
);
fgSizerTranslResults
->
Add
(
m_Message6
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxRIGHT
|
wxLEFT
|
wxEXPAND
,
5
);
m_left_message7
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_left_message7
->
Wrap
(
-
1
);
gSizer
Results
->
Add
(
m_left_message7
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
fgSizerTransl
Results
->
Add
(
m_left_message7
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALIGN_RIGHT
,
5
);
m_Message7
=
new
wxStaticText
(
m_panelTransline
,
wxID_ANY
,
_
(
"dummy"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Message7
->
Wrap
(
-
1
);
gSizerResults
->
Add
(
m_Message7
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
,
5
);
fgSizerTranslResults
->
Add
(
m_Message7
,
0
,
wxRIGHT
|
wxLEFT
|
wxALIGN_CENTER_VERTICAL
|
wxEXPAND
,
5
);
sbMessagesSizer
->
Add
(
gSizer
Results
,
1
,
wxEXPAND
,
5
);
sbMessagesSizer
->
Add
(
fgSizerTransl
Results
,
1
,
wxEXPAND
,
5
);
bRightSizer
->
Add
(
sbMessagesSizer
,
1
,
wxEXPAND
|
wxTOP
,
5
);
...
...
@@ -722,7 +947,7 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
m_panelColorCode
->
SetSizer
(
bSizerPanelColorCode
);
m_panelColorCode
->
Layout
();
bSizerPanelColorCode
->
Fit
(
m_panelColorCode
);
m_Notebook
->
AddPage
(
m_panelColorCode
,
_
(
"Color Code"
),
tru
e
);
m_Notebook
->
AddPage
(
m_panelColorCode
,
_
(
"Color Code"
),
fals
e
);
m_panelBoardClass
=
new
wxPanel
(
m_Notebook
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
wxTAB_TRAVERSAL
);
wxBoxSizer
*
bSizerBoardClass
;
bSizerBoardClass
=
new
wxBoxSizer
(
wxHORIZONTAL
);
...
...
@@ -798,6 +1023,7 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
// Connect Events
m_buttonCalculate
->
Connect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnRegulatorCalcButtonClick
),
NULL
,
this
);
m_buttonTW
->
Connect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnTWCalculateButt
),
NULL
,
this
);
m_TranslineSelection
->
Connect
(
wxEVT_COMMAND_RADIOBOX_SELECTED
,
wxCommandEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnTranslineSelection
),
NULL
,
this
);
m_panelDisplayshape
->
Connect
(
wxEVT_PAINT
,
wxPaintEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnPaintTranslinePanel
),
NULL
,
this
);
m_button_EpsilonR
->
Connect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnTranslineEpsilonR_Button
),
NULL
,
this
);
...
...
@@ -817,6 +1043,7 @@ PCB_CALCULATOR_FRAME_BASE::~PCB_CALCULATOR_FRAME_BASE()
{
// Disconnect Events
m_buttonCalculate
->
Disconnect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnRegulatorCalcButtonClick
),
NULL
,
this
);
m_buttonTW
->
Disconnect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnTWCalculateButt
),
NULL
,
this
);
m_TranslineSelection
->
Disconnect
(
wxEVT_COMMAND_RADIOBOX_SELECTED
,
wxCommandEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnTranslineSelection
),
NULL
,
this
);
m_panelDisplayshape
->
Disconnect
(
wxEVT_PAINT
,
wxPaintEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnPaintTranslinePanel
),
NULL
,
this
);
m_button_EpsilonR
->
Disconnect
(
wxEVT_COMMAND_BUTTON_CLICKED
,
wxCommandEventHandler
(
PCB_CALCULATOR_FRAME_BASE
::
OnTranslineEpsilonR_Button
),
NULL
,
this
);
...
...
pcb_calculator/dialogs/pcb_calculator_frame_base.fbp
View file @
c4428ae5
This source diff could not be displayed because it is too large. You can
view the blob
instead.
pcb_calculator/dialogs/pcb_calculator_frame_base.h
View file @
c4428ae5
...
...
@@ -33,10 +33,11 @@ class UNIT_SELECTOR_RESISTOR;
#include <wx/textctrl.h>
#include <wx/button.h>
#include <wx/panel.h>
#include <wx/radiobox.h>
#include <wx/statline.h>
#include <wx/choice.h>
#include <wx/html/htmlwin.h>
#include <wx/statbox.h>
#include <wx/radiobox.h>
#include <wx/statline.h>
#include <wx/grid.h>
#include <wx/notebook.h>
#include <wx/frame.h>
...
...
@@ -75,6 +76,52 @@ class PCB_CALCULATOR_FRAME_BASE : public wxFrame
wxStaticText
*
m_unitsVout
;
wxButton
*
m_buttonCalculate
;
wxStaticText
*
m_RegulMessage
;
wxPanel
*
m_panelTrackWidth
;
wxStaticText
*
m_staticText89
;
wxStaticText
*
m_staticTextCurrent
;
wxTextCtrl
*
m_TrackCurrentValue
;
wxStaticText
*
m_staticText62
;
wxStaticText
*
m_staticText63
;
wxTextCtrl
*
m_TrackDeltaTValue
;
wxStaticText
*
m_staticText64
;
wxStaticText
*
m_staticText65
;
wxTextCtrl
*
m_TrackThicknessValue
;
UNIT_SELECTOR_LEN
*
m_TW_CuThickness_choiceUnit
;
wxStaticText
*
m_staticText66
;
wxTextCtrl
*
m_TrackLengthValue
;
UNIT_SELECTOR_LEN
*
m_TW_CuLength_choiceUnit
;
wxHtmlWindow
*
m_htmlWinFormulas
;
wxButton
*
m_buttonTW
;
wxStaticText
*
m_staticTextWidth
;
wxTextCtrl
*
m_ExtTrackWidthValue
;
UNIT_SELECTOR_LEN
*
m_TW_ExtTrackWidth_choiceUnit
;
wxStaticText
*
m_staticTextArea
;
wxTextCtrl
*
m_ExtTrackAreaValue
;
wxStaticText
*
m_ExtTrackAreaUnitLabel
;
wxStaticText
*
m_staticText651
;
wxTextCtrl
*
m_ExtTrackResistValue
;
wxStaticText
*
m_staticText84
;
wxStaticText
*
m_staticText661
;
wxTextCtrl
*
m_ExtTrackVDropValue
;
wxStaticText
*
m_staticText83
;
wxStaticText
*
m_staticText79
;
wxTextCtrl
*
m_ExtTrackLossValue
;
wxStaticText
*
m_staticText791
;
wxStaticText
*
m_staticTextWidth11
;
wxTextCtrl
*
m_IntTrackWidthValue
;
UNIT_SELECTOR_LEN
*
m_TW_IntTrackWidth_choiceUnit
;
wxStaticText
*
m_staticTextArea1
;
wxTextCtrl
*
m_IntTrackAreaValue
;
wxStaticText
*
m_IntTrackAreaUnitLabel
;
wxStaticText
*
m_staticText6511
;
wxTextCtrl
*
m_IntTrackResistValue
;
wxStaticText
*
m_staticText841
;
wxStaticText
*
m_staticText6611
;
wxTextCtrl
*
m_IntTrackVDropValue
;
wxStaticText
*
m_staticText831
;
wxStaticText
*
m_staticText792
;
wxTextCtrl
*
m_IntTrackLossValue
;
wxStaticText
*
m_staticText7911
;
wxPanel
*
m_panelTransline
;
wxRadioBox
*
m_TranslineSelection
;
wxPanel
*
m_panelDisplayshape
;
...
...
@@ -195,6 +242,7 @@ class PCB_CALCULATOR_FRAME_BASE : public wxFrame
// Virtual event handlers, overide them in your derived class
virtual
void
OnRegulatorCalcButtonClick
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
OnTWCalculateButt
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
OnTranslineSelection
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
OnPaintTranslinePanel
(
wxPaintEvent
&
event
)
{
event
.
Skip
();
}
virtual
void
OnTranslineEpsilonR_Button
(
wxCommandEvent
&
event
)
{
event
.
Skip
();
}
...
...
@@ -212,7 +260,7 @@ class PCB_CALCULATOR_FRAME_BASE : public wxFrame
public
:
PCB_CALCULATOR_FRAME_BASE
(
wxWindow
*
parent
,
wxWindowID
id
=
wxID_ANY
,
const
wxString
&
title
=
_
(
"Pcb Calculator"
),
const
wxPoint
&
pos
=
wxDefaultPosition
,
const
wxSize
&
size
=
wxSize
(
752
,
465
),
long
style
=
wxDEFAULT_FRAME_STYLE
|
wxRESIZE_BORDER
|
wxFULL_REPAINT_ON_RESIZE
|
wxTAB_TRAVERSAL
);
PCB_CALCULATOR_FRAME_BASE
(
wxWindow
*
parent
,
wxWindowID
id
=
wxID_ANY
,
const
wxString
&
title
=
_
(
"Pcb Calculator"
),
const
wxPoint
&
pos
=
wxDefaultPosition
,
const
wxSize
&
size
=
wxSize
(
670
,
465
),
long
style
=
wxDEFAULT_FRAME_STYLE
|
wxRESIZE_BORDER
|
wxFULL_REPAINT_ON_RESIZE
|
wxTAB_TRAVERSAL
);
~
PCB_CALCULATOR_FRAME_BASE
();
...
...
pcb_calculator/docs/RF_attenuators.odt
View file @
c4428ae5
No preview for this file type
pcb_calculator/docs/tracks_width_formulas.pdf
0 → 100644
View file @
c4428ae5
File added
pcb_calculator/pcb_calculator.h
View file @
c4428ae5
...
...
@@ -46,6 +46,32 @@ private:
void
ReadConfig
();
void
WriteConfig
();
// tracks width versus current functions:
/**
* Function OnTWCalculateButt
* Called by clicking on the calculate button
*/
void
OnTWCalculateButt
(
wxCommandEvent
&
event
);
/**
* Function TW_Init
* Read config and init dialog widgets values
*/
void
TW_Init
();
/**
* Function TW_WriteConfig
* Write Track width prameters in config
*/
void
TW_WriteConfig
();
/**
* Function TWCalculate
* Performs track caracteristics values calculations.
*/
double
TWCalculate
(
double
aCurrent
,
double
aThickness
,
double
aDeltaT_C
,
bool
aUseInternalLayer
);
// Transline functions:
/**
* Function OnTranslineSelection
...
...
pcb_calculator/pcb_calculator_frame.cpp
View file @
c4428ae5
...
...
@@ -73,6 +73,8 @@ PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( wxWindow * parent ) :
TranslineTypeSelection
(
m_currTransLineType
);
m_TranslineSelection
->
SetSelection
(
m_currTransLineType
);
TW_Init
();
SetAttenuator
(
m_AttenuatorsSelection
->
GetSelection
()
);
ToleranceSelection
(
m_rbToleranceSelection
->
GetSelection
()
);
...
...
@@ -175,6 +177,8 @@ void PCB_CALCULATOR_FRAME::WriteConfig()
m_Config
->
Write
(
KEYWORD_REGUL_VREF
,
m_RegulVrefValue
->
GetValue
()
);
m_Config
->
Write
(
KEYWORD_REGUL_VOUT
,
m_RegulVoutValue
->
GetValue
()
);
TW_WriteConfig
();
for
(
unsigned
ii
=
0
;
ii
<
m_transline_list
.
size
();
ii
++
)
m_transline_list
[
ii
]
->
WriteConfig
(
m_Config
);
for
(
unsigned
ii
=
0
;
ii
<
m_attenuator_list
.
size
();
ii
++
)
...
...
pcb_calculator/tracks_width_versus_current.cpp
0 → 100644
View file @
c4428ae5
/*
* This program source code file is part of KICAD, a free EDA CAD application.
*
* Copyright (C) 2011 jean-pierre.charras
* Copyright (C) 1992-2011 Kicad Developers, see change_log.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/* see
* http://www.desmith.net/NMdS/Electronics/TraceWidth.html
* http://www.ultracad.com/articles/pcbtemp.pdf
* for more info
*/
#include "wx/wx.h"
#include "wx/config.h"
#include "pcb_calculator_frame_base.h"
#include "pcb_calculator.h"
#include "UnitSelector.h"
#include "units_scales.h"
extern
double
ReturnDoubleFromString
(
const
wxString
&
TextValue
);
// Key words to read/write some parameters in config:
#define KEYWORD_TW_CURRENT wxT( "TW_Track_Current" )
#define KEYWORD_TW_DELTA_TC wxT( "TW_Delta_TC" )
#define KEYWORD_TW_TRACK_COPPER_THICKNESS wxT( "TW_Track_CopperThickness" )
#define KEYWORD_TW_TRACK_LEN wxT( "TW_Track_Len" )
#define KEYWORD_TW_TRACK_COPPER_THICKNESS_UNIT wxT( "TW_Track_CopperThickness_Unit" )
#define KEYWORD_TW_TRACK_LEN_UNIT wxT( "TW_Track_Len_Unit" )
#define KEYWORD_TW_EXTTRACK_WIDTH_UNIT wxT( "TW_ExtTrack_Width_Unit" )
#define KEYWORD_TW_INTTRACK_WIDTH_UNIT wxT( "TW_IntTrack_Width_Unit" )
void
PCB_CALCULATOR_FRAME
::
TW_WriteConfig
()
{
// Save current parameters values in config:
m_Config
->
Write
(
KEYWORD_TW_EXTTRACK_WIDTH_UNIT
,
m_TW_ExtTrackWidth_choiceUnit
->
GetSelection
()
);
m_Config
->
Write
(
KEYWORD_TW_INTTRACK_WIDTH_UNIT
,
m_TW_IntTrackWidth_choiceUnit
->
GetSelection
()
);
m_Config
->
Write
(
KEYWORD_TW_TRACK_COPPER_THICKNESS_UNIT
,
m_TW_CuThickness_choiceUnit
->
GetSelection
()
);
m_Config
->
Write
(
KEYWORD_TW_TRACK_LEN_UNIT
,
m_TW_CuLength_choiceUnit
->
GetSelection
()
);
m_Config
->
Write
(
KEYWORD_TW_CURRENT
,
m_TrackCurrentValue
->
GetValue
()
);
m_Config
->
Write
(
KEYWORD_TW_DELTA_TC
,
m_TrackDeltaTValue
->
GetValue
()
);
m_Config
->
Write
(
KEYWORD_TW_TRACK_COPPER_THICKNESS
,
m_TrackThicknessValue
->
GetValue
()
);
m_Config
->
Write
(
KEYWORD_TW_TRACK_LEN
,
m_TrackLengthValue
->
GetValue
()
);
}
void
PCB_CALCULATOR_FRAME
::
OnTWCalculateButt
(
wxCommandEvent
&
event
)
{
// Prepare parameters:
double
current
=
ReturnDoubleFromString
(
m_TrackCurrentValue
->
GetValue
()
);
double
thickness
=
ReturnDoubleFromString
(
m_TrackThicknessValue
->
GetValue
()
);
double
deltaT_C
=
ReturnDoubleFromString
(
m_TrackDeltaTValue
->
GetValue
()
);
double
track_len
=
ReturnDoubleFromString
(
m_TrackLengthValue
->
GetValue
()
);
double
extTrackWidth
;
double
intTrackWidth
;
// Normalize units:
thickness
*=
m_TW_CuThickness_choiceUnit
->
GetUnitScale
();
track_len
*=
m_TW_CuLength_choiceUnit
->
GetUnitScale
();
extTrackWidth
=
TWCalculate
(
current
,
thickness
,
deltaT_C
,
false
);
intTrackWidth
=
TWCalculate
(
current
,
thickness
,
deltaT_C
,
true
);
// Display values:
wxString
msg
;
msg
.
Printf
(
wxT
(
"%g"
),
extTrackWidth
/
m_TW_ExtTrackWidth_choiceUnit
->
GetUnitScale
()
);
m_ExtTrackWidthValue
->
SetValue
(
msg
);
msg
.
Printf
(
wxT
(
"%g"
),
intTrackWidth
/
m_TW_IntTrackWidth_choiceUnit
->
GetUnitScale
()
);
m_IntTrackWidthValue
->
SetValue
(
msg
);
// Display areas:
double
scale
=
m_TW_ExtTrackWidth_choiceUnit
->
GetUnitScale
();
double
ext_area
=
thickness
*
extTrackWidth
;
msg
.
Printf
(
wxT
(
"%g"
),
ext_area
/
(
scale
*
scale
)
);
m_ExtTrackAreaValue
->
SetValue
(
msg
);
wxString
strunit
=
m_TW_ExtTrackWidth_choiceUnit
->
GetUnitName
();
msg
=
strunit
+
wxT
(
" x "
)
+
strunit
;
m_ExtTrackAreaUnitLabel
->
SetLabel
(
msg
);
scale
=
m_TW_IntTrackWidth_choiceUnit
->
GetUnitScale
();
double
int_area
=
thickness
*
intTrackWidth
;
msg
.
Printf
(
wxT
(
"%g"
),
int_area
/
(
scale
*
scale
)
);
m_IntTrackAreaValue
->
SetValue
(
msg
);
strunit
=
m_TW_IntTrackWidth_choiceUnit
->
GetUnitName
();
msg
=
strunit
+
wxT
(
" x "
)
+
strunit
;
m_IntTrackAreaUnitLabel
->
SetLabel
(
msg
);
// Display resistance (assuming using copper ):
double
rho
=
1.72e-008
;
// In Ohms*meter
double
ext_res
=
rho
/
ext_area
*
track_len
;
msg
.
Printf
(
wxT
(
"%g"
),
ext_res
);
m_ExtTrackResistValue
->
SetValue
(
msg
);
double
int_res
=
rho
/
int_area
*
track_len
;
msg
.
Printf
(
wxT
(
"%g"
),
int_res
);
m_IntTrackResistValue
->
SetValue
(
msg
);
// Display drop voltage
double
ext_drop_volt
=
ext_res
*
current
;
msg
.
Printf
(
wxT
(
"%g"
),
ext_drop_volt
);
m_ExtTrackVDropValue
->
SetValue
(
msg
);
double
int_drop_volt
=
int_res
*
current
;
msg
.
Printf
(
wxT
(
"%g"
),
int_drop_volt
);
m_IntTrackVDropValue
->
SetValue
(
msg
);
// Display power loss
double
loss
=
ext_drop_volt
*
current
;
msg
.
Printf
(
wxT
(
"%g"
),
loss
);
m_ExtTrackLossValue
->
SetValue
(
msg
);
loss
=
int_drop_volt
*
current
;
msg
.
Printf
(
wxT
(
"%g"
),
loss
);
m_IntTrackLossValue
->
SetValue
(
msg
);
}
/* calculate track width for external or internal layers
*
* Imax = 0.048 * dT^0.44 * A^0.725 for external layer
* Imax = 0.024 * dT^0.44 * A^0.725 for internal layer
* with A = area = aThickness * trackWidth ( in mils )
* and dT = temperature rise in degree C
* Of course we want to know trackWidth
*/
double
PCB_CALCULATOR_FRAME
::
TWCalculate
(
double
aCurrent
,
double
aThickness
,
double
aDeltaT_C
,
bool
aUseInternalLayer
)
{
double
scale
=
0.048
;
// We are using normalize units (sizes in meters)
if
(
aUseInternalLayer
)
scale
*=
0.024
/
0.048
;
// aThickness is given in normalize units (in meters) and we need mil
aThickness
/=
UNIT_MIL
;
/* formula is Imax = scale * dT^0.44 * A^0.725
* or
* log(Imax) = log(scale) + 0.44*log(dT)
* +(0.725*(log(aThickness) + log(trackWidth))
* log(trackWidth) * 0.725 = ln(Imax) - ln(scale) - 0.44*log(dT) - 0.725*log(aThickness)
*/
double
dtmp
=
log
(
aCurrent
)
-
log
(
scale
)
-
0.44
*
log
(
aDeltaT_C
)
-
0.725
*
log
(
aThickness
);
dtmp
/=
0.725
;
double
trackWidth
=
exp
(
dtmp
);
trackWidth
*=
UNIT_MIL
;
// We are using normalize units (sizes in meters) and we have mil
return
trackWidth
;
// in meters
}
void
PCB_CALCULATOR_FRAME
::
TW_Init
()
{
int
tmp
;
wxString
msg
;
// Read parameters values:
m_Config
->
Read
(
KEYWORD_TW_EXTTRACK_WIDTH_UNIT
,
&
tmp
,
0
);
m_TW_ExtTrackWidth_choiceUnit
->
SetSelection
(
tmp
);
m_Config
->
Read
(
KEYWORD_TW_INTTRACK_WIDTH_UNIT
,
&
tmp
,
0
);
m_TW_IntTrackWidth_choiceUnit
->
SetSelection
(
tmp
);
m_Config
->
Read
(
KEYWORD_TW_TRACK_COPPER_THICKNESS_UNIT
,
&
tmp
,
0
);
m_TW_CuThickness_choiceUnit
->
SetSelection
(
tmp
);
m_Config
->
Read
(
KEYWORD_TW_TRACK_LEN_UNIT
,
&
tmp
,
0
);
m_TW_CuLength_choiceUnit
->
SetSelection
(
tmp
);
m_Config
->
Read
(
KEYWORD_TW_CURRENT
,
&
msg
,
wxT
(
"1.0"
)
);
m_TrackCurrentValue
->
SetValue
(
msg
);
m_Config
->
Read
(
KEYWORD_TW_DELTA_TC
,
&
msg
,
wxT
(
"10.0"
)
);
m_TrackDeltaTValue
->
SetValue
(
msg
);
m_Config
->
Read
(
KEYWORD_TW_TRACK_COPPER_THICKNESS
,
&
msg
,
wxT
(
"0.035"
)
);
m_TrackThicknessValue
->
SetValue
(
msg
);
m_Config
->
Read
(
KEYWORD_TW_TRACK_LEN
,
&
msg
,
wxT
(
"20"
)
);
m_TrackLengthValue
->
SetValue
(
msg
);
// Init formulas text
m_htmlWinFormulas
->
AppendToPage
(
_
(
"<br>The formulas (from IPC 2221) are:</br>"
)
);
m_htmlWinFormulas
->
AppendToPage
(
_
(
"<br>Internal traces : <b>I = 0.024 * dT^0.44 * A^0.725</b></br>"
)
);
m_htmlWinFormulas
->
AppendToPage
(
_
(
"<br>External traces: <b>I = 0.048 * dT^0.44 * A^0.725</b></br>"
)
);
m_htmlWinFormulas
->
AppendToPage
(
_
(
"<br>where:</br>"
)
);
m_htmlWinFormulas
->
AppendToPage
(
_
(
"<br><b>I</b> = maximum current in Amps</br>"
)
);
m_htmlWinFormulas
->
AppendToPage
(
_
(
"<br><b>dT</b> = temperature rise above ambient in C</br>"
)
);
m_htmlWinFormulas
->
AppendToPage
(
_
(
"<br><b>A</b> = cross-sectional area in mils</br>"
)
);
}
pcb_calculator/transline_ident.cpp
View file @
c4428ae5
...
...
@@ -250,9 +250,9 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum transline_type_id aType )
_
(
"MurC"
),
_
(
"Relative Permeability of Conductor"
),
1
,
false
)
);
AddPrm
(
new
TRANSLINE_PRM
(
PRM_TYPE_PHYS
,
PHYS_S_PRM
,
_
(
"a"
),
_
(
"Width of Waveguide"
),
10.0
,
true
)
);
AddPrm
(
new
TRANSLINE_PRM
(
PRM_TYPE_PHYS
,
PHYS_WIDTH_PRM
,
_
(
"a"
),
_
(
"Width of Waveguide"
),
10.0
,
true
)
);
AddPrm
(
new
TRANSLINE_PRM
(
PRM_TYPE_PHYS
,
PHYS_S_PRM
,
_
(
"b"
),
_
(
"Height of Waveguide"
),
5.0
,
true
)
);
AddPrm
(
new
TRANSLINE_PRM
(
PRM_TYPE_PHYS
,
PHYS_LEN_PRM
,
_
(
"L"
),
_
(
"Waveguide Length"
),
50.0
,
true
)
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment