ГЛАВНАЯ НОВИНКИ КАТАЛОГ СТАТЬИ КОРЗИНА Отправить письмо
Поиск


Введите слово для поиска.
Расширенный поиск
Разделы
3D принтеры
Arduino, разработка, программирование
CD, DVD диски, боксы
GSM, WI-FI, Ethernet, GPS, радио модули и комплектующие
RC модели и комплектующие
Вентиляторы, решетки, фильтра
Все для Авто
Все для пайки
Выключатели, кнопки, DIP переключателм
Датчики
  Холла
Держатели карт
Диски, коробки, конверты
Изделия, устройства, блоки
Измерительный инструмент и комплектующие
Инструмент
Источники энергии, держатели, ИБП
Кабельная продукция и сопутствующие товары
Клеммы, клеммники, оконцеватели
Комплектующие для ремонта и производства
Компьютерная периферия
Корпуса, стойки, болты, винты, саморезы
Крокодилы
Микрофоны, пищалки
Пакеты струна
Полупроводники и арматура
Предохранители, термопредохранители, термостаты, держатели
Радиаторы, подложки, изоляторы
Радиокомпоненты
Разъемы, штекера, гнезда, переходники
Реле и колодки
Светодиоды, фонари, светильники
Сердечники, каркасы, ферриты
Текстолит
Термоусадочная трубка
Трансформаторы
Химия для электроники
Полный список товаров
Статьи
Все статьи (30)
Справочник (24)
Статьи к готовым модулям (1)
Схемы, устройства (6)
  Главная » Каталог » Датчики » Модуль Датчик давления и температуры GY-68
Модуль Датчик давления и температуры GY-68   198.00 руб
box_bg_l.gif.

код: 26657

Характеристики
 
Некоторые  характеристики  датчика  измеряются  в  гектопаскалях  сокращенно  гПа.  1  гектопаскаль  =  100  Паскаль.  Это  связано  с  тем,  что  при  измерении  высоты  с  помощью  контроля  давления  используется  барическая  ступень.  Высота,  на  которую  надо  подняться  или  опуститься,  чтобы  давление  изменилось  на  1  гПа  –  барическая  ступень.
 
Питание  GY-68
                        напряжение  3,3  или  5  В
                        ток,  мкА
                                                в  режиме  ожидания  0,1
                                                потребление    возрастает  на  0,5  при  увеличении  частоты  измерений  на  1  Гц
                                                средний  5
Диапазон  измерения  давления  от  300  до  1100  гПа  что  соответствует  высоте  -500…9000  м
С  точностью  ±  0,02  гПа,  что  при  работе  в  режиме  высотомера  соответствует  0,17  м
Диапазон  измерения  температуры  0...65  °C
С  точностью  ±  2  °C
Разрешающая  способность  16  бит
Максимальная  скорость  интерфейса  3,4  Мбод
Адрес  7  бит  на  шине  I2C  значением  0x77
Время  отклика  7,5  мс
Шум
                        в  режиме  низкого  потребления  0,5  м
                        в  режиме  высокого  потребления  0,17  м
Диапазон  температуры  при  работе  –40…85  °C
Отверстие  под  винт  3  мм
Размеры  36  x  38  x  9,3 

Контакты  GY-68
 
VCC  –  питание  5  В
3.3  –  питание  3,3  В
GND  –  общий  провод
SCL  и  SDA  –  интерфейс  I2C


 
При  температуре  воздуха  0  °C  и  давлении  1000  гПа,  барическая  ступень  составляет  8  метров  на  гПа.  Чтобы  давление  уменьшилось  на  1  гПа,  нужно  подняться  на  8  метров.  С  ростом  температуры  и  увеличением  высоты  ступень  возрастает  на  0,4  %  на  каждый  градус  нагревания.  Она  прямо  пропорциональна  температуре  и  обратно  пропорциональна  давлению.

Напряжение  питания  3,3  В  подается  на  контакт  3.3  или  формируется  стабилизатором  U1  MIC5205  маркированным  KB33  при  подключению  модуля  GY-68  к  источнику  напряжения  5  В.  Линия  питания  3,3  вольта  соединена  с  подтягивающими  резисторам  R1  и  R2.  Они  необходимы  для  работы  шины  I2C  –  с  их  помощью  формируются  высокие  уровни  сигнала,  а  когда  BMP180  проваливает  это  напряжение  –  формируется  низкий  логический  уровень.
 
