PCB calculator: add galvanic corrosion chart
This commit is contained in:
parent
528fe4d371
commit
c6090a44d6
|
@ -22,6 +22,8 @@ set( PCB_CALCULATOR_SRCS
|
|||
calculator_panels/panel_cable_size_base.cpp
|
||||
calculator_panels/panel_color_code.cpp
|
||||
calculator_panels/panel_color_code_base.cpp
|
||||
calculator_panels/panel_corrosion.cpp
|
||||
calculator_panels/panel_corrosion_base.cpp
|
||||
calculator_panels/panel_electrical_spacing.cpp
|
||||
calculator_panels/panel_electrical_spacing_base.cpp
|
||||
calculator_panels/panel_eserie.cpp
|
||||
|
|
|
@ -0,0 +1,153 @@
|
|||
/*
|
||||
* This program source code file is part of KICAD, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 1992-2022 Kicad Developers, see AUTHORS.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 3
|
||||
* 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <calculator_panels/panel_corrosion.h>
|
||||
#include <pcb_calculator_settings.h>
|
||||
|
||||
#define CORROSION_VOLTAGE_1 0.3
|
||||
#define CORROSION_VOLTAGE_2 0.5
|
||||
#define CORROSION_VOLTAGE_3 0.8
|
||||
|
||||
|
||||
CORROSION_TABLE_ENTRY::CORROSION_TABLE_ENTRY( wxString aName, wxString aSymbol, double aPot )
|
||||
{
|
||||
m_potential = aPot;
|
||||
m_name = aName;
|
||||
m_symbol = aSymbol;
|
||||
}
|
||||
|
||||
PANEL_CORROSION::PANEL_CORROSION( wxWindow* parent, wxWindowID id, const wxPoint& pos,
|
||||
const wxSize& size, long style, const wxString& name ) :
|
||||
PANEL_CORROSION_BASE( parent, id, pos, size, style, name )
|
||||
{
|
||||
m_entries.clear();
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Platinum" ), "Pt", -0.57 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Gold" ), "Au", -0.44 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Titanium" ), "Ti", -0.32 ) );
|
||||
m_entries.push_back(
|
||||
CORROSION_TABLE_ENTRY( wxT( "Stainless steel 18-9" ), "X8CrNiS18-9", -0.32 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Silver" ), "Ag", -0.22 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Mercury" ), "Hg", -0.22 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Nickel" ), "Ni", -0.14 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Copper" ), "Cu", 0.0 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Copper-Aluminium" ), "CuAl10", 0.03 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Brass" ), "CuZn39Pb", 0.08 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Bronze" ), "CuSn12", 0.2 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Tin" ), "CuSn12", 0.23 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Lead" ), "Pb", 0.27 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Aluminium-Copper" ), "AlCu4Mg", 0.37 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Cast iron" ), "", 0.38 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Carbon steel" ), "", 0.43 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Aluminium" ), "Al", 0.52 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Cadmium" ), "Al", 0.53 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Iron" ), "Fe", 0.535 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Chrome" ), "Fe", 0.63 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Zinc" ), "Zn", 0.83 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Manganese" ), "Mn", 0.9 ) );
|
||||
m_entries.push_back( CORROSION_TABLE_ENTRY( wxT( "Magnesium" ), "Mg", 1.38 ) );
|
||||
|
||||
// Resize the table
|
||||
|
||||
m_table->DeleteCols( 0, m_table->GetNumberCols() );
|
||||
m_table->DeleteRows( 0, m_table->GetNumberRows() );
|
||||
m_table->AppendCols( m_entries.size() );
|
||||
m_table->AppendRows( m_entries.size() );
|
||||
|
||||
// Fill the table with data
|
||||
int i = 0;
|
||||
|
||||
wxColour color_ok( 189, 255, 189 );
|
||||
wxColour color_w1( 255, 255, 157 );
|
||||
wxColour color_w2( 250, 191, 9 );
|
||||
wxColour color_w3( 255, 83, 83 );
|
||||
|
||||
wxColour color_text( 0, 0, 0 );
|
||||
wxString value;
|
||||
|
||||
|
||||
for( CORROSION_TABLE_ENTRY entryA : m_entries )
|
||||
{
|
||||
int j = 0;
|
||||
|
||||
wxString label = entryA.m_name;
|
||||
|
||||
if( entryA.m_symbol.size() > 0 )
|
||||
{
|
||||
label += " (" + entryA.m_symbol + ")";
|
||||
}
|
||||
m_table->SetRowLabelValue( i, label );
|
||||
m_table->SetColLabelValue( i, label );
|
||||
|
||||
for( CORROSION_TABLE_ENTRY entryB : m_entries )
|
||||
{
|
||||
double diff = entryA.m_potential - entryB.m_potential;
|
||||
value = "";
|
||||
value << diff * 1000; // Let's display it in mV instead of V.
|
||||
m_table->SetCellValue( i, j, value );
|
||||
|
||||
// Overide anything that could come from a dark them
|
||||
m_table->SetCellTextColour( i, j, color_text );
|
||||
|
||||
if( abs( diff ) > CORROSION_VOLTAGE_3 )
|
||||
{
|
||||
m_table->SetCellBackgroundColour( i, j, color_w3 );
|
||||
}
|
||||
else if( abs( diff ) > CORROSION_VOLTAGE_2 )
|
||||
{
|
||||
m_table->SetCellBackgroundColour( i, j, color_w2 );
|
||||
}
|
||||
else if( abs( diff ) > CORROSION_VOLTAGE_1 )
|
||||
{
|
||||
m_table->SetCellBackgroundColour( i, j, color_w1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_table->SetCellBackgroundColour( i, j, color_ok );
|
||||
}
|
||||
j++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
m_table->SetColLabelTextOrientation( wxVERTICAL );
|
||||
|
||||
m_table->SetColLabelSize( wxGRID_AUTOSIZE );
|
||||
m_table->SetRowLabelSize( wxGRID_AUTOSIZE );
|
||||
m_table->AutoSizeColumns();
|
||||
m_table->AutoSizeRows();
|
||||
}
|
||||
|
||||
|
||||
PANEL_CORROSION::~PANEL_CORROSION()
|
||||
{
|
||||
}
|
||||
|
||||
void PANEL_CORROSION::ThemeChanged()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void PANEL_CORROSION::LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void PANEL_CORROSION::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg )
|
||||
{
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* This program source code file is part of KICAD, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 1992-2022 Kicad Developers, see AUTHORS.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 3
|
||||
* 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PANEL_CORROSION_H
|
||||
#define PANEL_CORROSION_H
|
||||
|
||||
#include "panel_corrosion_base.h"
|
||||
#include <vector>
|
||||
|
||||
class PCB_CALCULATOR_SETTINGS;
|
||||
|
||||
class CORROSION_TABLE_ENTRY
|
||||
{
|
||||
public:
|
||||
CORROSION_TABLE_ENTRY( wxString aName, wxString aSymbol, double aPot );
|
||||
/** @brief Translatable name ( Copper ) */
|
||||
wxString m_name;
|
||||
/** @brief Chemical symbol (Cu), not translatable */
|
||||
wxString m_symbol;
|
||||
/** @brief potential in volts, relative to copper */
|
||||
double m_potential;
|
||||
};
|
||||
|
||||
class PANEL_CORROSION : public PANEL_CORROSION_BASE
|
||||
{
|
||||
public:
|
||||
PANEL_CORROSION( wxWindow* parent, wxWindowID id = wxID_ANY,
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
|
||||
~PANEL_CORROSION();
|
||||
|
||||
std::vector<CORROSION_TABLE_ENTRY> m_entries;
|
||||
// Methods from CALCULATOR_PANEL that must be overriden
|
||||
void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override;
|
||||
void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override;
|
||||
void ThemeChanged() override;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,65 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "panel_corrosion_base.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
PANEL_CORROSION_BASE::PANEL_CORROSION_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name )
|
||||
{
|
||||
wxBoxSizer* bSizer6;
|
||||
bSizer6 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_scrolledWindow1 = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
|
||||
m_scrolledWindow1->SetScrollRate( 5, 5 );
|
||||
wxBoxSizer* bSizer7;
|
||||
bSizer7 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_table = new wxGrid( m_scrolledWindow1, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
// Grid
|
||||
m_table->CreateGrid( 1, 1 );
|
||||
m_table->EnableEditing( true );
|
||||
m_table->EnableGridLines( true );
|
||||
m_table->EnableDragGridSize( false );
|
||||
m_table->SetMargins( 0, 0 );
|
||||
|
||||
// Columns
|
||||
m_table->EnableDragColMove( false );
|
||||
m_table->EnableDragColSize( true );
|
||||
m_table->SetColLabelValue( 0, _("Copper (Cu)") );
|
||||
m_table->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
|
||||
|
||||
// Rows
|
||||
m_table->EnableDragRowSize( true );
|
||||
m_table->SetRowLabelValue( 0, _("Copper (Cu)") );
|
||||
m_table->SetRowLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
|
||||
|
||||
// Label Appearance
|
||||
|
||||
// Cell Defaults
|
||||
m_table->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
|
||||
bSizer7->Add( m_table, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_scrolledWindow1->SetSizer( bSizer7 );
|
||||
m_scrolledWindow1->Layout();
|
||||
bSizer7->Fit( m_scrolledWindow1 );
|
||||
bSizer6->Add( m_scrolledWindow1, 1, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_staticText16 = new wxStaticText( this, wxID_ANY, _("When two metals are in contact, there will be a potential difference between them that will lead to corrosion.\nIn order to avoid corrosion, it is good practice to keep the difference below 300mV.\n\nOne of the metal will be anodic (+) and will be attacked. The other one will be cathodic and will be protected.\nIn the table below, if the number is positive then the row is anodic and the column is cathodic. \n\nYou can use an interface metal, just like with the ENIG surface finish that uses nickel as an interface between gold and copper to prevent corrosion."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText16->Wrap( -1 );
|
||||
bSizer6->Add( m_staticText16, 0, wxALL, 5 );
|
||||
|
||||
|
||||
this->SetSizer( bSizer6 );
|
||||
this->Layout();
|
||||
}
|
||||
|
||||
PANEL_CORROSION_BASE::~PANEL_CORROSION_BASE()
|
||||
{
|
||||
}
|
|
@ -0,0 +1,277 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<wxFormBuilder_Project>
|
||||
<FileVersion major="1" minor="16" />
|
||||
<object class="Project" expanded="1">
|
||||
<property name="class_decoration"></property>
|
||||
<property name="code_generation">C++</property>
|
||||
<property name="disconnect_events">1</property>
|
||||
<property name="disconnect_mode">source_name</property>
|
||||
<property name="disconnect_php_events">0</property>
|
||||
<property name="disconnect_python_events">0</property>
|
||||
<property name="embedded_files_path">res</property>
|
||||
<property name="encoding">UTF-8</property>
|
||||
<property name="event_generation">connect</property>
|
||||
<property name="file">panel_corrosion_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="help_provider">none</property>
|
||||
<property name="image_path_wrapper_function_name"></property>
|
||||
<property name="indent_with_spaces"></property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="name">panel_corrosion_base</property>
|
||||
<property name="namespace"></property>
|
||||
<property name="path">.</property>
|
||||
<property name="precompiled_header"></property>
|
||||
<property name="relative_path">1</property>
|
||||
<property name="skip_lua_events">1</property>
|
||||
<property name="skip_php_events">1</property>
|
||||
<property name="skip_python_events">1</property>
|
||||
<property name="ui_table">UI</property>
|
||||
<property name="use_array_enum">0</property>
|
||||
<property name="use_enum">0</property>
|
||||
<property name="use_microsoft_bom">0</property>
|
||||
<object class="Panel" expanded="1">
|
||||
<property name="aui_managed">0</property>
|
||||
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||
<property name="bg"></property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="event_handler">impl_virtual</property>
|
||||
<property name="fg"></property>
|
||||
<property name="font"></property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">PANEL_CORROSION_BASE</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">677,453</property>
|
||||
<property name="subclass">CALCULATOR_PANEL; calculator_panels/calculator_panel.h; </property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="two_step_creation">0</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style">wxTAB_TRAVERSAL</property>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bSizer6</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND | wxALL</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxScrolledWindow" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_scrolledWindow1</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="scroll_rate_x">5</property>
|
||||
<property name="scroll_rate_y">5</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style">wxHSCROLL|wxVSCROLL</property>
|
||||
<object class="wxBoxSizer" expanded="1">
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">bSizer7</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL|wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxGrid" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="autosize_cols">0</property>
|
||||
<property name="autosize_rows">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="cell_bg"></property>
|
||||
<property name="cell_font"></property>
|
||||
<property name="cell_horiz_alignment">wxALIGN_LEFT</property>
|
||||
<property name="cell_text"></property>
|
||||
<property name="cell_vert_alignment">wxALIGN_TOP</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="col_label_horiz_alignment">wxALIGN_CENTER</property>
|
||||
<property name="col_label_size"></property>
|
||||
<property name="col_label_values">"Copper (Cu)"</property>
|
||||
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
|
||||
<property name="cols">1</property>
|
||||
<property name="column_sizes"></property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="drag_col_move">0</property>
|
||||
<property name="drag_col_size">1</property>
|
||||
<property name="drag_grid_size">0</property>
|
||||
<property name="drag_row_size">1</property>
|
||||
<property name="editing">1</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="grid_line_color"></property>
|
||||
<property name="grid_lines">1</property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label_bg"></property>
|
||||
<property name="label_font"></property>
|
||||
<property name="label_text"></property>
|
||||
<property name="margin_height">0</property>
|
||||
<property name="margin_width">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_table</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="row_label_horiz_alignment">wxALIGN_CENTER</property>
|
||||
<property name="row_label_size"></property>
|
||||
<property name="row_label_values">"Copper (Cu)"</property>
|
||||
<property name="row_label_vert_alignment">wxALIGN_CENTER</property>
|
||||
<property name="row_sizes"></property>
|
||||
<property name="rows">1</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">When two metals are in contact, there will be a potential difference between them that will lead to corrosion.
In order to avoid corrosion, it is good practice to keep the difference below 300mV.

One of the metal will be anodic (+) and will be attacked. The other one will be cathodic and will be protected.
In the table below, if the number is positive then the row is anodic and the column is cathodic. 

You can use an interface metal, just like with the ENIG surface finish that uses nickel as an interface between gold and copper to prevent corrosion.</property>
|
||||
<property name="markup">0</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_staticText16</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</wxFormBuilder_Project>
|
|
@ -0,0 +1,47 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
#include "calculator_panels/calculator_panel.h"
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/string.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/grid.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/scrolwin.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/panel.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class PANEL_CORROSION_BASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class PANEL_CORROSION_BASE : public CALCULATOR_PANEL
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxScrolledWindow* m_scrolledWindow1;
|
||||
wxGrid* m_table;
|
||||
wxStaticText* m_staticText16;
|
||||
|
||||
public:
|
||||
|
||||
PANEL_CORROSION_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 677,453 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
|
||||
|
||||
~PANEL_CORROSION_BASE();
|
||||
|
||||
};
|
||||
|
|
@ -36,6 +36,7 @@
|
|||
#include <calculator_panels/panel_attenuators.h>
|
||||
#include <calculator_panels/panel_board_class.h>
|
||||
#include <calculator_panels/panel_cable_size.h>
|
||||
#include <calculator_panels/panel_corrosion.h>
|
||||
#include <calculator_panels/panel_color_code.h>
|
||||
#include <calculator_panels/panel_electrical_spacing.h>
|
||||
#include <calculator_panels/panel_eserie.h>
|
||||
|
@ -114,6 +115,8 @@ PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
|
|||
_( "Color Code" ) );
|
||||
AddCalculator( new PANEL_BOARD_CLASS( m_treebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ),
|
||||
_("Board Classes") );
|
||||
AddCalculator( new PANEL_CORROSION( m_treebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ),
|
||||
_( "Galvanic corrosion" ) );
|
||||
|
||||
LoadSettings( config() );
|
||||
|
||||
|
|
Loading…
Reference in New Issue