How does one create a thermally relieved connection to a plane?
Another item for the TO-Do list I guess.
Yes, this is definitely on the TODO list!
See this issue for more details:
To quote @ubruhin:
Yes, this definitively needs to be added. Unfortunately itās not trivial to calculate the spokes, there are multiple possible solutions with different advantages/disadvantages and Iām not sure which one is the best. Would be nice if someone could dive into this to find the best option
When laying out my board I did give the problem some thought. Unfortunatlly I dont considermy self a programmer but I have had some experience during my carear. I am happy to discuss and test Idears and leave it to the experts.
ubruhin,
do you have a copy of the IPC standards relating to thermally re-leaved pad design. Or perhaps can point my request to some one who has. I ask because I am looking at what might be needed to implement a solution. I have found some information via the web but not specifically from standards.
I think I may have a possible design solution but I could really do with some definitive detail. I donāt think I have the skills to implement but my proposal may provide a useful starting point.
Hm, I donāt know if there is even some kind of standards regarding thermal spokes
The more I look into this the more I am thinking any standard doesnāt actually specify a calculation for the clearance and spokes. I have seen IPC2222 mentioned but have not been able to read a copy to understand what it actually states. What my research as determined to date is:
- There are situations involving high currents, high frequencies and rapid transients where thermal relief may not appropriate.
- The clearance required depends upon how easily the pad can be soldered, i.e. the process as well as the layer stack, are inner planes or heavy traces also attached to the pad.
- The trace thickness (i.e the number of spokes and their thickness) is a trade off between electrical/circuit needs and thermal isolation needs.
So and unless any standards detail emerges any solution is likely to involve:
- The ability to switch individual pads between thermal relief and no relief.
- Any pad can be connected to a plane so item 1. applies to ALL pads of a device.
- Both through hole and smt require thermally relieved pads.
- It must be possible to adjust the thermal clearance, the number of spokes and the spoke thickness on a pad by pad basis.
- It must be possible to manually move the spoke traces to optimal positions.
- The thermal edits are saved unless the device is deleted or replaced.
I can see the functionality, from a users perspective, operating as follows:
- No change to library creation operation. Transparent to the user; four new pad parameters are added for: clearance, spoke number, spoke thickness and thermal-pad(boolean).
- When creating a new project the user is given the opportunity to set the defaults for thermal pad generation the: clearance, number of spokes, spoke thickness and weather or not thermally relieved pads are the default. These settings only apply the project defaults and can be changed on a pad by pad basis later.
- No change to schematic entry.
- Board layout, placement and routing is unchanged. Thermally relieved pads only come in to play when a pad is connected to a plane and not a trace. When a device is placed the project settings for thermal pad parameters is applied to each device pad.
- The operation of creating a plane is unchanged as is the re-build process. (Its not a requirement to re-build a plane but it does highlight the plane and those pads connected it. It then also shows the current thermally relieved state of the pads connected to the plane.)
- The user can edit any pads thermal relief parameters by either a double click or select then right click to select pad parameters.
- Pressing the Apply button updates of the state of the edited pad properties and triggers a plane rebuild
- If thermal relief on a pad has just been enabled, the user is able rotate the spokes to the required position.
- If further edits of the thermal relief parameters are required the user can repeat step 6. But the rotation position of the spokes remains unchanged.
I think this whole thing might be a bit too complicated, at least for now. In Eagle, I donāt remember ever seeing any advanced controls for thermals.
For reference, I still think the algorithm I proposed on GitHub would cover almost all use cases, and the rest are so rare they could be handled manually:
-
Take the base copper plane after computing the keepaways, and subtract it from a solid rectangle. This will give you a map of all space in between pads and copper.
-
From each pin, project four lines outward in the 4 directions, at some globally configurable width.
-
Take the set union/AND operation of the plane with all those lines, with the map we got from step 1.
-
The result of that union will be your thermals, add it back to the original copper plane, and youāre done.
Since this algorithms does everything strongly on a per-pin basis, more configurability via pin attributes can be added later, just project some other geometry rather than those four lines.
Thanks EternityForest for your comments. Iāll take a look and and attempt to comprehend your proposal. My back ground is in RF, manufacturing and not software. Although I have done a few professional projects over the years for design verification and manufacturing test for electronic products.
Re your point:
I would say the lines, spokes, should be editable, movable, deletable. If not, there is a possibility of overlapping spokes and traces resulting in unwanted short circuits. I guess this could be avoided if grater smarts is included in the algorithms.
I have been playing with the approach I outlined and I think I see a major difficulty.
It appears the consequences of changing, say pin 8 on an IC, will result in pin 8 on all other ICās on the board having thermal relief enabled and that may not be appropriate. This is because the board file does not hold a copy of the library part for each part placed but references the library it via the part uuid. I think I have explained that clearly.
So the outcome appears to be thermal relief may have to be a plane related thing. Therefore EternityForestās approach, or a variation of it, could currently be the best way forward. Unless device are placed in the board file which will have major implications for the overall design of LibrePCB
FYI, pull request for this feature is created