kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Verwendung des Temperatursensors auf dem Chip BMA423 (Beschleunigungssensor)

(EN google-translate)

(PL google-translate)

  • Der Chip BMA423 besitzt neben dem dreiachsigen Beschleunigungssensor auch einen Temperatursensor.
  • Mit der Bibliothek TTGO_TWatch_Library-1.4.3 wird auch eine Klasse BMA bereitgestellt, die wiederum die Methode float temperature(); enthält.
  • Nachfolgend ist dargestellt, wie man das herausfindet:

SCHRITT 1:
Beispiele, die den Beschleunigungsensor verwenden nutzen die Methode acceleration():

void loop() 
{
    acceleration();
    ...
}

SCHRITT 2:
Innerhalb der Methode acceleration im Tab functions.h findet sich:
bool res = sensor->getAccel(acc);
...was auf das Objekt sensor hinweist.

SCHRITT 3:
Im Tab twatch.h wird das Objekt sensor angelegt.
Man sieht, dass es vom Typ BMA ist:

BMA *sensor;
...
sensor = watch->bma;

SCHRITT 4:
Im Verzeichnis..
/home/fhbstud/Arduino/libraries/TTGO_TWatch_Library-1.4.3/src/drive/bma423/
..in der Headerdatei zur Klasse BMA bma.h findet sich der Hinweis auf die Methode 
...findet sich die die Methode float temperature();

...Diese wird nun getestet:

Code 0-1: Untersuchung der bereit gestellten Funktionen und Libraries.


Die Methoden in der Klasse BMA weisen aus, dass weitere Funktionalität direkt unterstützt wird, wie beispielsweise der Schrittzähler.


Beispielprogramm zum Auslesen der Temperatur:

  • Wieder handelt es sich um eine Ersetzung des ersten Tabs im Basisprojekt TWATCH_PROC023
  • Der Code für das Auslesen der Temperatur wurde zu einem einfachen Programm zum Auslesen der Beschleunigungswerte ergänzt.
#include "twatch.h"
#include "variables.h"
#include "functions.h"

void setup() 
{
    setupTWATCH();
    setFont(1, 255,255,255,  255,0,0);
    backlight(true); 
}

void loop() 
{
    clear();
    acceleration();

    cursor(0,0);

    editor(accX); 
    editor('\n');

    editor(accY); 
    editor('\n');

    editor(accZ); 
    editor('\n');

    float temp = sensor->temperature();
    editor(temp);
    editor('\n');
    
    delay(100);
}

Code 0-2: Beispielprogramm zum Auslesen der Temperatur.

Experiment

  • Bei Lagerung der Uhr in unterschiedlich warmen Räumen, oder nach Wärmen in der Hand, wurde eine relative Temperaturdifferenz erkennbar.
  • Jedoch liegt die angezeigte Temperatur wesentlich höher (31..34Grad statt 20..23Grad), als die Raumtemperatur, was wohl darauf zurückzuführen ist, dass auf dem Sensorchip gemessen wird und die Uhr selber Wärme erzeugt.
  • Es braucht mehrere Minuten, bis sich die angezeigte Temperatur nach einem Wechsel der Außentemperatur auf einen stabilen Wert einpendelt.