From: "Saved by Internet Explorer 11" Subject: ANSI PCB Track Width Calculator Date: Fri, 29 May 2015 13:12:42 -0700 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01D09A11.25462560" X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7601.17609 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01D09A11.25462560 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.desmith.net/NMdS/Electronics/TraceWidth.html =EF=BB=BF =20 = ANSI=20 PCB Track Width Calculator=20 =20 =20 =20 =20 =20 =20 = =20 =20 =20 =20 =20 =09

ANSI IPC-2221A PCB Trace Width Calculator

 
3D""
Home=20
Electronics=20 index... =09
Guest book...
Contact=20 Nick

=20
=20 =09

Help us improve these pages - If you have any comments about = the=20 content here or would like to see improvements or a different = calculator=20 added, please use the guest = book.

This is the NEW version of my calculator. The original = version=20 is HERE= . =20

New features in this version include:

  • use of metric or imperial units for all major fields
  • the ability to change units for any applicable field on the = fly
  • minor enhancements to some of the calculations - IPC-2221(A) = changes=20 the curve fit
  • saving of all parameters in a cookie to keep your = preferences=20 between visits

This page calculates approximations to the ANSI / = IPC-2221/IPC-2221A=20 design standards for PCB trace width - this is the replacement = for=20 IPC-D-275.

The approximations and rationale are described in Temperature=20 Rise in PCB Traces, equations 13 & 15. by Douglas = Brooks,=20 UltraCAD Design, Inc. The original idea for this approach was = from=20 Brad Suppanz.

The figures returned by this calculator are to be taken as a = guide=20 only. I will not be held responsible for any mishap or loss, = either=20 direct or consequential, that may occur as a result of relying = on the=20 figures herein.

The trace width formulas are:

Internal traces : I =3D 0.024 x=20 dT0.44 x A0.725
External = traces: I=20 =3D 0.048 x dT0.44 x = A0.725

=20 where:

I =3D maximum current in Amps
dT = =3D=20 temperature rise above ambient in =C2=B0C
A =3D = cross-sectional area in=20 mils=C2=B2

Please note that IPC-2221(A) equations are subtly different = from=20 those in IPC-D-275 in that they are typically slightly more=20 conservative and are impicitly derated to compensate for = manufacturing=20 effects, i.e. they should be more reliable in = practice.

The values calculated here compare very closely with those = derived by=20 the UltraCAD PCBTEMP utility, and like the diagrams in the = standards=20 documents, are valid up to 35A for external traces and 17.5A = for=20 internal, 400mil widths and a maximum temperature rise of = 100=C2=B0C.

I've added a recommended track clearance value based on the UL=20 rule:

clearance in inches =3D 0.023" + = (0.0002" x=20 V)

The formulae as it stands is simplistic, but is reasonable for = V >=20 50. Note that there are many international standard for this = sort of=20 thing, e.g. EN60065:1994, which for European mains of 230V, = allows for=20 about 120mil for Class I (protected by earthing) and 240mil = for Class=20 II (double isolated). Note that if there is no conformal = coating and=20 the environment is dirty/humid/condensing then all bets are = off.=20 Please read the standards documents yourself.

= Ideally, keep=20 "hot" and "cold" areas of your board well apart.

Change a value in an input field, then press TAB to move to the = next=20 field. The results tables will be updated automatically.

ANSI PCB Trace Width=20 Calculator
Input Data Results Data
    Internal Traces External Traces
Field Value Units Trace Data Value Units Value Units
Current (max. 35A) Required Trace Width
Temperature Rise (max. 100=C2=B0C) Cross-section Area
Cu thickness = Resistance =CE=A9 Ohms =CE=A9 Ohms
Ambient Temperature Voltage Drop Volts Volts
Conductor Length Loss Watts Watts
Peak Voltage Volts Required Track Clearance
Back=20

3D""
=09

3D"Valid=20

