1. Project Management 2. Computer Aided Design 3. Computer Controlled Cutting 4. Embeded Programming 5. 3D Scanning and Printing 6. Electronics Design 7. Computer Controlled Machining 8. Electronics Production 9. Output Devices 10. Mechanical Design and Machine Design 11. Input Devices 12. Molding and Casting 13. Networking and Communications 14. Interface and Application Programming 15. Wild Card 16. Applications and Implications 17. Invention, IP and Income 18. Project Development

Electronics Production

Assignment

Individual Assignment:

  1. Make and test the development board that you designed to interact and communicate with an embedded microcontroller
  2. Extra credit: Make it with another process

Group Assignment

Our group assignment this week was to characteriz the design rules for our in-house PCB production process. We would receive extra credit if we sent our PCB out to a board house.


The link to our group work page can be found here.


Our Test Results


We have two options for PCB milling in house

Characterizing the Modela MDX 50.

  1. Model: Roland Modela MDX-50
  2. Software: Roland's SRP Player for generating tool paths and contolling the milling process.
  3. Process: After the KiCad files are created we export the plot as a Gerber file that can be opened in FlatCam to create the tool paths for milling.
  4. Settings: Setting for MDX are found in images below in the Individual assignment section.
  5. Specifications: Output from FlatCam is imported into the SRP Player.
  6. Tools: 1/64 end mill
  7. Material: FR-1 PCB Board
Modela MDX 50

Characterizing the Forest ATC CNC,

  1. Model:ForestCNC ATC CNC
  2. Software: Vectric Cut2D Pro
  3. The Process: This is different that when using the MDX. First we export the plot from KiCAD as a DXF file that can be opened in Cut2d Pro and will maintain proper dimensions. Once in Cut2D Pro we create a "pocket" tool path for the traces and then a profile cut for the edge cuts. The images below show the settings for the pocket and profile cuts.
  4. Settings:
  5. Cut2D Pro Cut2D Pro Cut2D Pro Cut2D Pro
  6. Tools: 1/64 end mill, 10 degree engraving bit, 15 degree engraving bit
  7. Material: FR-1 PCB Board
ATC CNC

In House Electronics Production at PAST

Our task is to characterize our in-house design rules for PCB production

PROCESS

    We will be using our milling machine to remove copper from the PCB board to create circuit traces.

    Forest CNC PCB milling
  1. First we have to secure the PCB blank to the milling machine cutting area. We use double sided tape to stick the blank to the cutting surface. Make sure the surface (polycarbonate sacrificial board) is clean and smooth.
  2. Using the Forest Scientific CNC interface manually set X, Y and Z for the material.
  3. Next, load the saved file from Cut2D Pro so begin milling.
  4. If board is un-level your milled PCB will not turn out properly.
  5. Milling
  6. Adjust Z height and test again to be sure you have proper level of board.
  7. Finally, remove PCB after final edge cut is complete.
  8. Results

We still have some tweaking to do to make sure the pcb blank is nice and level but ultimately we can create pcb boards with the process listed above.


Individual Assignment

  1. For the assignment this week, I started with the example circuit we made a few weeks ago. It took some time to research how to use the Modela MDX 50. Of all the machines in our lab the MDX 50 is one of the newest and as a result we are not as familiar with it.
  2. Honestly, I was hoping that my familiarity with the other CNC machines in our lab that that all I would need to do was to find the application that would convert the KiCad traces to CNC tool paths but it turned out to be more difficult that I thought.
  3. I found flatcam and PCB2gcode for MacOS but for some reason I was not able to properly install them. I ultlmately, installed Flatcam on the Windows computer conncected to our MDX 50 and was able to create the tool paths and eventually send the file to the MDX for milling.
  4. As you will see in the images below, I eventually was able to mill the PCB but it was too small...amoung other issues.
  5. Along the way, I ran into many issues. These included:
  1. Wrong file extension type
  2. Material not level on milling base.
  3. Warped PCB blank leading to the first broken milling bit.
  4. Scaling issues - milled path was too small and too much copper was removed and resulted in incomplete circuit path.
  5. Imperial to Metric errors. - Flatcam settings were in Imperial units and MDX was in metric.
  6. More scaling issues - I needed to scale the Flatcam CNC output by 2.54 times to make it the correct size for the Seeed RP2040.
  7. The images below represent the work above. Once we have new milling bits I will revisit this section and document how to correctly mill the PCB.

    Start Flatcam Flatcam Gerber Flatcam circuit Flatcam Isolate Flatcam Isolate Flatcam Isolate Flatcam Gen Flatcam Toolpath Flatcam CNC Flatcam for MDX Flatcam Gen Flatcam Gen MDX50 MDX50 Finally milling Too small Scaled properly

    After getting the new 1/64 inch bit I was able to mill a "complete" version of my circuit, although it was not complete enough for me to cut out and solder the components on. If you look at the images below you will see that the size is correct for the RP2040 and the other components but the copper path between the connectin points was completely removed.

    I was able to adjust the width of the copper path but again the board was not as level as I thought and I broke yet another bit.

    almost successful Salmost successful but not quite almost successful but broke one more bit

    FINAL PCB Design and Fabrication

    After several designs and attempts at fabrication I finally came up with a good design and used it in our summer programming. Along the way I had issues with the milling of the board but I finally go the settings (speeds and feed rates) correct and you can see in the images below that everything came out clean and neat.

    Final PCB Design1 Final PCB Design2 Final PCB Design1.1

    Board Built in LED Blink test

    Code for built in blink. LED is on (HIGH) for 1 second and off (LOW) for one half second.

    
    void setup() 
    {
      // initialize digital pin LED_BUILTIN as an output.
      pinMode(PIN_LED, OUTPUT); //PIN_LED is the built in LED pin on the xiao rp2040 
    }
     
    // the loop function runs over and over again forever
    void loop() 
    {
      digitalWrite(PIN_LED, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(1000);                       // wait for a second
      digitalWrite(PIN_LED, LOW);    // turn the LED off by making the voltage LOW
      delay(500);                       // wait for a half second
    }
    

    Unfortunately, I am having trouble connecting any of the boards I created to Arduino IDE. Sometimes I can select the board so I can upload code and many other times I can't. See images below video

    rp2040 built in LED blink RP2040 not connecting to IDE connecting not connecting

    I was able to connect with a new USB-C cable and a usb hub on my MacBook. Below is the code and video for an LED blinking using a RP2040 board I made.

    void setup() 
      {
        // initialize digital pin D6 as an output
        pinMode(D6, OUTPUT); 
      }
       
      // the loop function runs over and over again forever
      void loop() 
      {
        digitalWrite(D6, HIGH);   // turn the LED on (HIGH is the voltage level)
        delay(1000);                       // wait for a second
        digitalWrite(D6, LOW);    // turn the LED off by making the voltage LOW
        delay(500);                       // wait for a half second
        digitalWrite(D6, HIGH);   // turn the LED on (HIGH is the voltage level)
        delay(1000);                       // wait for a second
        digitalWrite(D6, LOW);    // turn the LED off by making the voltage LOW
        delay(500);                       // wait for a half second
        digitalWrite(D6, HIGH);   // turn the LED on (HIGH is the voltage level)
        delay(1000);                       // wait for a second
        digitalWrite(D6, LOW);    // turn the LED off by making the voltage LOW
        delay(500);
      }

    Project Files

    PCB svg

    KiCad file

    Additional Research

      FlatCam

      If you have troubles with the leveling of the copper plate you might want to check this tutorial, it explains step by step how to fix it properly.Tutorial.