Forgot your password?
No account? Register one!
April 13, 2010
Product BOB-08849 |
about 2 years ago
It requires 5 volts to power it, but the other pins require 3.3 volts!
Product SEN-10955 |
about 2 years ago
After researching on the forums and a helpful email from sparkfun, I have concluded (and confirmed via experimentation) that you do NOT need a logic level converter. It will work just fine provided you power it via the 3.3v pin on the arduino. The key to understanding why this works is knowing that I2C uses “open drain” to send signals. That is, the valid states the I2C pins are set to will be ground for “low” and floating for “high”. The pull up resistors on this board set the voltage to 3.3 whenever the pin is in the floating state. Properly set up, the arduino should never set those pins to 5 volts. As noted in the sample code, it’s important in this case to disable the internal pullup resistors that set the floating state of these pins to 5 volts. You can’t do that with the built in wire library, so you have to use a different one. The interrupt pins work because the arduino should only be reading from them, and 3.3 volts are enough to register as “high”. So wiring these devices to an arduino directly works just fine, as long as you are very careful to NEVER let any of the pins they are connected to be set to 5 volts. Make sure you upload a sketch to set the pins BEFORE you wire them in, in case you have something already loaded on the arduino that sets one of the pins to 5 volts. If you set one of the pins as digital output, you could damage this device.
If I’m powering one of these off of the 3.3 volt pin on an arduino that is talking to other 5 volt devices, do I need a logic level converter like http://www.sparkfun.com/products/8745 to insure the signals are 3.3?
The comments in the example code seems to imply the code takes care of the issue so I would not, but I don’t see how it does that.