|
Термодатчик AD7415, помогите забодать, Развитие темы об I2C |
|
|
|
Oct 5 2005, 07:22
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Считываю температуру, а она плавает: т.е. на первом измерении, допустим +25, на втором - +27, на третьем - +22 и т.д. Сначала грешил, что не верно работаю с I2C, но попробывал с аппаратным TWI ATmega8-16PI и с программным: результат одинаковый. Причем на изменение температуры он реагирует (датчик). Но, взяв его в руку он показывает примерно 33, 29, 35 градусов. Т.е. наблюдаются явные колебания от реальной температуры плюс минус 5-7 градусов. Даташит перечитал на несколько рядов, плюс человек, который мне эти термодатчики предложил, подтвердил правильность моего программного кода. Резисторы на шине 4,7 К, скорость почти самая низкая 20 000 Гц. Вот вопрос: в чем трабл??? Может кто встречался с подобным. Всем заранее спасибо, если что вот ICQ 399085018.
--------------------
Выбор.
|
|
|
|
|
 |
Ответов
|
Oct 8 2005, 02:17
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Не знаю что и делать? Все советы, которые мне любезно дали в этой ветке я перепробывал. И все бестолку. Я пробывал усреднять результат (10 измерений каждые 0,5 сек), ну все равно каждые 5 секунд, то 26, то 25, то 27. Так быть не должно!!! Я вот выкладываю исходник, как я опрашиваю свой датчик, я не кого не прошу не очем и так слишком уже перевалил все свои проблемы. Просто, если кто захочет, пусть посмотрит и может найдет ошибки.
Данные: МК ATmega-16PI Компилятор: IAR EWAVR 4.11A Частота кварца 16.000 MHz
Вот константы #define THERMAL_H 0x94 //адрес домашнего термодатчика AD7415ART-0500RL7
#define WR 0 #define RD 1
#define TWI_TWBR 0x0C
Вот сам код:
//Инициализация I2C void i2c_init(void) { TWBR = TWI_TWBR; //установить скорость шины i2c TWCR = (1<<TWEN); //включить модуль i2c }
volatile short int home_temp, street_temp; //домашняя у уличная температуры
Этот кусок читает датчик и вычисляет температуру (пока только положительны)
TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTA)); //посылаем "старт" i2c_delay(); //ждем установки флага TWINT if((TWSR != 0x08)&&(TWSR != 0x10))//If status other than START {street_temp=111; return;} //ошибка
TWDR=THERMAL_H|RD; //загружаем адрес датчика + чтение TWCR = ((1<<TWINT)+(1<<TWEN));//инициируем передачу установкой TWINT + питание модуля TWI i2c_delay(); //ждем установки флага TWINT if(TWSR!=0x40) {street_temp=222; return;} //ошибка передачи TWCR = ((1<<TWINT)+(1<<TWEN)+(1<<TWEA)); //посылаем подтверждение, сбрасываем TWINT для приема второго байта
i2c_delay(); if(TWSR!=0x50) {street_temp=333; return;} //нет подтверждения, выход home_temp=(TWDR<<8); TWCR=((1<<TWINT)|(1<<TWEN)); //не посылаем подтверждение (последний байт уже принят)
i2c_delay(); //ждем установки флага TWINT if((TWSR&0xf8)!=0x58) {street_temp=444; return;} //нет подтверждения, выход home_temp|=(short unsigned int)TWDR;
i2c_delay(); TWCR = ((1<<TWEN)+(1<<TWINT)+(1<<TWSTO)); //посылаем "стоп"
home_temp>>=6; //вычисляем home_temp/=4; //температуру
--------------------
Выбор.
|
|
|
|
Сообщений в этой теме
haker_fox Термодатчик AD7415, помогите забодать Oct 5 2005, 07:22 BlackJack Есть подозрение, что он правильно показывает. Было... Oct 6 2005, 06:34 fur Цитата(haker_fox @ Oct 5 2005, 11:22)Считываю... Oct 6 2005, 07:59 NickB Мы использовали датчики AD7414 (они почти такие же... Oct 6 2005, 09:23 haker_fox 2BlackJack: да нет, ветер не дует! У меня пять... Oct 6 2005, 13:56 BlackJack Цитата(haker_fox @ Oct 6 2005, 16:56)2BlackJa... Oct 7 2005, 06:34 artStinger А что если тебе усреднять несколько измерений (5-7... Oct 6 2005, 15:16 PowerF1 попробуйте пройтись по всей шкале температур (скаж... Oct 6 2005, 17:18 haker_fox 2artStinger: так-то оно так, да вот говорят, что э... Oct 7 2005, 02:00 SergeyBorshch У нас на фирме выпускается промышленные регуляторы... Oct 7 2005, 19:32 haker_fox 2BlackJack: ну не знаю как это сказать! Вот зн... Oct 7 2005, 23:21 BlackJack Цитата(haker_fox @ Oct 8 2005, 02:21)2BlackJa... Oct 8 2005, 04:53 haker_fox нет, я задержки пробывал и раньше увеличивать, не ... Oct 8 2005, 06:43 Runner Возможно мой совет покажется ну уж слишком банальн... Oct 8 2005, 12:53 haker_fox 2Runner: у меня все собрано на макетной плате, фил... Oct 9 2005, 01:11 haker_fox Люди, удалось забодать!!! Оказывается ... Oct 18 2005, 06:54 Runner Цитата(haker_fox @ Oct 18 2005, 08:54)Люди, у... Oct 18 2005, 07:43 haker_fox Runner:
ЦитатаЯ Вам это советовал более недели наз... Oct 18 2005, 08:11 Dars А я вот себе купил tmp36 и не могу управится с ним... Oct 23 2005, 09:32 haker_fox Даааааааа. Может документация не изучена подпробно... Oct 23 2005, 22:50 haker_fox Извините за возвращение к старой теме, но возникли... Feb 1 2006, 03:30 WHALE Я на работе пользую другие термодатчики- DS1821,но... Feb 1 2006, 17:54 haker_fox Цитата(WHALE @ Feb 2 2006, 01:54) Я на ра... Feb 2 2006, 00:13
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|