Skip to content

08. Electronics production#

01.Groupwork#

group assignment

  • characterize the design rules for your in-house PCB production process
  • submit a PCB design to a board house

Please refer to this page for the group work page.

02. individual assignment#

individual assignment

  • make and test a microcontroller development board that you designed
  • extra credit: make it with another process

Obtaining mill data using Fusion 360 for electronics#

Slice#

  1. Select the layer to trace.

  1. Select the target.

  1. Export it. The export method is described in the outline below.

Outline#

  1. Create a layer.
    • Layer name: MilOutline

  1. Select the layer to transfer.
    • Target layer name: 20BoardOutLine
  2. Select “line” in the selection to limit the selectable objects.

  1. Select all target lines and transfer them to “layer” using “convert to polygon”.
  2. Select only the “layer” and export it. Proceed with the export method as shown in the image below.

OUTPUTS> Image>Browse…>naming >save > ok

Note

Don’t forget to check “monochrome” when exporting.

Hole#

Note

The holes currently visible are virtual images projected when reflecting the 3D modeling in “eagle”. In reality, the hole information does not yet exist on the “board”. Therefore, it is necessary to create a new layer for holes and export it.

  1. Select the “board outline” layer.

  1. Select the circle at the hole location.

  1. Check the diameter with “DDD”.

  1. Currently, due to the grid, you cannot create a hole circle at the specified location. Change the “Size” of the Grit setting to 1ml.

  1. DESIGN > PLACE > Hole (NPTH)

  1. Change the ULP’s drill-aid to 0.
    1. a search > b select target > enter drill-aid > OK > OK
  2. Select the “hole” layer created in step 5 and export it. The export method is the same as the method described in the outline.

Creating G-code data using modsproject#

The procedure to open the G-code creation program for mil 2D PCB is as follows.

programs > open program > G-code >mil 2D PCB

  • A: read png
    • a: import png files
    • b: invert. mods creates G-code to excavate the white part. If the area you want to excavate is represented in black, you must invert it.
  • B: set PCB defaults
    • c: isolate trace.
  • C: mil raster 2D
    • d: calculate. Clicking this starts the calculation, and a 3D G-code check screen opens in a new tab. At the same time, the G-code file is downloaded.

#

G-code information that can be confirmed in 3D opened as a new tab

Slice

  1. Import the slice png file
  2. Select isolate trace (1/64) in set PCB defaults
  3. Select calculate in mill raster2D. Then the G-code data will be downloaded.

Outline#

  1. Import the outline png file
  2. Select isolate trace (1/64) in set PCB defaults
  3. Select calculate in mill raster2D. Then the G-code data will be downloaded.

Hole#

  1. Import the hole png file
  2. Select invert.
  3. Select isolate trace (1/64) in set PCB defaults
  4. Select calculate in mill raster2D. Then the G-code data will be downloaded.

Board Fabrication#

Milling#

A detailed workflow for PCB Milling can be found on the Group assignment page.

CNC machine used this time#

Sainsmart Genmitsu PROVerXL4030

https://jp.sainsmart.com/products/genmitsu-cnc-proverxl-4030

Difference in drill diameter#

    • Small diameter * Easy to break
    • In the first place, there is almost no need to cut the surface (it is meaningless). Since it is enough to insulate, the drill diameter has almost no effect on the processing time.
  • Preparation
    1. Check the size of the board. This time, a 48mm x 48mm board is fine.
    2. Download the software
      1. This time I used Gsender
      2. https://sienci.com/gsender
    3. Turn on the power
    4. Fix the board with double-sided tape
    5. Attach the drill
      1. Two types of drills were used this time
        • V
        • End mill
      2. Use two wrenches to tighten the bolt.

Warning

The Z-axis has a limited range of motion. If you insert the bit too much when attaching it, the bit may touch the limit of the range of motion before touching the board when setting the Z-axis 0 point, and you may not be able to lower the bit to the 0 point. Attach it with the bit sticking out to some extent (for example, about 15mm).

    • Align the X and Y axes to the 0 axis on the Gsender software * A: Selecting A in the image moves the tip to the lower left corner. * B: You can change the movement distance per movement with Rapid, Normal, and Precise. Select Precise when precise movement is required. *
    • Align the Z axis to the 0 axis * Pinch the paper and lower the Z axis little by little. Move it to a location where the paper no longer moves, lowered by about +1 operation, and set it to the 0 axis. *
    • Load and execute G-code data * The speed can be adjusted with Feed (red frame). Be careful as the drill may break if it is too fast. * * This time, execute in the order of trace > hole > outline.

Note

        • When the outline is cut, the board is separated from the whole. If you perform additional excavation in the separated state, the board may move and you may not be able to excavate properly. Cut the outline last.

Warning

        • Do not leave the CNC excavation unattended. It may cause troubles due to drill breakage or fire due to friction. * The drill may break depending on the speed and deterioration state. Wear safety glasses for safety reasons.

Stuffed#

  • This time, use the following parts.
    • Xiao_RP2040_SMD_FAB.flbr
    • LED_FAB.flbr
    • RES_FAB.flbr
    • SWITCH_TACT.flbr
  • I confirmed that it can be placed without problems as shown in the image.

Solder

Board Operation Check#

Perform an operation check using rp2040

Source code#

The code is here

https://gitlab.fabcloud.org/academany/fabacademy/2025/labs/kannai/students/shintaro-ito/-/raw/main/code/week04_03_dialogue_bottun_led/week04_03_dialogue_bottun_led.ino?ref_type=heads

#include <Multichannel_Gas_GMXXX.h>

//
// hello.button-blink.RP2040.2.ino
//
// Seeed XIAO RP2040 button, blink, echo hello-world, two cores
//
// Neil Gershenfeld 12/28/23
//
// This work may be reproduced, modified, distributed,
// performed, and displayed for any purpose, but must
// acknowledge this project. Copyright is retained and
// must be preserved. The work is provided as is; no
// warranty is provided, and users accept all liability.
//
// add RP2040 core
//    https://github.com/earlephilhower/arduino-pico
//

#define led_pin D10
#define button_pin D9

void setup() {
   pinMode(led_pin,OUTPUT);
   pinMode(button_pin,INPUT_PULLUP);
   Serial.begin(100);
   Serial.setTimeout(10);
   }

void setup1() {
   }

bool button_up = true;

void loop() {
   if ((digitalRead(button_pin) == LOW) && button_up) {
      digitalWrite(led_pin,HIGH);
      Serial.println("button down");
      button_up = false;
      }
   else if ((digitalRead(button_pin) == HIGH) && !button_up) {
      digitalWrite(led_pin,LOW);
      Serial.println("button up");
      button_up = true;
      }
   }

void loop1() {
   if (Serial.available()) {
      digitalWrite(led_pin,HIGH);
      String s = Serial.readString();
      Serial.print("you typed: ");
      Serial.println(s);
      delay(100);
      digitalWrite(led_pin,LOW);
      }
   }
operation test