Z-Uno: Probleme mit Luftdrucksensor BMP180

knobbas
Posts: 49
Joined: 23 Nov 2016 19:02

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by knobbas »

Also jetzt wird's wirklich seltsam. Irgendwie habe ich das Gefühl, dass das Problem nicht an den Sensoren liegt, sondern am Z-Uno selbst ...

Ich habe jetzt ein paar Varianten der Stromversorgung getestet.

1. USB Powered 5V:
läuft perfekt ohne Probleme > 24 Stunden

2. Batterie 2x AA 1,5V = 3V -> Pin 3V:
läuft ca. 1 Stunde, dann hängt sich der Z-Uno auf (grüne LED leuchtet dauerhaft)

3. Batterie 2x AA 1,5V + DC StepUp to 5V -> Pin 5V
Ausgangsspannung des StepUp gemessen = 5,1V
läuft ca. 1 Stunde, dann hängt sich der Z-Uno wieder auf (grüne LED leuchtet dauerhaft)

4. Batterie 9V Block -> Pin Vin
Läuft nur 10 Minuten, dann hängt sich der Z-Uno wieder weg.
Hier hat es mir sogar den BMP280 zerlegt. Der Sensor ist hinüber, liefert keine Werte mehr.

Rückbau auf USB Power:
Läuft, nur der BMP280 liefert weiterhin keine Werte, also nen neuen Sensor rein, sofort wieder plausible Messwerte.
Wieder den alten BMP280 rein, keine Messwerte. Der Sensor ist also tatsächlich gestorben.


EDIT:
Ich hab mal eine Anfrage im englischsprachigen Z-Uno Board gestellt. Mal gucken ob da noch jemanden was einfällt :-)
michap
Posts: 437
Joined: 26 Mar 2013 10:35
Contact:

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by michap »

wo hast Du den BMP280 angeschlossen (Spannung) ?

Bei mir läuft der Z-Uno wirklich inzwischen ohne Probleme mit dem BMP und einigen anderen Sensoren.
Sowohl im sleep als auch im "always on" Betrieb.

Nutzt Du den Beispiel-Sketch vom BMP280? Irgendwelche Modifikationen?

Übrigens... Wie empfängst Du die Werte? Per USB? Oder per UART pin? Oder per Z-Wave?
Eine gleichzeitige Stromversorgung per USB und Batterie ist nicht zulässig !!

Michael
knobbas
Posts: 49
Joined: 23 Nov 2016 19:02

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by knobbas »

HI Michael,

also, zuerst hatte ich den Z-Uno im Allways on Mode und per USB am Rechner und dort die gemessenen Werte kontrolliert. Das lief komplett ohne Probleme. Daher habe ich dann auf Sleep Mode und Z-Wave umgestellt. Da ist dann natürlich kein Monitoring oder Serial USB mehr möglich.
Hier habe ich dann die verschiedenen Spannungsquellen durchprobiert wobei nur der USB Power funktionierte. Alle anderen führen dazu, dass sich der Z-Uno aufhängt. In welchem Status und an welcher Stelle des Sketches kann ich leider nicht sagen.

Ich nutze einen modifizierten Sketch.

Code: Select all

#include <Wire.h>
#include <ZUNO_BME280.h>
#include <ZUNO_AM2320.h>
int BH1750address = 0x23; //setting i2c address

byte buff[2];

long lightLux;
long pressureSend;
word temperatureSend;
word temperatureAM2320Send;
word humidityAM2320Send;
int alt = 344;

BME280 bme;
AM2320 am2320;

// set up channel
ZUNO_SETUP_CHANNELS(
      ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_LUMINANCE,
                             SENSOR_MULTILEVEL_SCALE_LUX,  
                             SENSOR_MULTILEVEL_SIZE_FOUR_BYTES, 
                             SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS, 
                             getterLight),
      ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_BAROMETRIC_PRESSURE,
                             SENSOR_MULTILEVEL_SCALE_KILOPASCAL,
                             SENSOR_MULTILEVEL_SIZE_FOUR_BYTES, 
                             SENSOR_MULTILEVEL_PRECISION_TWO_DECIMALS, 
                             getterPressure),
      ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE,
                             SENSOR_MULTILEVEL_SCALE_CELSIUS,  
                             SENSOR_MULTILEVEL_SIZE_TWO_BYTES, 
                             SENSOR_MULTILEVEL_PRECISION_ONE_DECIMAL, 
                             getterTemp),
      ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE,
                             SENSOR_MULTILEVEL_SCALE_CELSIUS,  
                             SENSOR_MULTILEVEL_SIZE_TWO_BYTES, 
                             SENSOR_MULTILEVEL_PRECISION_ONE_DECIMAL, 
                             getterTempAM2320),
      ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_RELATIVE_HUMIDITY,
                             SENSOR_MULTILEVEL_SCALE_PERCENTAGE_VALUE,  
                             SENSOR_MULTILEVEL_SIZE_TWO_BYTES, 
                             SENSOR_MULTILEVEL_PRECISION_ONE_DECIMAL, 
                             getterHumAM2320)                             
);

ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_SLEEPING); // SLEEPING MODE
//ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_FREQUENTLY_AWAKE);
  
