Adding a solder paste extruder. One remaining challange. (i hope)

107 views
Skip to first unread message

Robert Bullock

unread,
Mar 25, 2023, 8:08:17 PM3/25/23
to OpenPnP
I have added a solder paste extruder to my PNP.
The design is quite common, pushing a plunger into a syringe filled with solder paste.
With reasonably low viscosity paste, I can get it to extrude through a fairly small diameter tip.
Just one remaining challenge. Making it apply the paste on the pads.

I was suprised how long it took to come up with the really obvious idea of using one of the 3D printing slicer programs to generate the gcode to extrude the paste to the PCB.
I was half way through writing a program to print dots on the pads, figuring out how to get it to print more dots, or bigger dots, for larger pads when I started to think about maybe I should just run a bead concentrically around the pad. Somewhere along the line I realized I already had a program installed on my PC to do just that.
Not only that, but the controller I am using was designed to do just that. (Duet3D 3)

GENERATING THE GCODE FILE
I imported the solder paste gerber from Altium into Solidworks and created a Solidworks part of all the solder pads. I then added the Z height of the thickness of solder paste I want on the board. I started with 0.4mm, this is not as important for the actual paste deposited, but more for the slicer to generate a tool path that is similar to what will be extruded and is one layer thick. I then exported a .stl file that is what the slicer programs use.

I created a custom 3D printer configuration for this. 3D printers use the standard G1 command to extrude while moving in X/Y. For example:

G1 X5.03 Y5.174 E1.08258

This says do a coordinated move from the current location on the X,Y,E axis to the new position specified on the X,Y,E axis so that all three axis arrive at their new positions at the same moment.
There is a parameter that you have to enter for the 3D Printer configuration that specifies how many steps of the stepper motor are required to move the filament 1mm. I calculated this number based on the number of steps to move the plunger to extrude the equivelent volume of 1mm of 1.75mm filament.

SO NOW I HAVE A GCODE FILE
The slicer program has two choices for where it will place the origin (0,0) when it generates the program. It will place the origin at the front left corner of the defined print bed, and generate the gcode to print the part at the locate where the object to be printed has been placed graphically on the image of the print bed.
The second option is to place the origin at the center of the print bed.
Typically, you do not really care what the actual coordinates are when 3D printing just as long as it is all on your print bed.

THE LAST REMAINING CHALLANGE
I have a PCB affixed to the bed of my PNP, I know exactly where it is after I locate it in openpnp using the fiducials. I have a gcode file that will apply solder paste to the pads of the PCB, if the PCB is where it assumed it was when it generated the gcode.

My assumption is that I will use a work piece offset command, like G55, to move the gcode coordinates to coinside with the actual PCB coordinates.
Can anyone think of any clever way to do this other than trial and error.
I placed the PCB as close to the lower left origin in the slicer as possible.
At the moment I do not have any reference to the edges of the PCB but I might be able to add this  by including the PCB outline in Solidworks, the slicer should ignore this as it would be to thin to print.
Not sure if that would help.


Here is the start of the generated gcode if anyone is interested in this:

;FLAVOR:Marlin
;TIME:164
;Filament used: 0.0352113m
;Layer height: 0.4
;MINX:1.058
;MINY:1.261
;MINZ:0.4
;MAXX:40.503
;MAXY:69.246
;MAXZ:2.4
;Generated with Cura_SteamEngine 5.2.1
M104 S200
M105
M109 S200
M82 ;absolute extrusion mode
G28 ;Home
G1 Z15.0 F6000 ;Move the platform down 15mm
;Prime the extruder
G92 E0
G1 F200 E3
G92 E0
G92 E0
G92 E0
G1 F1500 E-6.5
;LAYER_COUNT:1
;LAYER:0
M107
G1 F600 Z2.4
;MESH:Quad Feeder Paste Mask mm.STL
G0 F1800 X5.03 Y5.174 Z2.4
;TYPE:WALL-OUTER
G1 F600 Z0.4
G1 F1500 E0.00416 ;I BELIEVE THIS IS THE START OF EXTRUDING
G1 F300 X5.03 Y5.174
G1 X5.03 Y4.458 E0.0756
G1 X1.058 Y4.458 E0.47193
G1 X1.058 Y5.89 E0.61481
G1 X5.03 Y5.89 E1.01114
G1 X5.03 Y5.174 E1.08258
...

Michael Anton

unread,
Mar 26, 2023, 2:42:37 AM3/26/23
to OpenPnP
The other issue you are likely to face, is what happens when the PCB is not perfectly flat.  This causes a fairly major problem for dispensing systems, so make sure you implement something to keep the board flat.
Reply all
Reply to author
Forward
0 new messages