Electronic Production

This Week's Objective


Make an in-circuit programmer by milling the PCB & program it


Group Assignment



Link to the Group Assignment

For this week’s group assignment we had to characterize the specifications of our PCB production process on our CNC 3040. The software that we used for milling was Fab Modules and send nc files trough Mach3 software sender.




As I said , we used Fabmodules online at mods and we Loaded the image as a png [ we used linetest.png to milling the trices and linetest.interior.png for the outline].


I use to mill the traces with 1/64 (0.4mm)bit (It means that the mill will cut the traces with an end mill with a diameter of 1/64) and to cut the outline with 1.4mm bit




Then we extract the file as .nc and we put it on mach3. Once its in the machine and before you can start milling you need to setup the machine so you must start with:

  • Preparing a sacrificial plane
  • Using the double-sided adhesive tape, attach the 20mm MDF plane to the table; then attack the FR1 base on the sacrificial plane
  • Attaching the milling bit in the collet and make sure it is 2 or 3 mm from the surface of the FR1
  • Zeroing the Z height, dropping the tip on the plane, making sure that the Z can theoretically get off at least the right amount to be able to mill
  • Zeroing the X and Y axes starting from the left-bottom side of the FR1 board


  • And the result is :




    Individual Assignment




    First step to mill the printed circuit board (PCB)was downloading the virtual traces and outline cutout shape of the PCB from the internet in form of .png images with a resolution of 1000 dpi:





    I used used Fabmodules online at Fabmodules to upload the .png images successively and to generate the G-code for the CNC mill to mill the traces and to mill the outline shape of the PCB.



    Important settings to consider:
  • speed (mm/s): (this value can be experimented with and depends on the machine accuracy)
  • x0 mm: (states the starting origin point for X vector)
  • y0 mm: (states the starting origin point for Y vector)
  • z0 mm: (states the starting origin point for Z vector)
  • zjog mm: (specifies how high will the machine displace in Z vector, while traveling to a different location)
  • cut depth mm: (0 is used since Z depth is taken from the machine)
  • tool diameter mm: (depends on the milling tool used)
  • number of offsets mm: (this value is used if we want to fill the entire board, we use that to avoid any shorts on the USB level)





  • you can notice that the blue lines represent the milling paths, while the red lines the jogs/travels. The .rml file is then saved.
    I repeat the process for the outline of the board. This time the PCB Outline 1/32 process is used. Setup settings remain to be the one generated by the website.

    The milling



    Preparing the milling machine required me to tape carefully the PCB board of the board of the machine and checking well if it would stand flat over it. After turning it on, I moved with the head machine of the machine with its software over the area I desired to start milling, but before pursuing in this operation I had to zero the coordinates and adjust the height of the mill.
    In our milling software, there are essentially two ways of moving the head manually: continuosly, for rapid movement across the board, and by steps of ratio 10/100/1000, for slower and more controlled movements. This second option is almost essential for accomplishing the following operation without risk of damaging the drill tip.
    Once you’ve chosen the x,y coordinates to start the milling process, you can push the Set X/Y button in the software to zero them. The same operation had to be done for the z, meaning that you have to lower manually (slowly and by heavily controlled steps!) the milling tip over the board and after you’ve reached an height that is just enough, you have to manually un-screw the tip from the spindle, push it slightly over the PCB surface and the screw it back.
    This operation has to be done very carefully, especially with 0.4 mm (1/64th of inch ) tips because they’re very fragile and can be damaged with the slightest lack of attention. After that, you can submit the Set Z command, prompt you RML file to software and initiate the milling process.






    after several times , The board is ready for soldering.




    Soldering Iron



    After finding all the needed items, printing out a scheme of the layout, firing on the soldering tool to a temperature of 320-325° C and taking a long, calming breath I placed, lost, placed again, misaligned, re-aligned, covered in solder blobs, rescued from solder drowning, removed, replaced, misplaced, lost again, almost burnt and eventually soldered every component dozens of times before calling it done. This is one of my loose boards.





    I had to redo the board but this time I set number of offsets to -1 and that's the final result.






    Programming


    The first step was to download Zip file ,Zadig-USB and WinAvr

    Then open the arduino frameware and run the ArduinoIsp program , to find it you should go to file ->example ->Arduino ISP and it will transfer the arduino into prgrammer.






    Disconnect your arduino and extract the Zip file that you downloaded previously then open the makefile , we need to make some changes so it becomes able to work with arduino.




    you must change the MCU (in my case I use the Attiny45) and the programmer and also same parameters in the commands flash , fuses and rstdisbl ( Port and baudrate)






    After saving all those changes , I connected the fabisp to the arduino as follown




    Then open the GIT from the folder that contain the makefile that we changed previously and write the command make and then press ll to check if there is two file (.elf and .hex)

    After checking that every thing went alright with the two commands you need to enter new ones but before that, you need to use a USB HUB to connect your arduino and your ISP and then to your laptop




    Then open git and write special commands to program the ISP using arduino
  • make flash to send the code to program the ISP
  • make fuses to upload settings
  • make rstdisbl to disable one of the pins to work as a reset








  • Now Disconnect your arduino from the USB hub as well as all the jumper cables and keep only the ISP connected




    Use the Zadig software to instal the driver for the ISP ,search for USPtinySPI and click on Install Driver




    After the installatio of the drive, you must check if the ISP driver is installed by finding USBTINYSPI at the device manager when the ISP is connected to the laptop.