<< return to Pixycam.com

pull up resistor for i2c

hello everybody

i know pixy does have 4.7K pullups on the I2C signals, i need to connect 3 pixy on the bus, so, that resistor may be enough, or should I add another 2 for sda and scl?

thanks

Gianni,

I’m not the one to answer your enquiry as I’ve yet to get one CAM working from my raspberry Pi but the i2c lines would normally run in parallel from CAM to CAM and the 4K7 pullup resistors on EACH board just adds to the total pullup. In parallel that’s 4k7/3 = 1K3 ohm. I’m not sure if the 1K3 is a problem with regard to loading down the source devices. i.e. The controller Ilow for SCL and controller/CAM Ilow for SDA. At 5V the devices would need to source 5/1.3 = 3.8mA

I presently have a Pi circuit driving three i2c chips all wired in parallel but only use one pullup to 3.3V on the i2c lines.

My concern at the moment is the 5V pullup on the CAM when the Pi only allows 3.3V signals. It would be nice to be able to disconnect the CAM pullups from 5V but I don’t want to unsolder them on the board. My scheme at the moment would add a pull-down to GND of 10K on the i2c lines to limit their high to 3.3V.

David Whiteley

Hello,
The pullup resistors on Pixy on the I2C signals are 10K (sorry for the confusion). This should result in very little current for 3.3V devices.

Hope this helps!

it means that connection doesn’t need another pull up resistor? sorry but i don’t understand much about electronics

I would say initially your three CMUCAM5’s connected via an I2C bus do NOT require additional pull-up resistors.

NOTE. The length of your I2C wires will affect performance.

REF: Edward correctly states the pullups are 10K ohm which matches the actual marking of R14, R15. i.e. ‘01C’ = 100 x 100 = 10K ohm. (ref EIA-96) My printout of the Pixy schematic however shows R14 and R15 as 1K ohm. (I’m not sure where I came up with 4.7K? in my earlier response, but it was late in the day!)

thanks David,

it’s the same if i use the arduino due? because if i connect due instead mega it doesn’t work!

CMUCAM5 I2C to ARDUINO DUE and MEGA:

I have NO experience with Arduino but I think the DUE is a 3.3V device and the MEGA is a 5V device. This might be a problem if the DUE won’t take 5V on its IO lines. The CMUCAM5 is a 5V device, the pullups go to 5V, both I2C data and clock are being pulled up to 5V. Unless the DUE has protection for such, it’s possible the DUE IO lines have been damaged. You will have to research the DUE IO signal Thisspecification.

If 5V is a problem with the DUE it may be possible to add resistors to ground on the data/clock lines which reduce the pullup to 3.3V. If the CMUCAM5 pullups are 10K then when a DUE is connected add 18K to ground on I2C data and clock for EACH camera. This gives a 3.2V pullup. Hopefully the CMUCAM5 will accept these levels as signals. OR Two cameras need one pulldown of <9.7Kohm, three cameras need one pulldown of <6.4Kohm

REF: pull-down r/3.3V = 10K/(5V-3.3V), r = 10x3.3/1.7 = 19.4Kohm. It would be nice to use 20K BUT this makes the pullup > 3.3V and we need <=3.3V so I chose an 18K pull-down resistor.

NOTE: this is the same problem I will have with 3.3V Raspberry Pi but I’ve yet to test that connection. To-date I’ve only managed a USB connection to Ubuntu Linux.

N.B. I’ve added my calculations in the hope someone else will verify my muddled thought processes!

Regarding potentially damaging your DUE because of the 10K pullup resistors to 5V:

The pullup resistors are 10K, which is fairly large. There are clamping diodes on the DUE I/O pins that prevent overvoltage from reaching the processor. Assuming a .7V voltage drop across the protection diode, there will be 4.0V on the DUE’s I/O pin. To figure out how much current is going into the DUE, calculate (5.0V-4.0V)/10k ohm = 100uA. 100uA (approximately) is too little to cause damage.