Electronics design

In this week we have to modify the echo hello-world board by adding at least two components to it, an LED and a button.

Designing the board using Kokopelli

I used eagle before and acctually I didn't like it. So I wanted to try kokopelli 0.05 (retro mode) for this assignement. I downloaded the program from TheBeachLab github repository. Also, we have to make sure that we have the libraries and packages mentioned in mkeeter kokopelli repository. Also, we need to download fab modules compiled.

After building the program, to run it we need to write this command python2 ./kokopelli -r in the terminal in this directory ~/kokopelli/bin/

After that our guru Francisco gave us class about using the program. This is my first time to try such software, I mean it's not like any software that I saw before. It is based on coding the pads and traces. And it is super easy to use, and super fast.

Then we opened echo hello-world board code and coppied it to kokopelli.

Kokopelli doesn't have design rules checker but we have make sure that the traces are not smaller that the milling bit diameter.

Here is the echo hello-world board that apeared when I pasted the code:



To edit the board all the work we be after:

#
# define board
#

The first modification I made was increasing the width of the board from 1 to 1.3.

width = 1.3

Then, I added the components I wanted to add the board, an LED, a resistor and a button. To choose the resistor value, I need to know the recommended forward current for the LED. Which is 30mA to according to the datasheet. And the voltage I get from Attiny44 is 5V, so the required resistor is 5/30m = 166.66 ohm and the minimum resistor close to this value is 499 ohm.

Firstly, you name the component and you make it equal to one of the components' classes. For example, for the LED, I named it LED1 and it is equal to LED_1206. Then, the component can be placed using pcb = "component-name".add(xy cordinate of the componet)

LED1 = LED_1206 ('L1')
pcb = LED1.add(pcb,XTAL1.x,IC1.pad[5].y,z,180)

R2 = R_1206 ('R2\n499')
pcb = R2.add(pcb,LED1.x,LED1.y-.1,z)

B1 = button_6mm ('B1')
pcb = B1.add(pcb,IC1.x+.37,J1.y+.05,z)

After that, I added the traces to connect the components

pcb = wire(pcb,w,
   IC1.pad[5],
   LED1.pad[1])

pcb = wire(pcb,w,
   LED1.pad[2],
   R2.pad[1])

pcb = wire(pcb,w,
   J1.pad[6],
   R2.pad[2])

pcb = wire(pcb,w,
   IC1.pad[10],
   B1.pad[1])

pcb = wire(pcb,w,
   IC1.pad[10],
   B1.pad[1])

pcb = wire(pcb,w,
   IC1.pad[10],
   B1.pad[1])

pcb = wire(pcb,w,
   J1.pad[2],
   B1.pad[2])

Here is the final board design:



Exporting the files for Milling

To mill the board two images should be exported. One to cut the traces and another to cut the outline.

To cut the traces we need to export "traces and exterior". And to cut the interior we need to export the "interior". The pictures resulotion is 25 pixels/mm.

#output = "traces, labels, and exterior"
#output = "traces and exterior"
#output = "interior"
#output = "exterior"
#output = "traces"
#output = "holes"
#output = "solder mask"

But I did a mistake. Instead of exporting the interior I exported the exterior. I exported this image:



And here is the result when I milled the board, I cut part of the traces on the edges:



So I exported the interior, and I milled the board again.

Picture of the interior:



Picture of the traces:



And here is the board after it is milled, I followed the same steps I explained in week 4:



Here is the board after soldering all the components.



You can notice that the board has bad quality and this is because we broke all the milling bits we have in the lab, so I was using a broken one. We will order new milling bits.

Files