OpenServo.com Forum Index OpenServo.com
Discussion of the OpenServo project
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

I2C bus cabling maximum length, maximum number of nodes

 
Post new topic   Reply to topic    OpenServo.com Forum Index -> Hardware
View previous topic :: View next topic  
Author Message
Jan



Joined: 08 Apr 2007
Posts: 10
Location: Germany, Greifswald to be precise

PostPosted: Sun Apr 08, 2007 11:00 am    Post subject: I2C bus cabling maximum length, maximum number of nodes Reply with quote

Hi Folks,

I'm planning to re-equip my hexapod robot with OpenServo hardware, as the old servo electronics tend to oscillate. With some fine-tuning of the control software I hope to get rid of that.

My robot has 18 servos to drive the legs (3 DOF per leg). I need nearly 2,5 meters of cabling to hook it all up. My question is if the capacitive bus loading is still tolerable. I know that this mainly depends on the bus speed. I'd like to run the system at 400 kHz, to get suitable throughput.

I'm currently changing the layout of the PCB to fit the parts I have available (I could not get the Zetex current monitor IC), so now would be the right time to add some I2C bus extenders if needed. I'm thinking of the P82B96, but I'm not sure if this is really needed.

Thank you,

Jan

btw: Happy Easter!
Back to top
View user's profile Send private message
Cliff



Joined: 23 Jan 2007
Posts: 150
Location: Saratoga, CA

PostPosted: Sun Apr 08, 2007 12:40 pm    Post subject: Reply with quote

Hi Jan,

If you are redesigning the OpenServo board, you should think about adding a ceramic resonator to run the AVR at 20MHz. At 8MHz. the AVR is not fully compliant with the I2C specification, running the I2C bus at 400KHz.

The place to use the P82B96 would be at your controller, with two or more P82B96's driving I2C branches. This would isolate the capacitance of the branches.

You could start without the P82B96's, organizing your servo wiring in branches and simply connect the branches in parallel at your controller. The branches should probably have additional pull-ups (10-20K) on the far end. If you see excessive I2C errors, you could then add the P82B96's at the controller for each of the branches.

By organizing in branches, if the 400KHz bandwidth of the I2C bus proves to be insufficient, you have the option of adding I2C channels to your controller for 400KHz. per branch.

Cliff
Back to top
View user's profile Send private message
jayph



Joined: 08 Apr 2007
Posts: 5

PostPosted: Sun Apr 08, 2007 2:56 pm    Post subject: Reply with quote

Hi Jan,

Sounds like we are doing some similar things as I also have a hexapod w/18 servo that I am requipping with OpenServo.

My motiviation is a bit different. Although the oscillation bothers me, what bothers me more is not being able to go closed loop without getting feedback from the servo.
Back to top
View user's profile Send private message
Jan



Joined: 08 Apr 2007
Posts: 10
Location: Germany, Greifswald to be precise

PostPosted: Mon Apr 09, 2007 7:23 am    Post subject: Reply with quote

Thank you for your answers.

It's a good hint to use one P82B96 per branch. I nearly ended up putting one into every servo Smile Embarassed

As I plan to do this modification for some time now, I've already ordered 20 ATmega8 for this purpose. So I will use 16 MHz crystals or resonators, because the maximum clock of the Mega8 is 16 MHz.

@jayph:

Quote:
My motiviation is a bit different. Although the oscillation bothers me, what bothers me more is not being able to go closed loop without getting feedback from the servo.


Position sensing is a nice feature, but I really need a tunable feedback loop, because the oscillations make the whole robot useless. How far did you get with your modifications?

Regards,

Jan
Back to top
View user's profile Send private message
jayph



Joined: 08 Apr 2007
Posts: 5

PostPosted: Mon Apr 09, 2007 3:41 pm    Post subject: Reply with quote

I've just barely started on the OpenServo thing. I ordered 3 of the completed OpenServo boards and have 3 servos waiting to be modified once the boards arrive.

My processor board doesn't have an I2C bus but it does have an general address/data bus so I'm designing an add-on card to handle I2C bus master. I'm also designing a little I2C slave board to hold 12 channels of ADC for sensors. I think I'll buy an RS-232 to I2C or such to do my initial experiments with the OpenServo modified servos. I'm also thinking about building an isolated 3DOF leg on a test stand to avoid taking my hexapod apart multiple times.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    OpenServo.com Forum Index -> Hardware All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group