Introduction: Colin MacKenzie

Read me first if you are new to OpenServo!

Moderators: jharvey, Secondary Admin, Admins

Post Reply
guru
Posts: 128
Joined: Tue Jan 03, 2006 5:54 pm
Location: St Pete Beach, FL
Contact:

Introduction: Colin MacKenzie

Post by guru » Tue Jan 03, 2006 6:24 pm

Hi All,

I am so excited about how much buzz has been going on lately with digital servos. I have been waiting for years for this to catch on.

It was back in 2000 that I first got the idea to change out the innards of an RC servo and replace them with an mcu. At the time I had a lot of experience programming PICs in assembly. It wasnt long before I had my first prototype digital servo implemented on a breadboard.

Unfortunately, the PICs at the time were short on features. I used PIC16F84 because the flash ability would quicken development. Any PIC with more features was unable to fit on the pcb and/or was too expensive. I had to program my own I2C comm module and PWM using bit banging in PIC assembly. There was also no ADC so an external one was used. By the time I added a few servos on the bus and had a lot of I2C chatter my PID loop was choking from lack of cpu cycles and constant interrupts for I2C, PWM and external ADC!

Late in 2002 (??), microchip released the PIC16F873 and after much delay due to thier popularity I managed to get some in. These had all the modules I needed in hardware and then some! I began recoding my servo from scratch. I managed to get two servo working quite well and communicating through my host computer, a pc104+ linux. I had servo control via a /proc interface! There was only one bug that remained elusive, occasionally the servo would become unresponsive. Priorities change, and the servo project was shelved for more than a year.

Along comes Mike Thompson a few months ago. I had given out my code and schematics to a number of people but until now no one actually seemed to produce anything. Mike had replicated the digital servo using an Atmel.

Just this December I figured out my elusive bug was an i2c bus clock sync problem. Using the DIMAX usb controller that Mike Thompson introduced me to quickly solved this issue! Thanks Mike!

All the buzz has gotten me back into my servo design and in the last few weeks I have restructured a lot of my code. I am still working on fine tuning my servo firmware code. I am also tackling the windows host interface side of things for tuning and controlling the servos. Mike and I are cooperating together on our seperate projects to improve each of our designs.

The email address doesnt work on my web site...too much spam. But you can personal message me on this site and I will respond.

Colin

mpthompson
Posts: 651
Joined: Mon Jan 02, 2006 11:38 pm
Location: San Carlos, CA
Contact:

Post by mpthompson » Tue Jan 03, 2006 6:41 pm

Colin, thanks for dropping by. Your SuperServo project was what inspired me to try to create my own digital servo because it indicated to me that it was at least possible. I'm really looking forward to working with your project as well -- sharing ideas and code.

Between our two servos, at least we can keep both the AVR and PIC fanatics happy :-).

-Mike

guru
Posts: 128
Joined: Tue Jan 03, 2006 5:54 pm
Location: St Pete Beach, FL
Contact:

Post by guru » Tue Apr 08, 2008 3:12 am

FYI: I have finally gotten around to updating my web site. It has a lot more information now. It including a CNC machine I am building, and a lengthy tutorial on creating your own cpu design using verilog and FPGAs.
I also have posted the preliminary schematics and pcb artwork for an FPGA development board I made.

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests