SMD PCB manufacturing involves the following steps in order to produce a working electronic circuit:
- Design of circuit using an EDA software
- Form traces on the PCB either by milling or by UV exposure
- Drill holes on vias (for double sided PCBs)
- Solder paste dispensing on the pads
- Pick and place components (IC, resistors, etc)
- Reflow solder paste in an oven
In this instructable a solution is presented for step No3, by manufacturing a custom solder paste dispensing head that can be added on an existing CNC machine. The CNC machine, for which the dispensing head is currently developed, is a FABtotum multipurpose device (https://opentotum.github.io/fabtotum.com-backup/).
Ideas, which inspired us, come from the following projects:
- CAD files for dispensing head come from a remix of TwinTeeth's dispensing head (http://www.diyouware.com/node/174), adapted onFABtotum carriage.
- A remix of CAM software rpt2pnp (https://github.com/hzeller/rpt2pnp) was adapted to fit the needs of FABtotum supported gcode commands.
- The PCB on which tests were made is an FTDI circuit (http://archive.fabacademy.org/2016/fablabsingapore/students/98/exercise06.html) designed with KiCAD (1206 Imperial).
- Connection of controller with step motor got from this page
Step 1: Materials
- 1 x Arduino Nano v3
- 1 x 28BYJ-48-5V step motor
- 1 x ULN2003 step motor driver
- Lead free solder paste
- Isopropyl alcohol (IPA): Dilute lead free solder paste (keep safety measures) with IPA.
- 2 x M5 lead screw - 200mm length (pitch 0.8 mm)
- 2 x 3mm shaft - 200m length
- 1 x Aluminum coupler 5mm-5mm
- 3mm screws and nuts
- 1 x 10cc syringe
- 1 x 20G 0.6mm ID 1.5'' luer lock dispensing needle
Step 2: 3D Printing Parts
Download and 3d print the parts needed to assemble the dispensing head. A modification of CAD file 3_PlateToConnectToFABtotum.stl may be needed in order to fit the dispensing head to a different CNC machine.
Step 3: Head Communication/Firmware
In case your head communicates with CNC through UART interface you have to download and upload the following ino file to Arduino Nano v3 that will be attached to the dispensing head. Modifications may be needed in order to accept gcode commands of another CNC machine. Commands supported currently in FABtotum are M790 P4 "xxx?___" (see step 4). The part between quotes is sent through UART, where:
- xxx is the command
- ? is its parameter, and
- ___ are the terminating characters of each command
Step 4: Integration
- Connect all 3D printed parts with screws, couplers, etc (more information in TwinTeeth).
- Connect the dispenser to the carriage of your CNC machine (in the case of FABtotum, with HDB support, the aluminium plate and the PCB of HDB kit with supplied screws).
- Add the electronics on the printed base and connect them with cables (more information in HDB of FABtotum), as shown in this page. Basic idea is to connect arduino pins 2,3,4,5 with IN1, IN2, IN3, IN4 of ULN2003 board. Power supply needed for all electronics is 5V.
- Go to jog and send the following commands, as shown in the above video. Available commands are the following:
- Set rotation speed of the dispensing motor (e.g. 16 RPM): M790 P4 "SPE16___"
- Define mode (retraction for DOW0 and dispensing for DOW1): M790 P4 "DOW0___"
- Perform revolutions of the step motor (e.g. 12 revolutions): M790 P4 "REV12___"
- Perform steps of the step motor (e.g. 512 steps): M790 P4 "STE512___". One revolution for the current step motor is performed with 2048 steps
Step 5: Milling PCB Traces
Mill your PCB, using gerber files extracted from KiCAD and import them on FlatCAM. Place it on the CNC bed with double sided tape.
- step down: 0.05 mm
- tool diameter (V-Curve): 0.1 mm
- feedrate 80 mm min
Step 6: CAM Software
rpt2pnp is remixed in order to comply with FABtotum commands. Download the zip file and execute make file with mingw in order to build the code: a rpt2pnp.exe file will be generated. Place your rpt file (report file extracted from a pcb designed in KiCAD) on the same path with exe file and generate gcode (instructions found in README.md).
Step 7: Dispensing
- Execute the gcode extracted from remixed rpt2pnp software: it extracts the gcode and a postscript file in order to view the simulated movements of the head syringe tip.
- In the current case (FABtotum): navigate in Jog page of FABtotum's fabui-colibri OS the needle right above the first pad of your PCB (see .ps file), then paste the gcode in the Jog page and execute it.
Step 8: Results and Next Steps
The most tricky part of this project is the solder paste: most particularly its viscosity is high and varies during the process, causing volume inconsistency of the dispensed solder paste drops.
Solder paste viscosity changes a) depending on the purchased model and b) during friction inside the syringe. For the purchased solder paste a dilution of ~ 10 ml of solder paste with 3 ml of IPA is made. But that will depend on the solder paste you will purchase, and the dilution with IPA must be tested.
Additionally, there is a high pressure drop inside the dispensing needle: 1.5'' length of dispensing needle is chosen, which produces high pressure drop. Instead, a shorter syringe tip (e.g. 0.5'') should be used, but there were some problems because a shorter syringe tip would not reach the CNC bed due to the thickness of the CNC carriage. Another approach would be to use a conical syringe tip, which reduces dramatically pressure drop, and is about 1'' long.
An improvement in this project would be a thicker placeholder for Arduino Nano: it is thin and may break during its usage.
Modifications of the CAM software would be a) to support some dummy dispenses automatically, before starting dispensing on PCB (until viscosity of solder paste stabilizes), and b) make quicker movements.
Nest step ... pick and place. Currently working on that and hope to finish it soon.
Thank you for your time. Happy soldering!