Operácie

Jednoduchá meteostanica s BMP180: Rozdiel medzi revíziami

Z SensorWiki

(Analýza)
Riadok 24: Riadok 24:
  
 
Tlakový senzor komunikuje prostredníctvom ľ2C zbernice, jeho adresa je:  
 
Tlakový senzor komunikuje prostredníctvom ľ2C zbernice, jeho adresa je:  
 +
 
'''0xEF''' pre režím čitania
 
'''0xEF''' pre režím čitania
 +
 
'''0xEE''' pre režím zápisu   
 
'''0xEE''' pre režím zápisu   
  
 
[[Súbor:add_bmp180_pins.jpg]]
 
[[Súbor:add_bmp180_pins.jpg]]
  
 +
 +
'''Voľba režimov prevodu'''
 +
 +
Senzor môže pracovať v niekoľkých meracích režimov. Voľbou jednotlivých režimov senzora sa volí presnosť dosiahnutého výslednu (šum signálu) a zároveň sa volí rýchlosť prevodu. Nasledujúci obrázok zobrazuje jednotlivé režímy. 
 +
 +
[[Súbor:mode_bmp180.jpg]]
 +
 +
Senzor disponuje vnútornou 176bit EEPROM pamäťou v ktorej je uložených 11 kalibračných koeficientov. Každý senzor má jedinečné koeficienty. Tieto koeficienty sú nahraná do senzora v procese výroby. Algoritmus pred prvým výpočtom tlaku a teploty vyčíta obsah tejto EEPROM pamäte, následne pomocou korečných výpočtov dopočíta korektné výsledky. Nasledujúci obrázok zobrazuje adresu jednotlivých adries kalibračných koeficientov. 
 +
 +
[[Súbor:calib_bmp180.jpg]]
  
 
'''Zapojenie vývodov senzora'''
 
'''Zapojenie vývodov senzora'''

Verzia zo dňa a času 10:53, 22. máj 2016

Autori: Martin Valášek, Tomáš Timoranský
Študijný odbor: Aplikovaná mechatronika a elektromobilita 1. Ing. (2016)

Zadanie

Senzor BMP180 vyrába firma Bosch, ide o nástupcu veľmi obľúbeného senzora BMP085. Senzor disponuje meraním atmosferického absolútného tlaku v rozsahu 300 až 1100 hPa (9000 až -500m nadmorskej výšky). Pre kompenzáciu tepelných vplyvov na meranie atmosferického tlaku, má senzor integrovaný teplomer (merací rozsah -40 až +85°C), ktorý je taktiež možno vyčítať. Komunikácia je digitalná prostredníctvom I2C zbernice.

Senzor bmp180.jpg


Literatúra: Datasheed BMP180


Analýza

Popis komunikačnej zbernice

Tlakový senzor komunikuje prostredníctvom ľ2C zbernice, jeho adresa je:

0xEF pre režím čitania

0xEE pre režím zápisu

Add bmp180 pins.jpg


Voľba režimov prevodu

Senzor môže pracovať v niekoľkých meracích režimov. Voľbou jednotlivých režimov senzora sa volí presnosť dosiahnutého výslednu (šum signálu) a zároveň sa volí rýchlosť prevodu. Nasledujúci obrázok zobrazuje jednotlivé režímy.

Mode bmp180.jpg

Senzor disponuje vnútornou 176bit EEPROM pamäťou v ktorej je uložených 11 kalibračných koeficientov. Každý senzor má jedinečné koeficienty. Tieto koeficienty sú nahraná do senzora v procese výroby. Algoritmus pred prvým výpočtom tlaku a teploty vyčíta obsah tejto EEPROM pamäte, následne pomocou korečných výpočtov dopočíta korektné výsledky. Nasledujúci obrázok zobrazuje adresu jednotlivých adries kalibračných koeficientov.

Calib bmp180.jpg

Zapojenie vývodov senzora

Senzor bmp180 pins.jpg

Popis riešenia

Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru (nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.

Schéma zapojenia snímača

Zapojenie bmp180.png


Algoritmus a program

Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili. Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu. Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.

Vyberte podstatné časti zdrojového kódu, použite na to prostredie source:

#!/usr/bin/python

import Adafruit_BMP.BMP085 as BMP085
import time
import serial

port = serial.Serial("/dev/ttyAMA0", baudrate=9600)

sensor = BMP085.BMP085()

while 1:
        temp = sensor.read_temperature()*10
        pressure = sensor.read_pressure()/10.0

        print 'Temp = {0:0.2f} *C'.format(temp)
        print 'Pressure = {0:0.2f} Pa'.format(pressure)

        temp_h = int(temp/255)
        temp_l = int(temp%255)
        press_h = int(pressure/255)
        press_l = int(pressure%255)

        port.write("%s" % chr(temp_h) + chr(temp_l) + chr(press_h) + chr(press_l) + chr(255) )
        time.sleep(1)
port.close

Zdrojový kód: serial.h a main.c

program.c

Overenie

Nezabudnite napísať čosi ako užívateľský návod. Z neho by malo byť jasné čo program robí, ako sa prejavuje a aké má užívateľské rozhranie (čo treba stlačiť, čo sa kde zobrazuje). Ak ste namerali nejaké signály, sem s nimi. Ak je výsledkom nejaký údaj na displeji, odfotografujte ho.

Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.