Программирование
 
 
Приводим  текст  программы  для  ардуино  выводящей  величины  температуры  и  давления  в  окно  последовательного  монитора  ардуино.

#include 
#define  BMP085_ADDRESS  0x77  //  I2C  address
 
const  unsigned  char  OSS  =  0;  //  Oversampling  Setting
 
//Calibration  values
int  ac1;
int  ac2;
int  ac3;
unsigned  int  ac4;
unsigned  int  ac5;
unsigned  int  ac6;
int  b1;
int  b2;
int  mb;
int  mc;
int  md;
 
//b5  is  calculated  in  bmp085GetTemperature(...),  this  variable  is  also  used  in  bmp085GetPressure(...)
//so  ...Temperature(...)  must  be  called  before  ...Pressure(...).
long  b5;
 
short  temperature;
long  pressure;
 
void  setup()
{
  Serial.begin(9600);
  Wire.begin();
  bmp085Calibration();
}
 
void  loop()
{
  temperature  =  bmp085GetTemperature(bmp085ReadUT());
  pressure  =  bmp085GetPressure(bmp085ReadUP());
  Serial.print("Temperature:  ");
  Serial.print(temperature,  DEC);
  Serial.println("  *0.1  deg  C");
  Serial.print("Pressure:  ");
  Serial.print(pressure,  DEC);
  Serial.println("  Pa");
  Serial.println();
  delay(1000);
}
 
//Stores  all  of  the  bmp085's  calibration  values  into  global  variables
//Calibration  values  are  required  to  calculate  temp  and  pressure
//This  function  should  be  called  at  the  beginning  of  the  program
void  bmp085Calibration()
{
  ac1  =  bmp085ReadInt(0xAA);
  ac2  =  bmp085ReadInt(0xAC);
  ac3  =  bmp085ReadInt(0xAE);
  ac4  =  bmp085ReadInt(0xB0);
  ac5  =  bmp085ReadInt(0xB2);
  ac6  =  bmp085ReadInt(0xB4);
  b1  =  bmp085ReadInt(0xB6);
  b2  =  bmp085ReadInt(0xB8);
  mb  =  bmp085ReadInt(0xBA);
  mc  =  bmp085ReadInt(0xBC);
  md  =  bmp085ReadInt(0xBE);
}
 
//Calculate  temperature  given  ut.
//Value  returned  will  be  in  units  of  0.1  deg  C
short  bmp085GetTemperature(unsigned  int  ut)
{
  long  x1,  x2;
 
  x1  =  (((long)ut  -  (long)ac6)*(long)ac5)  >>  15;
  x2  =  ((long)mc  <<  11)/(x1  +  md);
  b5  =  x1  +  x2;
 
  return  ((b5  +  8)>>4);
}
 
