Electronics Design


Group assignment

Individual assignment

Learning outcomes:

Have you:

Week workflow

weekly assignment → introduction to eagle → Edit Schematic/Boad → Mill the board→ solder components → debug → edit and publish website


Group Assignment

Go to for the group assignment page

Tools used


Software Used


Design files of hello board


  1. Using the test equipment in our lab

  2. I started by watching a sparkfun's youtube video on an oscilloscope

    I learned:

  3. Eagle introduction:
    1. I started by watching the video tutorials below I had a look through the eagle tutorial for the week 6. Following it I downloaded and installed the Fab library for eagle.

    Printed Circuit Board Layout

  4. Reverse engineering Neil's Board

    Neil's Hello Board

    1. I started by having a look at the Electronics Design - Eagle tutorial With the above schematics in hand I started redrawing it at Eagle

  5. Schematics Step by Step:
    1. under projects → right-click on eagle → click on new project → name project
    2. right-click on project name → new→ Schematic
    3. type "add" → search for each part
    4. place part with let click → repeat procedure until all the same part is added → press ESC to add next part → search for next part or press ESC to go back to schematics
    5. Type "rotate" and left click on part origin to turn part around to desired position
    6. Type "net" to connect part to each other;
    7. type "name" and left click on top of part to name part;
    8. type "label" and left click on wire to connect one to the other without having to net;
    9. type value and left click on part origin to designate part "value";
    10. type "move" to position the part as needed
    11. save the file

    On the above schematics is possible to see that most components are not connected with a line, "net" command, except for the crystal (XTAL1), the rest of the components are connected virtually with the command "label" as explained in the letter "h" above.


  6. Drawing the Board

  7. To position the components on the PCB use commands as done on the schematics:
    1. Left click on file → type "board" → accept warning and left click yes to create start designing the PCB from previously created schematics
    2. all components will be displayed to the left of the board → Drag them one by one with command "move"+left click drag to position inside the board
    3. type "rotate" to turn the components the same way as in the schematics
    4. after all is positioned → resize board size dragging the sides of the original board with the command "move"
    5. type "polygon" and select top layer and draw a square around the board limits in order to creat he top layer of the PCB
    6. type "ratsnest" → start autorouter type "auto", this command is very convenient as it gives initial idea on how you can route the board, but it doesn't replace manual routing
    7. select start
    8. adjust traces if needed with command "ripup" to remove positioned paths
    9. place new paths with command "route" and "move" to better position
    10. type command "info"+left click in order to fine tune position of paths as well as thickness

    You can watch how I did it here, pump up the volume for some Cash!

    in case it doesn't play watch it on youtube!


  8. Adding the LED and Button
    1. In order to add the LED and the Button I went back to the Schematics.
    2. In the schematics type "add" to add two resistors, one LED and the button
    3. The fist resistor works to limit the current that goes to the LED. It should be placed in the positive side of it. In other to dimension the LED I checked first the LED data sheet. There I looked for, Dc forward current, in this case 30 and forward voltage, in this case 2.1.
    4. with those two values plus my input voltage "5" in hand I input the values to the website LED center in other to calculate the correct resistor, in this case 100Ohms
    5. as for the switch I used a 10K resistor as a pull-up resistor
    6. like before I used the commands move rotate and label name copy to position all components on its place

  9. Make BOM (Bill of Materials)
    1. Left click on design link → left click on Schematic
    2. wait for program to display part → type new search string in case desired part does not appear → left click manual search → choose desired part → left click select
    3. repeat previous process until all parts are found
    4. left click export and save BOM File

    After some editing here it is:

    qty Location Digikey or Mouser Part number Manufacture Part # Description
    1 U1 ATTINY44 ATTINY44 IC 4KB FLASH
    2 R1 311-10.0KFRCT-ND RC1206FR-0710KL RES SMD 10K OHM 1% 1/4W 1206
    1 R2 311-100FRCT-ND RC1206FR-07100RL RES SMD 100 OHM 1% 1/4W 1206
    1 D3 160-1169-1-ND LTST-C150GKT LED GREEN CLEAR 1206 SMD
    1 C1 445-1423-1-ND C3216X7R1H105K160AB CAP CER 1UF 50V X7R 1206
    1 FTDI 6 pin header
    1 RESONATOR XC1109CT-ND ECS-CR2-20.00-B-TR CER RES 20.0000MHZ 15PF SMD
    1 450-2058-1-ND FSM6JSMATR SWITCH TACTILE SPST-NO 0.05A 24V
    1 ISP 649-95278-101A06LF 71600-006LF Headers & Wire Housings 2X3P UNSHRD HDR 30 micro inch gold

  10. Exporting the image for fabmodules
    1. Go to Options, Set, Misc and deselect Display Pad names, signal and via lengths. This will prevent undesired text from appearing on the exported image.
    2. On layers toolbar select only the top layer
    3. next type "export"→ select image nd monocromatic→and in resolution type 500
    4. save to desired location
    5. the result is a black and white image

  11. Edit in gimp
    1. With the exported eagle file in hand open in gimp.
    2. in gimp I decided to add some wording, this was easy by selecting the text tool, then font size and rotating the wording to an ideal location.
    3. I also removed unnecessary black areas with the bucket tool
    4. to create the outline I selected the area I wanted to keep and covered it with the bucket tool
    5. in the end you should have two images, one for the PCB and one for the outline

    PCB image ready for fabmodules

    pcb outline ready for fabmodules


  12. Fab modules and Milling
  13. The process in Fab modules and Milling is already outlined by the week 4 assignment so I will only keep here an image of the result

    milled pcb, polished with tothpaste for best apearance


  14. Soldering/Populating the PCB and Debuging
  15. The result

    As before the populating and debugging is already outlined by the week 5 assignment so I will only keep here an image of the result

    populated PCB ready for burning firmware

  16. Burn firmware

  17. Disclaimer

    I actually did this activity in the embedded programing week. I only place it here to fulfill the Fabacademy requirements.

    With that here follows the test of my board.

    1. identify example code:
    2. - There is this code from Prof. Neil

    3. identify commands to compile and burn firmware
    4. - with all files prior downloaded on one directory, in linux I rename the file to makefile and run the script to create the firmware (this step I will repeat every time I want to modify the code:

      mv hello.ftdi.44.echo.c.make makefile
      make

      renaming to makefile and compiling

    5. compile source code
    6. - done in previous step

    7. Adapting makefile to work with my programer
    8. I had to edit the makefile file to work with my programmer. That was done by replacing the entry usbtiny with USBasp 2 times, one when burning the firmware the other when burning the fuses

    9. burn firmware
    10. run:

      make program-usbtiny

      renaming to makefile and compiling

    11. identify what fuses to burn
    12. - that was done already in the makefile

    13. burn fuses
    14. run:

      make program-usbasp-fuses

      burning fuses

Programmer FabISP and USBisp

Here I show how I used the programmers on Output devices, for Another method without the Arduino IDE check Embedded Programing

USBasp

Programming an attiny44 board with arduino using a FabTinyISP or USBtinyISP that I made.

FabISP

Programming an attiny44 board with arduino using a FabTinyISP or USBtinyISP that I made was fine. there is only the inconvenience of having to power the target board.

Start by oppening the Arduino IDE, than in tools chose the board, in my case ATtiny24/44/84, Next in processor I chose Attiny44.

Next chose the clock, as I m not using a external crystal I chose "Internal 8MHz.

Next go to Programmer:"USBasp or USBtiny for the Fabisp.

In the video bellow I show the the process of programming with the FabISP.

For a full resolution video check Youtube

In this video I show the process of programming with the USBasp.

For a full resolution video check Youtube


First test

Burning Neil's code "hello.ftdi.44.echo.c"

Here instead of using terminal and avrdude, I used the Arduino IDE as it has a built-in serial monitor.

The results are as follows in the video


  • Conclusion
  • I really enjoyed learning this new tool. I have used eagle before to view pcb's but never actually designed one. I feel it opens my mind to a lot of new things to come!

    To see how I program this board Check Embedded Programing week.