Температуру отображает вроде нормально. Но не корректно показывает влажность. До 68% показывает как попало, а потом при повышении влажности начинает показывать в обратную сторону. С датчиком все в порядке - проверено. Проблема в программе.
Дело не в выдерживании. Если не подождать некоторое время, то датчик незначительно брешет, что проходит через несколько часов. Я датчик отключаю от этого проекта и сразу подключаю к другому, в котором все нормально показывает. С железом все в порядке. Проблема в прошивке!
тогда разбирайся сам. Вот моя функция измерения влажности:
void humm(void) { unsigned int h_1; float h;
char rh=0; char drob_rh=0;
i2c_start(); i2c_write(0x80); //команда записи i2c_write(0xE5); //режим HOLD для влажности i2c_start(); i2c_write(0x81); //команда чтения delay_ms(40);
h_1=i2c_read(1); // read msb h_1=h_1<<8; //сдвигаем считаный байт на 8 бит h_1|=i2c_read(0); // read lsb и выполняем побитное или со значением h_1 //присваиваем полученное значение h_1 i2c_stop();
h_1&= ~0x0003; //очищаем последние 2 бита
h= (-6+(h_1/524.288));
rh=abs(h); drob_rh=abs((h-rh)*10);
sprintf(lcd_buffer,"RH=%+2u.%u%% ",rh,drob_rh); //записуемв масив для экрана lcd_gotoxy (0,1); __print_lcd(lcd_buffer); //выводим масив на LCD
Кроме проекта с сайта we.easyelectronics.ru/part/datchik-temperatury-i-vlazhnosti-sht21.html (вариант подключения к компу) к сожалению, не видел еще нормально работающего проекта на SHT21.
Кроме проекта с сайта we.easyelectronics.ru/part/datchik-temperatury-i-vlazhnosti-sht21.html (вариант подключения к компу) к сожалению, не видел еще нормально работающего проекта на SHT21.
Кто мешает. Сделай сам. Я же предлагал свой вариант. Тебе не нужен.
Зарегистрирован: Чт мар 24, 2011 23:11:49 Сообщений: 42
Рейтинг сообщения:0
А эту схемку измерителя на SHT21 - http://radiokot.ru/konkurs/11/ никто не собирал? Как-то странно что оказалось очень похожих две одинаковые работы может их нужно было объединить в одну?
Что-то не сложилось у меня до сих пор заглянуть сюда. Отвечаю сразу всем: У меня показывает нормально и температуру, и влажность. Благо, работаю на фармацевтике и приборов там достаточно. Я сравнил формулу рачета влажности свою и 11VETAL, разницы НИКАКОЙ, что нетрудно увидеть по исходникам. Касательно температуры - я не сразу допёр, почему у меня показывал завышенную температуру. Оказалось, не стОит ставить стабилизатор на ту же платку, где и SHT21 чалится. Убрал стаб в корпус, показания стали много лучше. Но, еще одно НО. Для точных показаний датчик не должен быть в "стоячем" воздухе, он, гад такой, все равно нагревается (хоть и на доли градуса). Разместив свой девайс неподалеку от вентиляционной вытяжки, я таки увидел точные показания температуры. Сравнивал с промышленным термометром и термометром на 18В20. Вот такая ботва. Возможно, хорошим решением будет подавать на датчик не 3,3, а несколько меньшее напряжение. Например, 3.0. Надо пробовать.
Уважаемые пожалуйста подскажите как проверить работоспособность датчика sht21 Пишу код на ATmega8 под winavr
пример кода >>
Код:
unsigned char ret1 = 0, ret2 = 0;
s = i2c_start(0x80); // set device address and write mode if ( s ) { /* failed to issue start condition, possibly no device found */ i2c_stop(); }else { /* issuing start condition ok, device accessible */ i2c_write(0xF5); // получить влажность i2c_stop(); // set stop conditon = release bus s = i2c_start( 0x81 ); // set device address and read mode
_delay_ms(100);
i2c_rep_start( 0x81 ); // set device address and read mode ret1 = i2c_readAck(); // read one byte ret2 = i2c_readAck(); // read one byte i2c_readNak(); // read one byte i2c_stop();
ret = ret1; }
return ret;
в итоге с датчика ничего не возвращается даже если пытаюсь прочитать регистр настроек
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения