Electronics Design

Group assignment

• Use the test equipment in your lab to observe the operation of a microcontroller circuit board

Individual assignment

• Redraw the echo hello-world board, add (at least) a button and LED (with current-limiting resistor), check the design rules, make it, test it.

Learning outcomes:

• Select and use software for circuit board design
• Demonstrate workflows used in circuit board design

Have you:

• Shown your process using words/images/screenshots
• Explained problems and how you fixed them, including how you worked with design rules for milling (DRC in EagleCad and KiCad)

Week workflow

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

Tools used

• Solder Station
• TaoBao CNC
• test equipment: digital voltmeter, oscilloscope, regulated power supply

• Eagle
• Fab Modules
• Gimp

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:
• that an oscilloscope measures voltage over time: getting amplitude, frequency, transient signals;
• The important buttons...

Our Lab oscilloscope

• Calibrating the probe/Adjusting compensation capacitor
• Oscilloscope's probe

1. on the probe select to X10;
2. connect the probe to channel one plug;
3. connect the probe to the 1kHz 5V square wave generator
4. turn on oscilloscope
5. make sure only channel one is on, click on CH2 button until its off and the other way around on CH1 button;
6. select DC coupling with the F1 key;
7. press button F4 to select 10X on probe mode;
8. press trig/menu button and select type as "edge" and source CH1
9. Select slope as "Rise"
10. Adjust the Vertical and horizontal knobs until you see the wave
11. if wave is moving adjust trig knob until it stops
12. to calibrate the probe adjust the screw on the base of the probe until the wave is square.
13. Picture of the wave before and after adjustment

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 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

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

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.