Главная Новости Прайс-лист О магазине Как купить? Оплата/Доставка Корзина Контакты  
  Авторизация  
 
Логин
Пароль

Регистрация   |   Мой пароль?
 
     
  Покупателю шин  
  Новости  
Banwar

Наша сеть партнеров Banwar. Новое казино "Пари Матч" приглашает всех азартных игроков в мир больших выигрышей и захватывающих развлечений.

  Опрос  
 
Летние шины какого производителя Вы предпочитаете использовать?
 Michelin
 Continental
 GoodYear
 Dunlop
 Nokian
 Fulda
 Bridgestone
 Hankook
 Kumho
 Другие

Всего ответов: 1035
 
     
  Добро пожаловать в наш новый всеукраинский интернет-магазин!  

Застосування цифрових датчиків тиску HP03SA, HP03MA виробництва HopeRF (Hope Microelectronics) Китай. Схема, прошивка, вихідний код.

Наша сеть партнеров Banwar

HP03SA, HP03MA - недорогі цифрові датчики атмосферного тиску, що працюють по двопровідному інтерфейсу I2C HP03SA, HP03MA - недорогі цифрові датчики атмосферного тиску, що працюють по двопровідному інтерфейсу I2C.

HP03SA, HP03MA - мініатюрний гібридний модуль, що виготовляється на основі п'єзорезистивного датчика тиску і інтерфейсної мікросхеми аналогово-цифрових перетворювача. Формат цифрових даних читається у вигляді 16-розрядного слова, відповідного измеряемому ADC напрузі в залежності від тиску і температури.
Реальна роздільна здатність - 15 розрядів.

HP03SA і HP03MA володіють малим струмом споживання близько 500 мікроампер і при цьому можуть харчуватися напругою від 2.2В до 3.6В.
У датчиках є функція автоматичного перемикання в режим економії енергії, тобто сплячий режим. Тому вони ідеально підходять для переносних пристроїв, де енергоспоживання грає важливу роль.

Для зв'язку з мікро контролером використовується 2-дротова послідовна шина I2C. За допомогою додаткового калібрування датчика виробник домагається більш високої точності вимірювань. Для цього у внутрішній пам'яті датчиків зберігаються 11 унікальних коригувальних коефіцієнтів.
Обчислення температури і тиску виконуються з використанням цих коефіцієнтів. Оскільки в датчику є термодатчик, температура враховується в обчисленнях тиску, чим досягається термостабілізація показань датчика тиску.

Див. також Датчик малих тисків BMP085 і Atmega

Основні характеристики датчиків:

* Вбудований датчик тиску
* Абсолютний діапазон вимірюваного тиску: 300kPa ... 1100kPa
* 16-розрядний ADC
* 11 поправочних коефіцієнтів у внутрішній пам'яті для програмної компенсації
* Послідовний I2C-інтерфейс
* Один висновок тактирования 32.768kHz
* Одна апаратна лінія скидання
* Висока економічність
* Дозвіл ADC: 15bit
* Напруга живлення: 2.2V ... 3.6V
* Струм споживання в робочому режимі: менше 500uA
* Струм споживання в режимі відключення: менш 1uA
* Зовнішні компоненти не потрібні
* Дозвіл датчика: 0.1kPa
* Відносна точність (750kPa ... 1100kPa): ± 1kPa
* Абсолютна точність (750kPa ... 1100kPa): ± 1.5kPa
* Максимальна помилка по температурі (-20 ° C ... + 60 ° C): ± 3kPa
* Довготривала стабільність (12 місяців): 2kPa
* Залежність від напруги живлення (2.4V ... 3.6V): ± 1.5kPa
* Температурна точність: ± 0.8 ° C

HP03SA має текстолітовими підставу (9.5 × 9.0x4.8mm), зручне для ручного монтажу.

HP03MA має компактне текстолітовими підставу (6.9 × 6.3 × 3.1mm) для автоматичного монтажу. Також успішно монтується вручну.

Обидва розраховані на температурний діапазон: -20 ° C ... + 60 ° C.

HP03SA відрізняється від HP03MA виконанням корпусу. Всі інші характеристики однакові. На практиці HP03SA показували більш стабільний результат і менший розкид параметрів на відміну від мініатюрних побратимів HP03MA.

