=======Pick and place machine - NeoDen 4======= [[https://www.neodensmt.com/uploads/14386/files/NeoDen4-User-Manual.pdf|Link to full manufacturer's manual]] Coming soon! ==== PCB Manufacturing Workflow ==== - Schematic capture - PCB layout - Buy bare PCBs and stencil (or DIY stencil with laser cutter - paper thickness to be checked) - Apply solder paste - Place parts - Reflow PCB - Test and programming any programmable parts if applicable ==== Pick and place machine specifications ==== * 8mm feeders: * 12mm feeders: * 16mm feeders: * 24mm feeders: * Maximum work area: * PCB mounting: One fixed 3mm post, 3 adjustable 3mm posts and several spacers ==== Components ==== We have a range of components available for use, mostly passive components in 0402 size. You can of course use your own components. Make sure you buy plenty of excess as a few components will be ejected during the loading of your components and you'll need to sacrifice some components or have leader tape to make the film reach the peelers. The most popular component values are pre-installed on one side of the machine whilst the other side of the machine is normally left unpopulated for the installation of components specific to the job. If you need to take off one of the popular component reels to get enough feeders for your job, please re-install the popular component reel afterwards. Catalogue link. ==== Instructions ==== === Important === * Don't put your hand inside the working area while the job is running. * Shut down the machine by pressing the Exit button in the UI then waiting for the system to shut down before removing power. === CAD Data Preparation for KiCad === These instructions may work for other programs as long as they can produce ASCII position files. If your design doesn't already have fiducials, you will need them. Even if you're using board holes, you need them in your design so that the pick and place machine knows where they are. In the KiCad schematic editor, add two fiducials. Forward annotate them and place them on the PCB. If using board holes, you can just place them on top of the board holes. In the PCB editor, go to File > Fabrication Outputs > Component Placement. Choose ASCII format and generate the file. Copy and paste the below program into a new .py file and use it to convert the ASCII placement file into the correct format for the pick and place machine. # Translator for converting KiCAD .pos files to .csv files for a NEODEN pick and place machine # Based on https://github.com/szczys/kicad_to_neoden # Usage # python kicad_to_neoden.py your_position_file_from_kicad.pos # Works with Python 2 or 3 and outputs a file with the same name as the input but ending with "_neoden.csv" from __future__ import print_function import fileinput import os import sys def transrotate(value): if value <= 180: return int(value) else: value -= 180 return int(0-(180-value)) def process_pos_lines(pos_lists): output_string = "Designator,Footprint,Mid X,Mid Y,Layer,Rotation,Comment\n" output_string += ",,,,,,\n" for line in pos_lists: if line[0][0] == '#': continue outline = line[0] + "," + line[2] + "," outline += line[3].split('.')[0] + "." + line[3].split('.')[1][:2] + "mm," outline += line[4].split('.')[0] + "." + line[4].split('.')[1][:2] + "mm," if line[-1] == "top": outline += "T," else: outline += "B," outline += str(transrotate(float(line[5]))) + "," + line[1] output_string += outline + '\n' return output_string def main(): if len(sys.argv) != 2: print("Syntax error!") print("Usage: python kicad_to_neoden.py your_position_file_from_kicad.pos") return #Turn input .pos file into a list of lists pos_lines = list() for line in fileinput.input(): pos_lines.append(line.strip('\n').split()) cur_dir = os.getcwd() filename = fileinput.filename() if filename[-4:] != ".pos": print("WARNING: Input file doesn't have expected '.pos' extension") print("Parsing " + filename) neoden_format = process_pos_lines(pos_lines) #Strip trailing newline character if neoden_format[-2:] == '\n': neoden_format = neoden_format[:-2] print("Writing CSV file") output_file = os.path.splitext(os.path.join(cur_dir,filename))[0]+"_neoden.csv" with open(output_file, 'w') as ofile: ofile.write(neoden_format) print("Successfully wrote:",output_file) if __name__ == '__main__': main() You may wish to edit the output file and delete the lines for components you definitely won't want to place on the machine, but you can also do that on the machine. Copy the output file to a USB drive. The computer built into the pick and place machine runs Windows XP so try not to put viruses on it. === Configuring the component feeders === The configuration of the feeders on the machine is a global setting and not job specific. The machine supports three types of feeder. * Automatic Feeders * Grid/Strip Feeders * Vibration Feeders === Programming the machine with your job === After following the instructions above, you will now have a pick and place file in the correct format on a USB drive. === Running the job ===