void setup() {
  Serial.begin(9600);
  Wire.begin();
  am2320.begin();
  bme.begin();
  bme.setOversampling(4);
}
  
void loop() {

  // Auslesen BMP280 I2C
    char result = bme.startMeasurement();
    // Get Temperature
    //Serial.print("Temperature = ");
    temperatureSend = bme.getTemperature100()/10;
    //Serial.print(temperatureSend/10.00);
    //Serial.print(" *C / ");
        
    // Get Pressure
    //Serial.print("Pressure = ");
    //float Pressure = bme.getPressure100();
    //Serial.print(Pressure);
    //Serial.print(" Pa / ");

    //Serial.print("RealPressure = "); Serial.print(((Pressure) / pow(1.0 - alt/44330.0, 5.255))/100); Serial.print(" hPa / ");  
    pressureSend = ((bme.getPressure100()) / pow(1.0 - alt/44330.0, 5.255));

  //Serial.println("Start Messument BH1750");
  // Auslesen BH1750 I2C
    uint16_t val=0;
    BH1750_Init(BH1750address);
    delay(200);
  
    if(2==BH1750_Read(BH1750address))
    {
      val=((buff[0]<<8)|buff[1])/1.2;
      val=val+1;
      lightLux = val;
    }
    //Serial.print(lightLux); Serial.print(" Lux / ");

  //Serial.println("Start Messument AM2320");
  // Auslesen AM2320 I2C
    float temp = am2320.getTemperature();
    temperatureAM2320Send = word(temp*10);
    //Serial.print(temp); Serial.print(" C / ");

    float hum = am2320.getHumidity();
    humidityAM2320Send = word(hum*10);
    //Serial.print(hum);  Serial.println(" %");

  //Serial.println("--------------------");

  /*
  Serial.println(temperatureSend);
  Serial.println(pressureSend);
  Serial.println(lightLux);
  Serial.println(temperatureAM2320Send);
  Serial.println(humidityAM2320Send);
  */
  
  zunoSendReport(1);
  zunoSendReport(2);
  zunoSendReport(3);
  zunoSendReport(4);
  zunoSendReport(5);
  
  //delay(20000);
  zunoSendDeviceToSleep();
}

int BH1750_Read(int address) //
{
  int i=0;

  //Serial.println(F("Read function: "));   // added
 
  Wire.requestFrom(address, 2);
  while(Wire.available()) //
  {
    buff[i] = Wire.read();  // receive one byte

    //Serial.print(buff[i], DEC);   // added
    //Serial.print(F(", "));   // added

    i++;
  }

  return i;
}

void BH1750_Init(int address)
{
  Wire.beginTransmission(address);
  Wire.write(0x10);//1lx reolution 120ms
  Wire.endTransmission();
} 


long getterLight() {
  return lightLux;
}

long getterPressure() {
  return pressureSend;
}

word getterTemp() {
  return temperatureSend;
}

word getterTempAM2320() {
  return temperatureAM2320Send;
}

word getterHumAM2320() {
  return humidityAM2320Send;
}
michap
Posts: 437
Joined: 26 Mar 2013 10:35
Contact:

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by michap »

Hallo,

ich würde zunächst mal versuchen im "always on" weiterzuarbeiten.

Also selbes Programm wie mit USB Power - aber dann eben mit Batteriebetrieb.

Ausserdem würde ich den AM2320 nicht mit 3V betreiben - ihn als erstmal "abklemmen"
(evtl später wieder zuschalten)

Das Ganze dann alle 30 Sekunden an das Gateway reporten lassen und im Gateway-Log verfolgen.
(wenn man keine Möglichkeit hat, über serial1 das Log vom Z-Uno zu empfangen.
Ein einfacher TTY Konverter (kostet wenige Euro) ist da recht hilfreich...)

Wenn der Z-Uno hier stabil läuft, dann kann man das selbe im sleeping mode probieren.

Nicht vergessen, bei jedem Wechsel der Eigenschaften muss der Z-Uno aus dem Gateway excluded und neu included werden - wenn man nicht das entsprechende Flag gesetzt hat.

So bekommt man zumindest das Problem erstmal isoliert - sleeping oder Batterie ;)

Michael
knobbas
Posts: 49
Joined: 23 Nov 2016 19:02

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by knobbas »