На малюнках Наведено рекомендовані в документації схеми сполучення датчиків і мікроконтролерів. А так же схеми їх корпусів.

Реальна схема може бути наступна:

Вона відрізняється від запропонованої схеми відсутністю підтягує резистора 10 КОм. У запропонованому прикладі використовується вбудовані підтягують резистори мікроконтролера серії ATmega.

Приклад програми для Atmega8:

#include <stdio.h> #include <avr / interrupt.h> #include <util / delay.h> #include "i2cmaster.h" // # define F_CPU 3686400L // Порт XCLR датчика #define XCLR_DDR DDRD #define XCLR_PORT PORTD #define XCLR PIND0 // Порт тактирование АЦП датчика #define MCLK_DDR DDRD #define MCLK_PORT PORTD #define MCLK PIND1 // Калібрувальні коефіцієнти long int c1, c2, c3, c4, c5, c6, c7, a, b, c, d ; // Значення АЦП long int d1, d2; // Температура long int t; // Тиск long int Pressure; // ################################################ ############################# // Зведення двійки в ступінь // long int pow2 (uint8_t i) {long int uiData; uiData = 2; i = i-1; while (i) {uiData * = 2; i--; } Return uiData; } #Define fospEEPROM_ADR 0xA0 // Адреса EEPROM #define fospADC_ADR 0xEE // Адреса ADC #define PRESSURE 0xF0 #define TEMPERATURE 0xE8 #define mm_rt_st 0.7500638 // мм. рт. ст. (@ 0 гр. C) // ######################################### #################################### // Ініціалізація HP03 // void HP03Init (void) {// Скидання HP03 XCLR_PORT & = ~ (1 << XCLR); _delay_ms (200); XCLR_PORT | = (1 << XCLR); _delay_ms (200); XCLR_PORT & = ~ (1 << XCLR); _delay_ms (200); } // ############################################### ############################## // Зчитує два байта // unsigned int HP03_Get2Bytes () {unsigned int HiTemp, LowTemp; HiTemp = i2c_readAck (); LowTemp = i2c_readAck (); return (((int) HiTemp) << 8) + LowTemp; } // ############################################### ############################## // Читання калібрувальних коефіцієнтів з EEPROM (HP03) // void HP03ReadCoeff (void) {unsigned int ret; ret = i2c_start (fospEEPROM_ADR); // Адреса EEPROM if (ret) {// датчик не виявлено i2c_stop (); } Else {i2c_write (0x10); // Адреса коефіцієнтів в EEPROM i2c_start (0xA1); c1 = HP03_Get2Bytes (); c2 = HP03_Get2Bytes (); c3 = HP03_Get2Bytes (); c4 = HP03_Get2Bytes (); c5 = HP03_Get2Bytes (); c6 = HP03_Get2Bytes (); c7 = HP03_Get2Bytes (); a = i2c_readAck (); b = i2c_readAck (); c = i2c_readAck (); d = i2c_readNak (); i2c_stop (); }} // ############################################## ############################### // Читання даних АЦП (HP03) // unsigned int HP03ReadValue (unsigned char n) { unsigned int ret; unsigned int temp; temp = 0; ret = i2c_start (fospADC_ADR); // Адреса ADC if (ret) {// датчик не виявлено i2c_stop (); } Else {i2c_write (0xff); i2c_write (n); // Pressure (0xF0), Temperature (0xE8) i2c_stop (); _delay_ms (50); i2c_start (fospADC_ADR); // Адреса ADC i2c_write (0xfd); i2c_rep_start (0XEF); // Адреса ADC temp = HP03_Get2Bytes (); i2c_stop (); } Return temp; } // ############################################### ############################## // Обчислення температури і атмосферного тиску // з урахуванням калібрувальних коефіцієнтів // void PressureTemperatureMeasure (void) {long int dUT; long int off, sens, x; XCLR_PORT | = (1 << XCLR); d1 = HP03ReadValue (PRESSURE); d2 = HP03ReadValue (TEMPERATURE); XCLR_PORT & = ~ (1 << XCLR); // if (d2> = c5) {dUT = (d2-c5) - (((d2-c5) / pow2 (7)) * ((d2-c5) / pow2 (7)) * a) / pow2 ( c); } // else {dUT = (d2-c5) - (((d2-c5) / pow2 (7)) * ((d2-c5) / pow2 (7)) * b) / pow2 (c); } If (d2> = c5) {t = a; } Else {t = b; } DUT = (d2-c5) - (((d2-c5) / pow2 (7)) * ((d2-c5) / pow2 (7)) * t) / pow2 (c); t = (250 + ((dUT * c6) / pow2 (16)) - dUT / pow2 (d)); /// 10; // Обчислюємо температуру в градусах за шкалою Цельсія off = (c2 + (c4-1024) * dUT / pow2 (14)) * 4; sens = c1 + (c3 * dUT) / pow2 (10); x = (sens * (d1-7168)) / pow2 (14) -off; // Pressure = (x * 100 / pow2 (5) + c7 * 10); Pressure = ((x * 100 / pow2 (5) + c7 * 10) / 100) * mm_rt_st; // Обчислюємо тиск в міліметрах ртутного стовпа} // ======================================= ====================================== // ########## ################################################## ################# // Тактирование АЦП датчика // Тактова частота процесора 3.6864 МГц // ISR (TIMER0_OVF_vect) {if ((MCLK_PORT & (1 << MCLK)) == 0) {MCLK_PORT | = (1 << MCLK); } Else {MCLK_PORT & = ~ (1 << MCLK); }} // ############################################## ############################### // ################# ################################################## ########## int main (void) {// Налаштовуємо порт для Скидання і Синхронізації датчика XCLR_DDR | = (1 << XCLR); MCLK_DDR | = (1 << MCLK); // Налаштовуємо таймер для тактирования АЦП TCCR0 = (1 << CS00); // Дозволяємо переривання TIMSK = (1 << TOIE0); // Запускаємо таймера TCNT0 = 0; sei (); i2c_init (); // TWI PULL UP Включаємо внутрішні підтягує резистори, тому зовнішні резистори можна не встановлювати. PORTC | = ((1 << PINC4) | (1 << PINC5)); HP03Init (); HP03ReadCoeff (); while (1) {PressureTemperatureMeasure (); // Виводимо змінні // t - температура // Pressure - тиск}}