//Calculate  pressure  given  up
//calibration  values  must  be  known
//b5  is  also  required  so  bmp085GetTemperature(...)  must  be  called  first
//Value  returned  will  be  pressure  in  units  of  Pa
long  bmp085GetPressure(unsigned  long  up)
{
  long  x1,  x2,  x3,  b3,  b6,  p;
  unsigned  long  b4,  b7;
 
  b6  =  b5  -  4000;
  //  Calculate  B3
  x1  =  (b2  *  (b6  *  b6)>>12)>>11;
  x2  =  (ac2  *  b6)>>11;
  x3  =  x1  +  x2;
  b3  =  (((((long)ac1)*4  +  x3)<>2;
 
  //Calculate  B4
  x1  =  (ac3  *  b6)>>13;
  x2  =  (b1  *  ((b6  *  b6)>>12))>>16;
  x3  =  ((x1  +  x2)  +  2)>>2;
  b4  =  (ac4  *  (unsigned  long)(x3  +  32768))>>15;
 
  b7  =  ((unsigned  long)(up  -  b3)  *  (50000>>OSS));
  if  (b7  <  0x80000000)
  p  =  (b7<<1)/b4;
  else
  p  =  (b7/b4)<<1;
 
  x1  =  (p>>8)  *  (p>>8);
  x1  =  (x1  *  3038)>>16;
  x2  =  (-7357  *  p)>>16;
  p  +=  (x1  +  x2  +  3791)>>4;
 
  return  p;
}
 
//Read  1  byte  from  the  BMP085  at  'address'
char  bmp085Read(unsigned  char  address)
{
  unsigned  char  data;
 
  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(address);
  Wire.endTransmission();
 
  Wire.requestFrom(BMP085_ADDRESS,  1);
  while(!Wire.available())
  ;
 
  return  Wire.receive();
}
 
//Read  2  bytes  from  the  BMP085
//First  byte  will  be  from  'address'
//Second  byte  will  be  from  'address'+1
int  bmp085ReadInt(unsigned  char  address)
{
  unsigned  char  msb,  lsb;
 
  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(address);
  Wire.endTransmission();
 
  Wire.requestFrom(BMP085_ADDRESS,  2);
  while(Wire.available()<2)
  ;
  msb  =  Wire.receive();
  lsb  =  Wire.receive();
 
  return  (int)  msb<<8  |  lsb;
}
 
//Read  the  uncompensated  temperature  value
unsigned  int  bmp085ReadUT()
{
  unsigned  int  ut;
 
  //Write  0x2E  into  Register  0xF4
  //This  requests  a  temperature  reading
  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(0xF4);
  Wire.send(0x2E);
  Wire.endTransmission();
 
  //Wait  at  least  4.5ms
  delay(5);
 
  //Read  two  bytes  from  registers  0xF6  and  0xF7
  ut  =  bmp085ReadInt(0xF6);
  return  ut;
}
 
//Read  the  uncompensated  pressure  value
unsigned  long  bmp085ReadUP()
{
  unsigned  char  msb,  lsb,  xlsb;
  unsigned  long  up  =  0;
 
  //Write  0x34+(OSS<<6)  into  register  0xF4
  //Request  a  pressure  reading  w/  oversampling  setting
  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(0xF4);
  Wire.send(0x34  +  (OSS<<6));
  Wire.endTransmission();
 
  //Wait  for  conversion,  delay  time  dependent  on  OSS
  delay(2  +  (3<   
  //Read  register  0xF6  (MSB),  0xF7  (LSB),  and  0xF8  (XLSB)
  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.send(0xF6);
  Wire.endTransmission();
  Wire.requestFrom(BMP085_ADDRESS,  3);
 
  //Wait  for  data  to  become  available
  while(Wire.available()  <  3)
  ;
  msb  =  Wire.receive();
  lsb  =  Wire.receive();
  xlsb  =  Wire.receive();
 
  up  =  (((unsigned  long)  msb  <<  16)  |  ((unsigned  long)  lsb  <<  8)  |  (unsigned  long)  xlsb)  >>  (8-OSS);
 
  return  up;
}
 
В  сети  содержится  множество  библиотек  и  программ  для  вывода  данных  датчика  BMP180  на  индикаторы  и  подсчета  высоты  над  уровнем  моря.
 
ПРИМЕЧАНИЕ
 
Важно:  датчик  BMP180  чувствителен  к  влаге.  Не  применяйте  растворители  для  чистки  контактов  модуля  GY-68  после  пайки.  Для  снижения  погрешности  рекомендуется  закрыть  модуль  GY-68  от  освещения.
Не  забудьте  при  построении  альтиметра  в  программе  внести  коррекцию  с  указанием  высоты,  на  которой  находится  ваш  исследовательско-конструкторский  центр.  Именно  с  этой  высоты  с  учетом  атмосферного  давления  будет  производится  отсчет  подъема  летательного  аппарата.

программирование  https://www.sparkfun.com/tutorials/253



Товар был добавлен в наш каталог 19 October 2015 г.
box_bg_r.gif.
Отзывы Количество:
  Главная » Каталог » Датчики » Модуль Датчик давления и температуры GY-68
ВХОД ДЛЯ КЛИЕНТОВ
E-Mail:
Пароль:
Регистрация
Корзина Перейти
Корзина пуста
Консультант
ICQ: Статус 923823
ГЛАВНАЯ НОВИНКИ КАТАЛОГ СТАТЬИ КОРЗИНА Отправить письмо
Rambler's Top100 Каталог интернет ресурсов - ИнфоПитер Яндекс.Метрика
Каталог интернет-магазинов Луганска