Arduino Uno R3, MS5611 & I2C Level Shifter

Hello everyone,

I need your help.

I have the following setup:

Arduino Uno R3, Proto Shield with a MS5611 pressure barometric sensor board and Logic Level Converter (I2C Level Shifter).

I am also using the library from “fabio”.

My problem is that I am getting nothing reported on my serial output screen.

On the MS5611 board I soldered the bridges for adress 0x76, I2C and pull-up? (near R2).

I did not solder the bridges on the Logic Level Converter.

Are these measures correct for use with my setup?

I would be happy for any help.

Thank you.

Leo

Hi Leo,

Can you enable the solder bridge on the 5v side of LLC please? Next if it doesn’t works you can test with this code todbot.com/blog/2009/11/29/i2csc … s-scanner/.
Let me know.

Ok, I soldered the bridge on the 5 volt side:

Then tried it once more. It did not read anything.

I then loaded up the I2CScanner.pde.

When executed it stops at:

“I2CScanner ready!
starting scanning of I2C bus from 1 to 100…”

The Led on the Arduino is not blinking!

I then removed the MS5611 board. The result was the same. No readout.

Next step I did was to remove the SDA line from the Arduino. The program read out all the adresses.

I2CScanner ready!
starting scanning of I2C bus from 1 to 100…
addr: 1 addr: 2 addr: 3 addr: 4
addr: 5 addr: 6 addr: 7 addr: 8
addr: 9 addr: 10 addr: 11 addr: 12
addr: 13 addr: 14 addr: 15 addr: 16
addr: 17 addr: 18 addr: 19 addr: 20
addr: 21 addr: 22 addr: 23 addr: 24
addr: 25 addr: 26 addr: 27 addr: 28
addr: 29 addr: 30 addr: 31 addr: 32
addr: 33 addr: 34 addr: 35 addr: 36
addr: 37 addr: 38 addr: 39 addr: 40
addr: 41 addr: 42 addr: 43 addr: 44
addr: 45 addr: 46 addr: 47 addr: 48
addr: 49 addr: 50 addr: 51 addr: 52
addr: 53 addr: 54 addr: 55 addr: 56
addr: 57 addr: 58 addr: 59 addr: 60
addr: 61 addr: 62 addr: 63 addr: 64
addr: 65 addr: 66 addr: 67 addr: 68
addr: 69 addr: 70 addr: 71 addr: 72
addr: 73 addr: 74 addr: 75 addr: 76
addr: 77 addr: 78 addr: 79 addr: 80
addr: 81 addr: 82 addr: 83 addr: 84
addr: 85 addr: 86 addr: 87 addr: 88
addr: 89 addr: 90 addr: 91 addr: 92
addr: 93 addr: 94 addr: 95 addr: 96
addr: 97 addr: 98 addr: 99 addr: 100

done

The same happened when I removed SCL and left SDA connected.

Nothing happens when SCL and SDA are connected to the Arduino.

Can you remove the LLC? You have to supply the MS5611 with 3.3v output of your arduino. You connect SDA and SCL between arduino and MS5611.
It’s very important to disable the software pull-up.

“It’s very important to disable the software pull-up.”

How is that done?

I want to be sure that I don’t do anything wrong.

This are define, you can put what you want:
#define I2C_PULLUPS_ENABLE PORTC |= 1<<4; PORTC |= 1<<5; // PIN A4&A5 (SDA&SCL)
#define I2C_PULLUPS_DISABLE PORTC &= ~(1<<4); PORTC &= ~(1<<5);

Thank you.

I can report partial success.

To disable the pull-ups I went a different route and removed the follwing in \Wire\utility\twi.c

// digitalWrite(SDA, 1); // Commented out so the pull-ups will now be disabled by default
// digitalWrite(SCL, 1); // Commented out so the pull-ups will now be disabled by default.

I then removed the LLC from the board and hooked up the MS5611 directly to the Arduino.

I am now able to read the data from MS6511 board.

However using Fabio’s library I’m only getting a constant °C value and 0 for pressure and altitude. Something is not working.

“temp: 20.00 degC pres: 0.00 mbar altitude: 0.00 m”

I then put together bits and pieces of code from the inet and that worked.

“Pressure [hPa]: 1084.93 Temperatur [C]: 26.09 - P raw: 8636208.00 T raw: 7793700.00”

It still needs improvement because the data is not 100% correct.

What I’m not happy about is that the LLC is not working. Please advice me what I need to do to get it to work.

Can you retry with LLC and enable the solder bridge of the 3.3v side?
After that I have no idea. Let me know.

Success!

I soldered the bridge on the 3.3v side and now the MS5611 is being recognized.
My MS5611 program and I2CSanner is now working with the LLC.

So, to sum up my working configuration is as follows:

  • LLC board: 5v and 3.3v bridges soldered.
  • MS5611 board: Bidges for adress 0x76, I2C and pull-up are soldered

Unfortunately the I2CScanner cannot find the MS5611 board with or without the LLC. It would have been nice but that is not important.

Leo

Update on the I2C Scanning issue.

The code in the link drotek.fr/forum/viewtopic.php?f=7&t=17#p51 does not work.

Instead use this code to successfully probe your Arduino board:

[code]// I2C Scanner
// Written by Nick Gammon
// Date: 20th April 2011

#include <Wire.h>

void setup() {
Serial.begin (115200);
Serial.println ();
Serial.println (“I2C scanner. Scanning …”);
byte count = 0;

Wire.begin();
for (byte i = 1; i < 120; i++)
{
Wire.beginTransmission (i);
if (Wire.endTransmission () == 0)
{
Serial.print (“Found address: “);
Serial.print (i, DEC);
Serial.print (” (0x”);
Serial.print (i, HEX);
Serial.println (")");
count++;
delay (1); // maybe unneeded?
} // end of good response
} // end of for loop
Serial.println (“Done.”);
Serial.print (“Found “);
Serial.print (count, DEC);
Serial.println (” device(s).”);
} // end of setup

void loop() {}
[/code]

Now I am happy :slight_smile:

Leo

I’m happy to see you are happy!! :laughing:
But I don’t understand why the code doesn’t work…
See you

My project is now finished.

Project ALTDuino: ALTDuino.de

I’m posting it here because I’m using some DroTek components :slight_smile:

@DroTek: It would be nice if you would use less thicker PCB’s in the future. The MS5611 sensor board is too too thick and therefore too heavy :wink:

Great project!!! Very interesting!
If you want a special board for your application and if the board is asked by many people so we can create it with your specifications.