I'm working with a BMA180 3-axis accelerometer (datasheet: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Accelerometers/BST-BMA180-DS000-07_2.pdf ). It is in a Sparkfun breakout board with the following schematic: http://www.sparkfun.com/datasheets/Sensors/Accelerometer/BMA180_Breakout_v11.pdf
Page 8 of the sensor's datasheet indicates that the sensor should be powered with about 2.4V and maximum rating is about 3.6V. If you check page 13 of the same datasheet it states that absolute maximum rates for both VDD and VDDIO is 4.25V.
No problem there.
My first question is this: Whay is VDDIO? I read it's the supply voltage for the digital interface, but that didn't really clear things up for me. I placed a jumper between this pin and VDD and applied the 3.3V from an Arduino UNO.
3.3V is still within the range of operation, but when I meassured the voltage on the VDD pin it said about 4.2V. It scared the living crap out of me because that's very close to the absolute maximum so I pulled the plug.
My second and third questions are: why did the voltage suddenly rissed when I placed a jumper between both pins and supplied it with 3.3V? Is it a good idea to place the jumper or should I better use 2 different supply sources?
Thnx in advance :]
It sounds like you can run the device core and the digital interface on 2 different voltages, e.g. 2.4v for the core (Vdd) and 3.3v for the i/o (Vddio). You might want to do this in a battery-powered application if reducing Vdd to 2.4v significantly cuts the power consumption.
Did you connect an Arduino pin configured as an output directly to an input pin on the BMA180? If so, when the Arduino pin is set to logic high, it will most likely supply 5v through the input protection diode in the BMA180 to Vddio of the BMA180. If you want to connect an output pin of a 5v Arduino to an input pin on the BMA180, you will need to use a voltage divider to reduce the 5v to 3.3v. Alternatively, use a 3.3v Arduino.
Sorry I can't be more specific but my ISP isn't letting me access the datasheet or the schematic right now.
It lets me, but I should be able to power both with the same voltage right?
I connected the 3.3V pin of the Arduino UNO to both VDD and VDDIO. I didn't use a digital output pin 'cuz it would've fried the BMA180 I believe (because it supplies 5.0V).
However, I still wonder why the voltage messured about 4.2V when both pins of the BMA180 were connected to the same supply voltage.
Did you have the SDA and SCL lines connected? If you did they are internally pulled up to 5V inside the Arduino which would explain the voltage increase.
If you disable the internal pull-ups and put external pull-ups to the 3.3v supply you can safely use that 3.3v sensors with an 5v Arduino.
@wayneft ummm... can't find the SCA and SCL lines... allow me to describe how I connected the whole thing:
3.3V supply from the Arduino UNO to both VDD and VDDIO of the BMA180
GND pin from Arduino UNO to GND of the BMA180
pin 10 (chip select in SPI mode) --> CS of BMA180
pin 11 (MOSI in SPI mode) --> SDI of BMA180
pin 12 (MISO in SPI mode) --> SDO of BMA180
pin 13 (SCK in SPI mode) --> SCK of BMA180
I'm not sure which the SDA and SCL lines are :S
EDIT: (I just read an article about I2C. Now I know what you meant. But no, they were not connected)
@Senso so basically if I arrange a 1 pull-up resistor on the 3.3V supply line? My teachers taught me about pull-up and pull-down resistors, but I haven't quite figured it out :S I mean... Just read the article on Wiki, but still a bit unclear for me :S I'll ask my friends around here and also some teachers about it :] but I really appreciate it!
I tested the circuit again but a little different. I used an external power supply with 2.0V for VDD of the sensor and 1.5V for VDDIO. I connected everything and it was all nice and regular. BUT when I started communication from the arduino to the sensor the voltage on the power supply (this is a REGULATED power supply BK Precision) jumped from 1.5V to ~3.3V on the VDDIO line only. Once I stopped communications the line remained at ~3.3V. I did the same experiment setting the VDDIO line at 2.0V and I had the same result. I still can't figure out why the line gets pulled to ~3.3V.
Any ideas? :S
You may have damaged the accelerometer by connecting it the way you did. Because you are using SPI mode, CLK, SDO and CS from the Arduino are sending 5 volt signals to a device that can only handle 3.6V (absolute max is 4.25V per the datasheet). You can try running those 3 lines across voltage dividers to drop the voltage down to the allowed range and see if it works. If it doesn't then you've more than likely damaged the chip.
@wayneft I dadn't thought of that. However, the chip is actually working. I've been reading data in and out of it for a couple of days now, but I did check the voltage on the lines and found out the following:
First off, I believe I'm making a mistake because the GND of the sensor is not the same as the GND of the arduino. I believe GND should be the same for both.
Now I connected a tester to GND of the sensor (that is, 0.0-2.0V) and the pins meassured about ~3.3V max. Tested the pins with the GND of the Arduino and, in fact, they were about ~5.0V.
The sensor is actually working: I managed to read and write to it, but I don't know if the reading I'm getting are correct.
Yes you should have the GNDs connected together between the two. You also need to stop sending 5volts into the device because you'll greatly shorten the life of the device by exceeding the maximum levels.
As for verifying if your readings are correct, just place the accelerometer on a flat surface and should be reading roughly 0g for X and Y and 1g for Z.
Just talked to the head of the electronics dept here at my university and he told me a couple of things.
First, just like you said, I'm about to fry my sensor if I don't stop this... So it's stopped now... And yes, both GNDs should be connected together... I really can't believe I'm making such stupid mistakes, but I did... Now time to fix it.
He also adviced that I use diodes or zenner diodes to regulate voltage. I just hope I can fit them all in a very small proto (lilypad proto).
I really want to thank you for your advice :] you have helped me greatly!
I'll post once I've got everything in place :]