Electronic Production

milling and stuffing the PCB


Intro.

Welcome to my four week of Fabacademy. This week is of Electronic Production. In this week I will going learn about PCB's making through milling process and make programmer board. since in past I used breadboard and general purpose PCB often in my hobby projects so I am excite to do and learn PCB making.

Week Task:

Group assignment: characterize the design rules for your PCB production process
Individual assignment: make an in-circuit programmer by milling and stuffing the PCB, test it, then optionally try other PCB processes


Group assignment: summary

As you see on first image that there are lines differs in width. This Image we used for tracing pattern on PCB for testing purpose to Understand working of SRM 20 milling machine. We have used 1/64 inches diameter bit for tracing and 1/32 inches bit for cutting out board. As you see on Second image which is our milling output It clearly show that machine have not trace the lines having width less than diameter of bit i.e 1/64 inches.
click here to know more...


SRM 20

This is Kind of subtractive milling machine and Useful for many thing. Here in this week we used this for pcb millings by using Flat End mills


Individual assignments

Here in PCB production I going to replicated design for MCU programmers and Mill my own boards and assemble them to make it work. Here I will use milling process and blank single sided pcb to mill on circuit design

ISP (In-System programming):

So I took design and Reference from Alex Tocagon - Fabacademy 2018. I choose this board to fine my soldering skill also.

I used mods application in my linux system to generate paths and to communicate with SRM 20 for PCB milling process.
mods is a modular cross platform tool for fablabs. It is based on independent but interrelated modules. mods could potentially be used for CAD, CAM, machine control, automation, building UI, read input devices, react to to physical models, and much more.

List of Components

  • 1 x ATtiny45 or ATtiny85
  • 2 x 1 kΩ resistors
  • 2 x 499Ω resistors
  • 2 x 49Ω resistors
  • 2 x 3.3v Zener diodes
  • 1 x red LED
  • 1 x green LED
  • 1 x 100nF capacitor
  • 1 x pins of 2x3 pins

Before and After Soldering the Component on our FabISP PCB

Yeah! Done well :)

Installing avr gcc toolchain

On Ubuntu terminal use given command and thats all

sudo apt-get install gcc-avr binutils-avr gdb-avr avr-libc avrdude

For window 10 os you need to install gitbash first then Next follow the steps given on link

download and extract firmware - Alex Tocagon

Open GitBash and Change directory using cd command to folder you extracted the firmware

Run make command wait till it get done. you can find .hex file in folder

next connect our FabISP programmer with pre-build programmer to program it using SPI. I am going to use USBasp programmer. Since in window 10 os you may need to install driver first.

Once everythings get done well use following commands and steps to load firmware in our programmer using gitbash and before that make sure wire connection between pre-made USBasp and made FabISP

1.make flash

2.make fuses

3.make rstdisbl

Once steps get done. Disconnect everythings and connect our Fabisb through usb using micro usb connector wire and check device manager on your Window 10 system. It will detect as a UsbTiny since we have already installed driver from adafruit

yeah! If you happy and you know clap your hands....


UPDI (Unified Program and Debug Interface):

I took design and Reference from Adrián Torres -fabacademy 2020. I choose to do this to learn about programmer programming using different interface

Here you can see there are two boards in programmer. One the big one is normal FTDI board which is use as a usb to serial converter and second board is a extension that convert it into UPDI programmer. This programmer use one wire to program chips since other two are VCC and GND. There is no need of loading firmware to making it work, solder components properly and it is ready to use

FTDI board

Extension Board

Generating path using mods

After Milling on SRM 20 milling machine

List of Component

FTDI Board

  • FTDI FT230XS smd chip x 1
  • 10pF x 2 Capacitors
  • 49.9 Ohm x 2 Resistors
  • 1uF x 1 Capacitors
  • 1 x female header of 1x6 pins

Extension Board

  • 499 Ohm x 1 Resistor
  • 1 x male header of 1x6 pins
  • 1 x female header of 1x3 pins

now next we have to setup arduino IDE for our updi programmer. for that follow the given steps:

  • Install Arduino IDE on your system.
  • Run Arduino IDE. On menu goto File/preferences.
  • In Preferences on settings tap in Additional boards manager URL paste the given link http://drazzy.com/package_drazzy.com_index.json click Ok
  • Now again on menu goto Tools/board/Boards Manager and search for megaTinyCore by Spence Konde and install it

now connect the FDTI board with Extension board and connect it with your PC/laptop using USB port and Check device manager to make sure board is working.

Next follow the given steps

  • Run Arduino IDE and On menu goto Tools/board/megaTinyCore/ and Select chip you wanted to program (I have used pre-made hello board that have attiny1614 on it, joined extra wire for VCC as you see on last image)
  • Next Select Port (mostly it auto select the correct port but it can be done manually also)
  • Next in same Tools menu goto Programmer and Select Serial Port and 4.7k (pyupdi style) programmer
  • Write code (I took pre-made code for attiny1614 for testing out board ) Verify it and Upload it
*copy given code for attiny1614 for test purpose - ref

//
// hello.t1614.echo.ino
//
// tiny1614 echo hello-world
//    115200 baud
//
// Neil Gershenfeld 12/22/19
//
// 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.
//

#define max_buffer 25

static int index = 0;
static char chr;
static char buffer[max_buffer] = {0};

void setup() {
   Serial.begin(115200);
   }

void loop() {
   if (Serial.available() > 0) {
      chr = Serial.read();
      Serial.print("hello.t1614.echo: you typed \"");
      buffer[index++] = chr;
      if (index == (max_buffer-1))
         index = 0;
      Serial.print(buffer);
      Serial.println("\"");
      }
   }
                

Hurrey! It done uploading.


Learning Outcomes:

This week in electronic production I first time made PCB with no big mistake and errors. I like the idea of milling pcb not etching it with hazardous chemicals. since even milling process give out harmful dust safety is much. Making of own programmer was nice experience for me. Fabisp is similar to what I used to use in my project before. UPDI programmer is the complete new thing I learned in this week assignment