Ja, das mit dem debugging ist echt ein Problem bei dem Teil ;-)
Das mit 2xAA, also 3V hab ich inzwischen aufgegeben
Habs gerade nochmal mit dem StepUp Converter versucht, der AM2320 hängt jetzt am 5V Pin - da sollte er keine Probleme mit der Spannung haben. Aber der Z-Uno hat sich schon nach dem ersten Sleep Zyklus wieder verabschiedet.
Auf USB läuft weiterhin alles stabil. Das Problem ist also nicht sleeping sondern definitiv die Batterie :-(

Jetzt bin ich mir allerdings unsicher. Kann ich den 5V Pin überhaupt zum einspeisen von 5V benutzen?
Mit 5V vom USB läuft alles, 5V vom StepUp am 5V Pin und der Uno schmiert sofort ab.
Das Experiment mit 9V an Vin möchte ich nicht widerholen. Einen BMP hats mir da ja schon zerlegt, hab nur noch einen übrig ;-)
michap
Posts: 437
Joined: 26 Mar 2013 10:35
Contact:

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by michap »

mal ohne sleep probiert?
Und exclude/include nicht vergessen...

5V zum Speisen geht - ich speise einen Z-Uno mit einer Lipo Zelle.

Übrigens - beim sleep muss man das wakeup imController setzen - steht defaultmässig auf 1 Tag :)
Deswegen... immer zuerst ohne sleep probieren.

Michael
knobbas
Posts: 49
Joined: 23 Nov 2016 19:02

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by knobbas »

Ok, jetzt hab ich ihn mal mit AllwaysOn am laufen - mit 30 Sekunden Interval. Läuft seit ein paar Minuten mit dem StepUp auf 5V
Vorher hatte ich SleepMode mit 240 Sekunden Wakeup.

Das bringt mich aber im Endeffekt auch nicht weiter wenn er sich im SleepMode auf Batterie immer wieder aufhängt :roll:
Auf USB Power läuft er ja Fehlerfrei, auch im SleepMode.

Das mit dem ständigen exclude/include nervt auch irgendwie. Gibts da keine andere Lösung ?
Hab den inzwischen glaub schon 20 mal includiert/excludiert ...
michap
Posts: 437
Joined: 26 Mar 2013 10:35
Contact:

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by michap »

knobbas wrote:Das mit dem ständigen exclude/include nervt auch irgendwie. Gibts da keine andere Lösung ?
http://z-uno.z-wave.me/Reference/ZUNO_SETUP_DEBUG_MODE/
knobbas wrote:Das bringt mich aber im Endeffekt auch nicht weiter wenn er sich im SleepMode auf Batterie immer wieder aufhängt
Nimm mal einen dicken Elko und setze ihn an den 5V step-Up.
Ich hatte den Effekt auch schon, dass der Z-Uno (auch macher ESP) mit einem Step-Up nicht "will".
Wenn man eine Batterie ranhängt (3xAAA) geht es dann nämlich - oder ein 5V Netzteil.

Der Step-Up ist immer an? Oder schaltest Du den auch noch irgendwie zu?

Micha
knobbas
Posts: 49
Joined: 23 Nov 2016 19:02

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by knobbas »

Hi Michael,
erst mal vielen Dank für deine Geduld :-)

Einen Elko hatte ich schon drin, allerdings nur einen kleinen 22uF um eventuelle Oberwellen der 5V DC zu glätten.

Ich habe jetzt mal den AM2320 rausgenommen und die Library für den BH1750 verwendet. Die hatte ja in Kombination mit dem BMP180 nicht funktioniert. Mit dem BMP280 funktioniert sie aber scheinbar.

Aktuell habe ich als nur den BMP80 und den BH1750 mit StepUp Converter am laufen.
Wakeup ist wieder bei 240 Sekunden und seit 20 Minuten läuft es.
Mit dem AM2320 hat sich der Uno ja schon beim ersten Wakeup aufgehangen. Scheit also so, als ob der AM2320 im Batterie und Sleep Modus nicht so richtig will ...

Nachdem der AM2320 jetzt nicht mehr drin ist, werde ich es auch mal direkt mit 2x AA testen. Ich vermute mal, dass der Stepup doch einiges an Ruhestrom verbraucht - also schlecht für die Batterie Lebenszauer ist.
knobbas
Posts: 49
Joined: 23 Nov 2016 19:02

Re: Z-Uno: Probleme mit Luftdrucksensor BMP180

Post by knobbas »

Ok, ich geb auf.
Die einzige Variante in der mein Z-Uno stabil läuft ist per USB Power.
Weder 2xAA noch 2xAA mit StepUp laufen stabil (Uno hängt sich nach ein paar Stunden weg)

Jetzt kommt er eben mit USB Netzteil nebens Fenster und nich nach draußen ...
Post Reply