=C2=A9 2004,2010 Nick de Smith = Webmaster
=20 Last edited: 13th July 2010, Site powered by = Notepad!=20
=20 =20 ------=_NextPart_000_0000_01D09A11.25462560 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.w3.org/Icons/valid-xhtml10 iVBORw0KGgoAAAANSUhEUgAAAFgAAAAfCAMAAABUFvrSAAADAFBMVEUBAAAIBgMMCQQLCwsSDgYX EgkaFQoUFBQcHBwlHQ4rIhEwJhM2KxU7Lxc9MBgjIyMoKCg0MzI7OztBNBpOPh5OSz9TQiFeSyVk UChqVCpuWCx1Rzl0XC5+ZDFOTk5ST0tWUk1VVVVcXFxqXUplZWVra2twcHB7e3sAWpwIX58JYJ8O Y6ERZaIVaKQaa6Yebaghb6klcqopdawxea82fbE4frI+grRFhrZMi7pVkb1alL9dlsBkm8NoncRt ocZ0pcl8qsyWBAOZAACcCASIIBmdNiegDge3PB6mPiqBZzODaDSKbjaOcTiUdjuXeDyaez26QiG/ TCaAeWihclPATifBUCjIXy/QbzfWej3Yfj+KgWWjgkGui0WxjUa0gVi3kkm6lEq+mEyjkmuzn2e7 pnLFnU7eikXOpFHRp1PVqlXarlfesVjjlUrmm03poFDtqVTitFrmuFzqu13ywWD7xWL+y2WDg4OX l5eYmJippZ61rZisrKy0tLS/v7+Crs6FsNCLtNKQt9SWu9aYvNebvtifwdqjw9uox92ryd6yzeG2 0OPCwsLMzMzU1NTA1ufG2ujN3+zT4+7d6fL/7Mbn5+fs7Ozl7vXp8fbu9Pj09PTy9/r1+Pv+/v7M zMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAADn4rtgAAAAnnRSTlP///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////AD6H4/gAAAABYktHRP+lB/LFAAAACXBIWXMAAABIAAAASABGyWs+AAADSUlEQVRI x+2WaU8TURSGzyCLQEUxiFYtCEo8Da3sYglQbDUaluISV6pYFdsyop1Or8ElSgg2RSjgArSZ63/1 3JkOXRBZgn7yTXpmyzwz857lFhb3XW9/CsEi317f2c71/OnZ/+C9gSdDKmNySI2GorQNxiaDpFA4 FgrS+WgoxFhwck/gMTjBwmCJ+WCYMQso5SBUoQCcZKwGgClg2QSOt7jp7pnWGQFJ2e0tpFYX5+k3 TUn+QTOsqAV/hRRmJngiYAVrYILAkipT+C34GzqJ+AW7BDiBhga4VgdwIFmdNMBKMcAQI3Ctz1cO CmPD4hEKVBX5TpdYfg/m7bhC0YHrFHvQtbY2h840fw9Hzh8tO7CaSZ6V3k2AdWXBNdaKosGtwG78 SLED4xSd+I1rbWK37ii5cO58pirCUglYBXhIjVlywWGQoluBl7CT83VE8nUZ28lu3ZUycUlLZ8CV UrgGnpgeR7JgZrUxHVzh9/tjAuzxbFRFM7nwGbGZ8wF083UHLlPqDuZWxSAZrBSXqmbyGBuBEQNM 0sFCUQJf8QiyAXbRp7uwA5fI7iXei9ifotzlgiMy3R+NqKpMRiv6gUwVzfTAlAiLyUJkxVWPUAYc R5fWfCGB7jV00GOciJ0an95T5133GDLAKXTMY1/K3j6HPeJ42YEJvrAX8M0M1+y8LvJhnnejURmc 92HvH2aFGtuWa4I/Ido1qgbElH48j235YNkiwbhxc6QKpJN56NiN18bOnQ2uCV5BvCRaEC8aqAS2 rBp76bSRPFutCT4No8chkMu95vG+ynIve3KHUAvO6i04w2d7dCu6Fwxy00LGCpsJrixlQbAVfL/3 5Qb3VN5068M1vQW/UrG5U3EHxrXGH4IrJTfAxluqUMWicCjLva/zvC8Mf72388fmfIeIS61UIU60 o2jFxbKGxsMwzQvfuKScyTREcxz2ZOV9XDCPtY/6ZoB+X/udzl6Rw2RDWfV7ngceonFxXIqMgj83 eXey3Fe7HfRh0bAlondZQJKgXM2rsrsmd2rXK4j6ZHx8PMAmhM/y2CO1oH7vmdx9X0wfZLj7v0q/ 8Orcv7D8T039s/8VH7bVu2c718NbJrhuBzq2leo3nTlTX62DfwGZkKiGotSUXQAAAABJRU5ErkJg gg== ------=_NextPart_000_0000_01D09A11.25462560 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Location: http://www.desmith.net/site.css body { background: white; font-family: arial, helvetica; } a { font-weight: bold; } a:link { text-decoration: none; } a:active { text-decoration: none; } a:visited { text-decoration: none; } a:hover { text-decoration: underline; } a.back { color: gray; font-size: small; font-style: italic; } td.menu { color: silver; font-weight: bold; } td.menu hr { width: 20%; text-align: left; color: rgb(102, 0, 0); } td.copyright { color: silver; font-size: small; } .sup { bottom: 0.5em; font-size: 0.8em; position: relative; } .indented { padding-right: 50pt; padding-left: 50pt; } ------=_NextPart_000_0000_01D09A11.25462560 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.desmith.net/scripts/cookielib.js /* DISCLAIMER: THESE JAVASCRIPT FUNCTIONS ARE SUPPLIED 'AS IS', WITH=20 NO WARRANTY EXPRESSED OR IMPLIED. YOU USE THEM AT YOUR OWN RISK.=20 PAUL STEPHENS DOES NOT ACCEPT ANY LIABILITY FOR=20 ANY LOSS OR DAMAGE RESULTING FROM THEIR USE, HOWEVER CAUSED.=20 Paul Stephens' cookie-handling object library Version 2.1 2.0 - Introduces field names 2.1 - Fixes bug where undefined embedded fields[] elements weren't = written to disk www.paulspages.co.uk=20 TO USE THIS LIBRARY, INSERT ITS CONTENTS IN THE SECTION=20 OF YOUR WEB PAGE SOURCE, BEFORE ANY OTHER JAVASCRIPT ROUTINES. (C) Paul Stephens, 2001-2003. Feel free to use this code, but please = leave this comment block in. This code must not be sold, either alone or = as part of an application, without the consent of the author. */ function cookieObject(name, expires, accessPath) { var i, j this.name =3D name this.fieldSeparator =3D "#" this.found =3D false this.expires =3D expires this.accessPath =3D accessPath this.rawValue =3D "" this.fields =3D new Array() this.fieldnames =3D new Array()=20 if (arguments.length > 3) { // field name(s) specified j =3D 0 for (i =3D 3; i < arguments.length; i++) { this.fieldnames[j] =3D arguments[i] =20 j++ } this.fields.length =3D this.fieldnames.length=20 } this.read =3D ucRead this.write =3D ucWrite this.remove =3D ucDelete this.get =3D ucFieldGet this.put =3D ucFieldPut this.namepos =3D ucNamePos this.read() } function ucFieldGet(fieldname) { var i =3D this.namepos(fieldname) if (i >=3D0) { return this.fields[i] } else { return "BadFieldName!" } } function ucFieldPut (fieldname, fieldval) { var i =3D this.namepos(fieldname) if (i >=3D0) { this.fields[i] =3D fieldval return true } else { return false } } function ucNamePos(fieldname) { var i=20 for (i =3D 0; i < this.fieldnames.length; i++) { if (fieldname =3D=3D this.fieldnames[i]) { return i } } return -1 } function ucWrite() { =20 var cookietext =3D this.name + "=3D"=20 // concatenate array elements into cookie string // Special case - single-field cookie, so write without # terminator if (this.fields.length =3D=3D 1) { cookietext +=3D escape(this.fields[0]) } else { // multi-field cookie for (i=3D 0; i < this.fields.length; i++) { cookietext +=3D escape(this.fields[i]) + this.fieldSeparator } } // Set expiry parameter, if specified if (this.expires !=3D null) { =20 if (typeof(this.expires) =3D=3D "number") { // Expiry period in = days specified =20 var today=3Dnew Date() =20 var expiredate =3D new Date() =20 expiredate.setTime(today.getTime() + 1000*60*60*24*this.expires) cookietext +=3D "; expires=3D" + expiredate.toGMTString() } else { // assume it's a date object cookietext +=3D "; expires=3D" + this.expires.toGMTString() } // end of typeof(this.expires) if } // end of this.expires !=3D null if=20 =20 // add path, if specified if (this.accessPath !=3D null) { cookietext +=3D "; PATH=3D"+this.accessPath } // write cookie // alert("writing "+cookietext) document.cookie =3D cookietext=20 return null =20 } function ucRead() { var search =3D this.name + "=3D" =20 var CookieString =3D document.cookie =20 this.rawValue =3D null this.found =3D false =20 if (CookieString.length > 0) { =20 offset =3D CookieString.indexOf(search) =20 if (offset !=3D -1) { =20 offset +=3D search.length =20 end =3D CookieString.indexOf(";", offset) =20 if (end =3D=3D -1) { // cookie is last item in the string, so no = terminator =20 end =3D CookieString.length } =20 this.rawValue =3D CookieString.substring(offset, end) = =20 this.found =3D true=20 }=20 } =20 if (this.rawValue !=3D null) { // unpack into fields var sl =3D this.rawValue.length var startidx =3D 0 var endidx =3D 0 var i =3D 0 // Special case - single-field cookies written by other functions, // so without a '#' terminator if (this.rawValue.substr(sl-1, 1) !=3D this.fieldSeparator) { this.fields[0] =3D unescape(this.rawValue) } else { // separate fields do =20 { endidx =3D this.rawValue.indexOf(this.fieldSeparator, startidx) if (endidx !=3D-1) { this.fields[i] =3D unescape(this.rawValue.substring(startidx, = endidx)) i++ startidx =3D endidx + 1} } while (endidx !=3D-1 & endidx !=3D (this.rawValue.length -1)); } } // end of unpack into fields if block return this.found } // end of function function ucDelete() { this.expires =3D -10 this.write() return this.read() } /* *********** IT'S OK TO REMOVE THE CODE BELOW HERE IF YOUR PAGE=20 DOESN'T USE cookieList() OBJECTS OR THE findCookieObject() FUNCTION. */ function findCookieObject(cName, cObjArray) { /*=20 This function finds a named cookie among the objects pointed to by a cookieList array (see below). Parameters are the cookie name to search for (a string), and an array = created with=20 the new cookieList() constructor (see below) NOTE - if you're only dealing with a specific, named cookie, then it's more efficient to ceate a single cookieObject directly with that name, and check its .found property to see if it already exists on this = client. This function is for when you've created an all-cookies array anyway, and now want to check whether a specific cookie is present. It returns a pointer to the cookieObject if found, or null if not found. */ var cpointer =3D null, i for (i in cObjArray) { if (cName =3D=3D cObjArray[i].name) { cpointer =3D cObjArray[i] } } return cpointer } function cookieList() { /*=20 This constructor function creates a cookieObject object (see below)=20 for each cookie in document.cookie, and returns an array of pointers to the objects. You can use it to load all the cookies available to a page, then walk = through them. Example usage: cookList =3D new cookieList() for (i in cookList) { document.write(cookList[i].name + " " + cookList[i].fields[0] + " ") } */ var i =3D 0, rawstring, offset =3D 0, start, newname cpointers =3D new Array() rawstring =3D document.cookie if (rawstring.length > 0) { do { start =3D rawstring.indexOf("=3D", offset) if (start !=3D -1) { // another cookie found in string // get cookie string up to end of current cookie name newname =3D rawstring.substring(0, start)=20 if (offset > 0) {=20 // if not first cookie in string, remove previous cookie data = from substring // subsequent cookie names have a space before them (just a = little browser foible!) newname =3D newname.substring(newname.lastIndexOf(";")+2, start) } =20 cpointers[i] =3D new cookieObject(newname) offset =3D start + 1 i++ } } while (start !=3D -1) } // end rawstring.length > 0 return cpointers } //end function ------=_NextPart_000_0000_01D09A11.25462560 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://jb.revolvermaps.com/t.js function rmt_ki101(m,s,i,c){var x=3Dnew = Image();x.src=3D"http://ja.revolvermaps.com/c.php?i=3D"+i;x.onload=3Dfunc= tion(){this.width=3D1;};var y=3Dnew = Image();y.src=3D"http://ja.revolvermaps.com/r.php?i=3D"+i+"&l=3D"+encodeU= RIComponent(document.URL)+"&r=3D"+new = Date().getTime();y.onload=3Dfunction(){this.width=3D1;};var = f=3D'width=3D"'+s+'"height=3D"'+s+'"><\/ob= ject>';if(navigator.plugins&&navigator.plugins['Shockwave = Flash']&&parseInt(navigator.plugins['Shockwave = Flash'].description.replace(/\D+/,''))>8)document.write('99?'