Este tópico contém 1 resposta, possui 1 voz e foi atualizado pela última vez por  Leonardo 2 semanas .

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #430609

    Leonardo
    Participante

    Prezados,

    Iniciando no mundo Maker, me propus a montar um Arduino Uno + display LCD 20 x 4 + BMP 280. Após algumas horas operando sem problemas, o conjunto passa a operar de maneira errática, apresentando leitura de valores bem estranhos, e coincidentemente trava sempre nos mesmos valores de temperatura (-137.76.C), altitude (-767.71m) e pressão (1108.92 hPa). Ao reiniciar, volta ao normal, para travar novamente em um intervalo de tempo intermitente (5min-5h).

    Pontos de verificação:

    a) Chequei os esquemas de ligação (usei como referência os links abaixo);
    b) Chequei as tensões (5VDC para display, 3.3VDC para sensor);
    c) Troquei a fonte pela USB para eliminar possíveis oscilações de rede;
    d) Ao travar, continua transmitindo via serial monitor, apresentando os mesmos dados.

    Para o código, usei um exemplo genérico do BMP280 da Adafruit, depois usei o mesmo do exemplo do BMP180, adaptando para o BMP280 (desculpe não separar o código c/ tag HTML, não consegui fazer funcionar aqui):

    ————————————————————————————-
    // Programa : Sensor de temperatura e pressao BMP280
    // Autor : Baseado no código de FILIPEFLOP – https://www.filipeflop.com/blog/temperatura-pressao-bmp180-arduino/

    #include <Wire.h>
    #include <Adafruit_BMP280.h>
    #include <LiquidCrystal.h>

    LiquidCrystal lcd(2,3, 4, 5, 6, 7);

    Adafruit_BMP280 bmp280;

    int mostrador = 0;

    void setup()
    {
    Serial.begin(9600);
    lcd.begin(20,4);
    if (!bmp280.begin(0x76)) // Conectado em interface I2C, pino SDO em nível baixo
    {
    Serial.println(“Sensor nao encontrado !!”);
    while (1) {}
    }
    }

    void loop()
    {
    lcd.setCursor(0, 1);
    lcd.print(“Temp. : “);
    Serial.print(“Temperatura : “);
    if ( bmp280.readTemperature() < 10)
    {
    lcd.print(” “);
    lcd.print(bmp280.readTemperature());
    Serial.print(bmp280.readTemperature());
    Serial.println(” C”);
    }
    else
    {
    lcd.print(bmp280.readTemperature(),2);
    Serial.print(bmp280.readTemperature(),2);
    Serial.println(” C”);
    }
    lcd.print(” “);
    lcd.print((char)223);
    lcd.print(“C “);

    if (mostrador == 0)
    {
    lcd.setCursor(0, 2);
    lcd.print(” “);
    lcd.setCursor(0, 2);
    lcd.print(“Altit.: “);
    Serial.print(“Altitude : “);
    lcd.print(bmp280.readAltitude());
    Serial.print(bmp280.readAltitude());
    Serial.println(” m”);
    lcd.print(” m”);
    }
    if (mostrador == 1)
    {
    lcd.setCursor(0, 3);
    lcd.print(” “);
    lcd.setCursor(0, 3);
    lcd.print(“Press.: “);
    Serial.print(“Pressao : “);
    lcd.print(bmp280.readPressure()/100);
    Serial.print(bmp280.readPressure()/100);
    Serial.println(” hPa”);
    lcd.print(” hPa”);
    }

    delay(3000);
    mostrador = !mostrador;
    }
    —————————————————

    Ligação do BMP280:
    VCC – 3.3V
    GND – GND
    SCL – A5
    SDA – A4
    CSB e SDO – desligados

    Alguma sugestão de como fazer o debug dessa situação ou isso está com cara de defeito no BMP280?

    Referências usadas:

    Controlando temperatura e pressão com o BMP180

    Use o BMP280 para medir temperatura, pressão e altitude

    Obrigado

    #452376

    Leonardo
    Participante

    Após mais de um mês continuo com o mesmo problema. Abri a mesma pergunta no fórum de Arduino:

    https://forum.arduino.cc/index.php?topic=696310.0

Visualizando 2 posts - 1 até 2 (de 2 do total)

Você deve fazer login para responder a este tópico.