4.Electronic Production

Background

What is PCB?

  • A Printed Circuit Board (PCB) is a flat board made of non-conductive material (usually fiberglass or composite epoxy) that is used to mechanically support and electrically connect electronic components using conductive pathways, or traces, etched from copper sheets laminated onto the substrate. PCBs are used in almost all electronic devices, providing a sturdy and reliable way to interconnect components such as capacitors, resistors, and integrated circuits. They can be single-sided (components on one side, traces on the other), double-sided (components on both sides), or multi-layered (with traces on multiple layers).

  • PCB fabrication methods





  • Tasks

    This week has following tasks:

  • Group assignment: characterize the design rules for your in-house PCB production process send a PCB out to a board house.Here is our work of group assignments.
  • Individual assignment: make and test a microcontroller development board
  • Extra Credit Assignments: personalize the board,make it with another process
  • 1. PCB Manufacturing using Milling

  • Milling: In this method, a CNC (Computer Numerical Control) machine is used to mill away the copper from a blank board, leaving behind the desired circuit pattern. This method is often used for prototyping and small production runs. For this first of all we need png image of the the circuit.For assignment this image we took from documentation.

    quentorres_traces quentorres_interior

  • Use of modsproject modsproject. Mods was originally written by Neil Gershenfeld (https://ng.cba.mit.edu/) for rapid-prototyping workflows in CBA research (http://cba.mit.edu) and classes (https://fab.cba.mit.edu/classes/MAS.863/), and for use in the fab lab network (https://fablabs.io/labs/map) and its classes(https://academany.org/). It is now served (https://modsproject.org) and supported (https://gitlab.fabcloud.org/pub/project/mods) as a community project. https://mods.cba.mit.edu now redirects to here; original mods remains available at https://mods.cba.mit.edu/oldindex.html

    Sequence of use of the modsproject is as follows:

    p1 p2 p3 p5

    Import PNG

    p6

    Select PNG

    p7

    Read PNG

    p8 Open

    p9

    Mill Raster 2D

    p10

    Calculate: It calculates corresponding Numeric code.

    p11

    Get calculation for cordinates

    p12

    View:It downloads the .nc file which is readable for the milling operation.

    p13

    Change extensions:Our machine is compatible with .gcd file extensions so .nc was renamed as .gcd



  • 2.PCB fabrication at our FabLab

  • Our FabLab has MM3030 PCB milling Machine.its specifications are x=260mm, y=301mm,z=143mm.


  • milling machine milling machine

  • We used multiple tools for the purpose of PCB manufacturing.
  • tools

  • Following is the GUI of the MM3030 software.All blocks are explained in the image
  • milling machine

  • Setting of origin x0,y0,z0
  • milling machine

  • importing PNG.gcd file which we get from modsproject.This also shows the G code generated.
  • milling machine

  • PCB milling in progress.Tool that I used is v tool for milling purpose.
  • milling machine milling machine

  • Final PCB
  • milling machinemilling machine

    3.Exploring the Xiao rp2040 microcontroller

  • I explored the rp2040 in arduino IDE. I used doucmentation provided by Adrián Torres. which is as follows:
  • Adding files in preferences
  • milling machine

  • installing libraries
  • milling machine

  • Selecting board and port
  • milling machine

  • Compiling and uploading sketch
  • milling machine
  • Code for LED blink
  • Arduino Code
    
    												#include <Adafruit_NeoPixel.h>
    												
    												int Power = 11;
    												int PIN = 12;
    												#define NUMPIXELS 1
    												
    												Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
    												
    												void setup() {
    												  pixels.begin();
    												  Serial.begin(9600);
    												  pinMode(Power, OUTPUT);
    												  digitalWrite(Power, HIGH);
    												  pixels.show();
    												  pixels.clear();
    												  pixels.setPixelColor(0, pixels.Color(0, 0, 255));
    												}
    												
    												void loop() {
    												  pixels.show();
    												  
    												  if (Serial.available() > 0) {
    													// Read the serial input
    													char receivedChar = Serial.read();
    												
    													// Change the pixel color to red
    													pixels.clear();
    													pixels.setPixelColor(0, pixels.Color(255, 0, 0));
    												  }
    												
    												  delay(400);
    												}