| View previous topic :: View next topic |
| Author |
Message |
Jan
Joined: 08 Apr 2007 Posts: 10 Location: Germany, Greifswald to be precise
|
Posted: Sun Apr 08, 2007 11:00 am Post subject: I2C bus cabling maximum length, maximum number of nodes |
|
|
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 |
|
 |
Cliff
Joined: 23 Jan 2007 Posts: 150 Location: Saratoga, CA
|
Posted: Sun Apr 08, 2007 12:40 pm Post subject: |
|
|
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 |
|
 |
jayph
Joined: 08 Apr 2007 Posts: 5
|
Posted: Sun Apr 08, 2007 2:56 pm Post subject: |
|
|
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 |
|
 |
Jan
Joined: 08 Apr 2007 Posts: 10 Location: Germany, Greifswald to be precise
|
Posted: Mon Apr 09, 2007 7:23 am Post subject: |
|
|
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
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 |
|
 |
jayph
Joined: 08 Apr 2007 Posts: 5
|
Posted: Mon Apr 09, 2007 3:41 pm Post subject: |
|
|
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 |
|
 |
|