Завантажити приклад для HP03

PS
У прикладі використана частота кварцу 3.6864 МГц. Це абсолютно НЕ принципово. Працюватиме і від внутрішнього RC-генератора. Хоча в документації вказано, що АЦП датчика необхідно тактіровать частотою 32768 Гц, це не обов'язкова умова. На практиці АЦП датчика можна тактіровать меншою частотою. Я знижував до 15000 Гц, при цьому працездатність зберігалася.

Див. також:

 
  Обзор категорий  
 
Шины
 
     
 
  Специальное предложение  
   
     
     
Доставка осуществляется в города:
Александрия, Белая Церковь, Белгород-Днестровский, Бердичев, Бердянск, Борисполь, Боярка, Бровары, Бердичев, Васильков, Винница, Вознесенск, Горловка, Днепродзержинск, Днепропетровск, Донецк, Житомир, Запорожье, Евпатория, Ивано-Франковск, Измаил, Изюм, Каменец-Подольский, Керч, Кировоград, Ковель, Комсомольск, Конотоп, Краматорск, Кривой Рог, Кременчуг, Ильичевск, Луганск, Лубны, Луцк, Львов, Павлоград, Мариуполь, Миргород, Мелитополь, Мукачево, Николаев, Нежин, Никополь, Новая Каховка, Новоград - Волынский, Нововолынск, Одесса, Обухов, Павлоград, Пирятин, Прилуки, Полтава, Первомайск, Ровно, Славянск, Симферополь, Смела, Стрий, Сумы, Севастополь, Северодонецк, Тернополь, Ужгород, Умань, Харьков, Хмельницкий, Херсон, Феодосия, Чернигов, Черновцы, Южноукраинск, Ялта.

© 2009 - 2010 Интернет-магазин автотоваров и запчастей авто34

Каталог украинских интернет-магазинов