Sam Spaulding

How to Make (almost) Anything


Week 11: Output Devices - Fabduino and Servos





Output Devices

Another important week for my final project! Now that I've settled on a robotic arm, I am doing a lot of work figuring out how to organize the control, learning, and sensing for the robot. I spent a lot of this week looking into how much current the arm would draw, what voltage they run on, and how to design the power supply to give the correct amounts of current and voltage to the right components at the right time.

None of that stuff was relevant to the assignment this week, however, so in tandem, I also worked on how I would control the arm. I knew I would have to step up to an ATMega chip, since I would need at least 5 PWM-capable pins and the ATTiny has only 4. I'd already been toying around with the idea of it, so I decided this week would be a great opportunity to try and make the Fabduino and use it to power a servo!


Board Manufacture
I used the Fabkit with an ATMega 168 and an 8MHz oscillator. The trickiest bit was burning the bootloader, which requires painstakingly making sure that the outputs from your FabISP match to the right pins on the fabduino, but it's not too bad if you draw a diagram and double check your connections. I also had a weird problem where the bootloader wouldn't burn to the chip for the longest time. I solved it by replacing the oscillator, but I have no idea why that was the issue. Other than that, I spent a long time wondering why the pin numbers on the ATMega didn't work in the Arduino IDE, but the website listed above shows what the mapping is (e.g. when you write to pin 13 in the Arduino IDE, that's the LED pin even though it's a different number on the ATMega 168 data sheet) I am also starting to get more used to hardware debugging tools - using an oscilloscope to examine communication, checking connections with a multimeter, etc.

Once the Fabduino was working, programming the board was very simple. The Arduino IDE has great library support for all kinds of things, including servo control. I did a quick LED blink check to ensure that the board was indeed functioning and then used the "Servo.h" library to do the PWM control. Moving Servo's!

Download Video

Final Project Update, 11/19
I've more or less settled on a design for the arm now, and am beginning to work on designing the electronics. Right now, my focus is on the mechanical and electrical components, since software is more "safe" to me. I have a rough sketch of what the