When in doubt, Generate & look at the gerber files.
As BCB_Wiz noted: SMD pads should be only on one side of the PCB.
Normally this is done with solder paste, and the whole pcb is heated in an oven untill the solder melts.
For handsoldering I recommend:
1). Put a bit of flux on the big tab.
2). Place component on PCB.
3). Position carefully & solder the thin legs to keep the part from moving on the tab.
4). Put a bit of solder between the lip on the tab and your (80+Watt) soldering iron to make good contact.
5). Use an iron with a short thick blunt tip. There is a good reason (good) solering irons come
with interchangeble tips.
6). When the solder melts you will see it will wick under the TO263.
I have not looked up the spec’s of your MOSfets, but you might have a heating / cooling problem.
The tab is supposed to be soldered to the PCB for heat conduction into the PCB. Copper is a very good heat conductor. (Much better than Aluminimum)
The only copper the tab is soldered to, is under your connector, and that heat can not radiate away.
It is very common to make the copper under the TO263 a lot bigger to spread the heat. It is also common to put a bunch of via’s directly under the pad to conduct heat to the other side of the PCB, and have some wide copper there also.
Idea: For hand soldering you can make a via with a big diameter (5mm or so) directly under the tab. Then you can first fixate the TO263 with the legs, turn the PCB upside down, and solder the tab through the hole.
You have so many vias that the extra wire jumper does not seem usefull, but it does not hurt either.
Are the holes for those jumper wires big enough for thick wire? (Forget this, see below).
48 via’s for 6A seems plenty. The current handling of a via is however very dependent of the size of the via, and whether it is filled with solder.
But instead of relying on all those via’s and jumpers it is much better and easier to simply move the traces to the gates to the other side. Then you have a single continous slab of copper connecting all those pins together.
The gate traces are now also on the far south side of the PCB.
If you put them in the slot in the middle (Between the 12V plane and the GND plane) then both sides of the PCB can be a continous conduction for the 12V power.
Does it fit to put the 12V connector further south and put the arduino / uln2803 in the middle between the GND and 12V connector?
For production it is not recommended to put via’s on (small) pads. The main reason is that the (fixed amount of) solder paste will get sucked into the via and you may have not enough solder for a good connection.
For hand soldering, just apply more solder
The amount of via’s in the groundplane on the top of your PCB seems excessive.
Have you counted them?
This might incease the price of the PCB.
Also, a lot of these via’s are drilled through the copper in the area near the connector, and that is the area where you want as much copper as you can get.
If you remove all the 4x4 via blocks and halve the 4 rows of via’s on the north side of the PCB you still have plenty of via’s there.
You have the 12V (&GND) power supply in the middle of your PCB. This is very good. It spreads the current.
octave:1> 12^2/1000 = 0.14400 // Power dissipation in pullups = OK.
octave:2> 12/1000*8 = 0.096000 // ULN2803 can handle maximum of 500mA (memory) Seems OK.
octave:3> 12/1000 = 0.012000 // Drive current for single MOSfet.
12mA to drive a mosfet is … not so much. Every time a mosfet switches it goes through a period when there is both voltage over the MOSfet and current through it.
This is good enough if you do not switch the MOSfet’s often, but it is not good enough if you want to PWM the MOSfets.
For such applications there are special MOSfet drivers.
Take for example the HCPL3120. This is an optocoupler (not needed here) whith special outputs which can deliver 2A peak current to switch MOSfets (or IGBT’s) fast.
Datasheet: https://duckduckgo.com/html?q=HCPL3120
Price: https://octopart.com/search?q=HCPL3120&start=0&oq=HCPL3120
El Cheapo: https://www.aliexpress.com/wholesale?SearchText=HCPL3120
I see: “LED Strip Light Dimmer”. This implies PWM.
You should calculate / simulate / build a real circuit to make sure the power dissipation is acceptable at your PWM frequency under full load.
I see a: “V1.0” on your PCB. V 1.0 was with the TO220 packages.
I would call this version at least V1.1. This makes it easier if you want to make notes and or keep track of things that (do not) work well.
Personally I prefer using dates in ISO 8601 format https://en.wikipedia.org/wiki/ISO_8601 This automatically documents when you did what changes. It helps when you want to compare versions. I also use this date format for making backups. It makes file names sort in chronological order.
IMPORTANT:
Where does the arduino get it’s power from?
How is the GND of the arduino / ULN2803 connected to the GND for the MOSfets?
I do not know how you intend to control this light dimmer, probably from J1 or the 7 pin connector near the ULN2803. You either need to connect the GND’s together, or use optocouplers (or other galvanic separation)
I would probably put a voltage regulator on the board to make the 5V for the arduino locally.
I also always put some inductor / filter in power supplies for uC’s. They are to easily upset by noise spikes otherwise.
Put readable text on the silk screen for all connector pinouts.
It seems that you “forgot” your data connectors. So many details in a PCB…
What circuitry do you use to control this dimmer?
If you put a 5V regulator on this board, can you use it to supply 5V to the rest of the circuitry?
You have a high powered 12V power supply, and you need to connect it to the GND of your arduino somehow.
This introduces a risc of GND errors.
Lot’s of power supplies have an EARTH connection, sometimes connected to the GND of the output.
Your PC is / should also be earthed.
This introduces the risk of conducting the full current of your power supply (40A or so?) through the USB cable. It will melt and catch fire.
What kind of connectors are you using for the LED strips?
Are these fit for the current?
In the 3D printer world quite a lot of printers have caught fire and often it is because of low quality connectors for the heater bed (which takes to most current to drive).
You can use a power resistor or polyfuse to prevent this from happening.
But if you place this betweent he 12V GND and the arduino GND, then you will burn the outputs of your arduino if there is a voltage difference between these GND parts.
Maybe you should have started with posting a schematic here first instead of the PCB.
Another way is to intentionally use some thin traces as fuses.
For low voltages this is trivial to implement, for high voltage applications this is also used sometimes, but it can cause some extra damage if it is not implemented properly.
A very nice fault analysis of a PCB trace was done by MikesElectricStuff of such a trace which killed a Microwave because of a faulty light bulb: https://www.youtube.com/watch?v=Fmcg_cVO_1s
Have you thought about replacing the arduino board with a ATMEGA328 in DIP package, and put it directly on the PCB?
Personally I never liked the arduino boards much. Nice for experimenting on breadboards, but cumbersome for PCB’s. The widht of the arduino board makes it hard to use wide traces for your 12V power trace.
ATMEGA328 also needs only very simple support circuitry, especially if you use ISP programming, or you can use RxD / TxD with an off board CH340 for the arduino bootloader.
(Damn. again a much too long post. I got carried away in the last hour (or more?)).
Edit (again):
Your via’s in your previous design got partially “tented” (covered by solder mask). They will work ok, but if you do someting similar to J7 through J12 (with exposed pads) then you can fill the via’s yourself with solder and you will have vias capable of a buckload of current and will need very few of them.