Assignment 11: Output Devices

Project Description

Explore Output Devices

Assignment Details

  • Group Assignment:
    • Measure the power consumption of an output device
  • Individual assignment:
    • Add an output device to a microcontroller board you've designed, and program it to do something

I continue to have issues with my ability to fabricate PCBs on my CNC. I reached out to the University of Washington's Co-Motion Makerspace to access a machine to mill the PCBs for this week and last week. This week I created a breadboard prototype to prove that the concept, wiring and code work and used a "fancy" machine to mill the boards.

Last week I created a project that seemed fairly simple, but ended up being more complex than expected. This week my goal was to get back on track by creating a very simple project that used both an input and an output.

This week's project reads an analog value from a potentiometer and then moves a servo to a proportional location in it's travel. This is kind of a "Hello World" for connecting input sensors to output actuators.

My inital board is a derivative of the week 6 Hello World board. Because the pot and servo each need external connections, I routed the AT Tiny 44 data pins from the remaining I/O ports to external connectors. This was kind of like making an ATTiny44 Arduino board. The data pins could be configured either as inputs or outputs and the external connections could be wired to many kinds of inputs and/or outputs.

Generic IO Schematic

The figure above shows the schematic for this generic Hello World I/O board. The Symbol and footprint for the 1x6 header pins are being reused for the external interface to the pot and servo. Each needs Vcc, GND, and signal pins.

Generic IO PCB

The figure above shows the PCB design for the generic Hello World I/O board and the rat's nest of wires.

Generic IO Auto routing

Because KiCAD doesn't have any auto router included, I exported a trace file and imported into the FreeRouting program. I auto generated a single sided solution and exported the results and imported back into KiCAD. In the end, it helped as a starting point, but I went back and routed the traces myself.

Generic IO Finished PCB

I tried to mill this design on my CNC. Initially I used the design with the same trace width and angled routes that I used on earlier projects. The resulting milling operation didn't generate a workable board. I went back in increases the trace width and made all the routes use 90 degree bends. This still didn't result in a workable board.

Fabbed PCBs

The figure above shows several of these attempts to mill the board.

Next I fell back to an even simpler design using an ATTiny45.

Hello World Schematic

This design has the minimum amount needed to have the pot move the servo.

Hello World PCB

The video clip above shows a demo of turning the pot and having the servo react with proportional movement.

I joined UW's Co-Motion Makerspace and as a result gained access to their PCB mill. The figure shows their high end mill that automatically supports swapping end mills and also has a camera that detects positioning holes to support double sided boards.

UW CoMotion PCB Mill

Even with all this technology it took quite several iterations to end up with a workable board. The outline cut for the PCB worked fine, but the end mill that cut the copper out of the empty space was slightly worn, so it produced insistent results. I worked with the Makerspace staff for several days and we got a "workable", but never a "perfect" result.

Populating the PCB

The figure above shows the components and board ready for assembly.

Reflow Oven Board with paste

I used Co_motion's "real" reflow oven to bake the board with solder paste.

Board with paste

The figure above shows the finished circuit. The video clip shows the use of the potentiometer to move the servo.


Reference Files



Related Projects