Go Down

Topic: Does Chinese Clonses of Arduino Pro Mini have I2C Pullup Resistors? (Read 512 times) previous topic - next topic

yasinzaii

I was studying the shematic diagram of  Arduino pro mini from sparkfun and I found that there are providing optional pullup resistors for I2C communication at the back.

I check my Chinese clone and I am sure there are no pads for connecting I2C pullup resistors. Maybe they have mounted it already onto the board. But I couldn't find it.

I am sharing the picture of the board I am using. Can anyone tell me if my board has pull-up resistors at I2C pins?

What about these two components marked in red ? Seems like ceramic capacitors to me.





 

Author of Adduino.com. Loves to talk and share about Microcontrollers.

PaulRB

Yes, those are caps.

I don't think there will be any pull-ups on the board, but the Wire library enables the internal pull-ups. Many i2c slave modules (sensors etc) often have pull-up resistors fitted, so combined with the internal pull-ups, this is often sufficient, as long as the wires are short.

CrossRoads

The internal pullups are 30K to 50K. If you doing I2C add 3.3K pullups if running at 3.3V, 8 MHz, and 4.7K for 5V/16 MHz.

The circled devices are typically 0.1uF caps on the VCC, AVCC, or Aref pins.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

yasinzaii

The circled devices are typically 0.1uF caps on the VCC, AVCC, or Aref pins.
yeah, I was thinking the same. However, I will track and see which pins they are connected to
Author of Adduino.com. Loves to talk and share about Microcontrollers.

jremington

There are several different clones of the Pro Mini. None that I have looked at have external pullup resistors for the I2C lines.  It is easy to add them.

ShermanP

I don't think it would be a good idea to have external pullups on I2C lines installed on the Arduino board.  Many devices you will connect to have their own pullups, and doubling up on pullups could lead to excessive currents.  The DS3231 RTC module for example has its own 4.7K pullups on SDA and SCL, which is plenty.  Better to add them if and when you need them.


yasinzaii

I don't think it would be a good idea to have external pullups on I2C lines installed on the Arduino board.  Many devices you will connect to have their own pullups, and doubling up on pullups could lead to excessive currents.  The DS3231 RTC module for example has its own 4.7K pullups on SDA and SCL, which is plenty.  Better to add them if and when you need them.


So if the device doesn't come with its own pullup using the internal pullups of the atmega328p is preferred? Is it right ?
Author of Adduino.com. Loves to talk and share about Microcontrollers.

jremington

The internal pullups very often do not meet the specifications for reliable communication. They are too large.
Quote
I don't think it would be a good idea to have external pullups on I2C lines installed on the Arduino board.
Doing so is required by some circumstances. And some Arduino boards have pullups already installed (the Due, for example).

Under other circumstances, external pullup resistors need to be removed, and I've run into both situations. Each I2C device is different and every new collection of them should be evaluated independently.

yasinzaii

The internal pullups very often do not meet the specifications for reliable communication. They are too large.Doing so is required by some circumstances. And some Arduino boards have pullups already installed (the Due, for example).

Under other circumstances, external pullup resistors need to be removed, and I've run into both situations. Each I2C device is different and every new collection of them should be evaluated independently.
Got it. Thanks
Author of Adduino.com. Loves to talk and share about Microcontrollers.

westfw

Quote
None that I have looked at have external pullup resistors for the I2C lines.
Don't forget that the I2C pins on an ATmega328 chip are also/normally analog inputs, where the strong-ish pullups specified by I2C would be pretty undesirable...

jremington

Agreed, but who knows what the anonymous clone board designers are thinking? So I checked.

yasinzaii

Don't forget that the I2C pins on an ATmega328 chip are also/normally analog inputs, where the strong-ish pullups specified by I2C would be pretty undesirable...

What is meant by strongish pullups?
Author of Adduino.com. Loves to talk and share about Microcontrollers.

westfw

Quote
What is meant by strongish pullups?
A "weak pullup" is usually a pretty large resistor (the AVR internal pullups are supposed to be about 40-50k ohms), usually used on a CMOS digital input that doesn't need any "current" to change state.  You can apply nearly any sort of external signal, and it will over-power a "weak pull-up", because they're "weak."
A "strong" pullup is a much smaller resistor (2.2k or less, usually) designed to provide actual current to circuitry that requires it.  Notably TTL Logic and bipolar transistors.  They require "strong" signals to override them.
The 4.7k resistors generally recommended for I2C are in between those values.  definitely strong enough to interfere with an analog signal (it would act like a voltage divider, with exact behavor dependent on the impedance of the analog source.)  So "strong-ish" - "somewhat strong."

6v6gt

Show also a picture of the reverse side of the board. You may see solder pads near those two holes which are above the label A3. Those two holes are the I2C connections (A4 and A5) sometimes labeled SDA and SCL.

yasinzaii

A "weak pullup" is usually a pretty large resistor (the AVR internal pullups are supposed to be about 40-50k ohms), usually used on a CMOS digital input that doesn't need any "current" to change state.  You can apply nearly any sort of external signal, and it will over-power a "weak pull-up", because they're "weak."
A "strong" pullup is a much smaller resistor (2.2k or less, usually) designed to provide actual current to circuitry that requires it.  Notably TTL Logic and bipolar transistors.  They require "strong" signals to override them.
The 4.7k resistors generally recommended for I2C are in between those values.  definitely strong enough to interfere with an analog signal (it would act like a voltage divider, with exact behavor dependent on the impedance of the analog source.)  So "strong-ish" - "somewhat strong."

A "weak pullup" is usually a pretty large resistor (the AVR internal pullups are supposed to be about 40-50k ohms), usually used on a CMOS digital input that doesn't need any "current" to change state.  You can apply nearly any sort of external signal, and it will over-power a "weak pull-up", because they're "weak."
A "strong" pullup is a much smaller resistor (2.2k or less, usually) designed to provide actual current to circuitry that requires it.  Notably TTL Logic and bipolar transistors.  They require "strong" signals to override them.
The 4.7k resistors generally recommended for I2C are in between those values.  definitely strong enough to interfere with an analog signal (it would act like a voltage divider, with exact behavor dependent on the impedance of the analog source.)  So "strong-ish" - "somewhat strong."

Thanks for the explaination got it :)
Author of Adduino.com. Loves to talk and share about Microcontrollers.

Go Up