Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2017:meteostation

Toto je starší verze dokumentu!


Meteostanice se senzory tlaku, teploty, vlhosti a O2

Zadáním tohoto projektu předmětu MPOA je naprogramovat meteostanici se výše uvedenými senzory. Původně měly být veličiny zobrazovány na LCD displeji, avšak z důvodu že použitý displej byl pouze pro 5V logiku a deska KL25Z pracuje na 3V3 logice (a během programování nebyl k dispozici převodník logické úrovně), jsou nakonec hodnoty posílány přes seriovou linku do PC, kde jsou v terminálu zobrazeny.


Použitý HW a SW

  • Senzor O2 FLUX 25%
  • Senzor tlaku MS5611-01BA03
  • Senzor teploty a rel. vlhkosti SHT-75
  • deska FRDM-KL25Z
  • MBed OS 5.0
  • PUTTY terminal

Senzor teploty a reativní vlhkosti

Jako senzor teploty a vlhkosti byl vybrán senzor SHT-75 od firmy Sensirion http://www.mouser.com/ds/2/682/Sensirion_Humidity_SHT7x_Datasheet_V5-469726.pdf. V porovnání s ostatními digitálními čidly na trhu, dosahuje nejlepší přesnosti měření při vysoké relativní vlhkosti a má dostatečný rozsah měřených hodnot. Velkou výhodou oproti ostatním snímačům teploty je, že měří nejen teplotu, ale i relativní vlhkost.

void sht75_meas(void)
{
    float temperature;                    // temperature -40 to 120 deg C
    float humidity;                       // relative humidity 1% to 100%
    float humi_f,rh_lin,rh_true;           // working registers for Illustration purposes
    int t;                                // temporary store for the temp ticks
    int h;                                // temp store for the humidity ticks
 
    sht.readTempTicks(&t);
    temperature = ((float)(t) * 0.01) - 39.61;
 
    sht.readHumidityTicks(&h);
    humi_f = (float)(h);
    rh_lin = C3 * humi_f * humi_f + C2 * humi_f + C1;
    rh_true=(((temperature/100)-25)*(T1+T2*humi_f)+rh_lin);
    if(rh_true>100)rh_true=100;                             //cut if the value is outside
    if(rh_true<1)rh_true=1;                                 //the physical possible range
    humidity = rh_true;
    pc.printf("Teplota: %2.2f C Rel. vlhkost: %2.2f %%\n\r",temperature, humidity);
    wait(2.0);
}
2017/meteostation.1515942581.txt.gz · Poslední úprava: 2018/01/14 16:09 autor: Václav Kadlček