![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| Ofer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: 1 Всего: 5 |
Добрый день! К АЦП ATmege 8 подключен датчик влажности HIH-4000-001. Как мне вычислить влажность воздуха в процентах? В приложении архив с описаниями датчика.
Присоединённый файл ( Кол-во скачиваний: 29 )
Datasheets.rar 328,74 Kb |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
А почитать, то что приатачил?
Vout - выходное напряжение Vsupply - напряжение питания sensor RH - влажность (в %) |
||||
|
|||||
| Ofer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: 1 Всего: 5 |
xvr, читать то я читал. Но. Чем отличаются формулы
TrueRH = SensorRH/(1.0305+0.000044T-0.0000011T^2) T in C TrueRH = SensorRH/(0.92537-0.0041T+0.000040T^2) T in C Как получить Vout? Vsupply - это напряжежние +5V, которыми запитуется датчик? |
|||
|
||||
| Specialist |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 12.5.2008 Где: Кривой Рог Репутация: 1 Всего: 2 |
Привет.
Подаешь питание на датчик, и с выхода преобразовуй с помощью АЦП напряжение. В даташите есть диаграмма зависимости напряжения от влажности. Чем эти формулы отличаются я не знаю, но я так понял, что с помощью них можно посчитать поправку влажности в зависимости от конкретной температуры. Например TrueRH = SensorRH/(1.0305+0.000044T-0.0000011T^2) T in C TrueRH - Действительное значение влажности. SensorRH - Полученное значение влажности с датчика. По идее можно поправку не считать, но тогда полученный результат будет не совсем точный. З.Ы В даташите написано, что нужно закрывать от яркого света |
|||
|
||||
| Ofer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: 1 Всего: 5 |
Specialist, в принципе, я это знал. Только убедится надо было. Еще только не ясно как преобразовывать с ADC в Vout. Я так думаю, что Vout = (ADC*5)/1024; А вот за яркий свет не знал. Спасибо
|
|||
|
||||
| Specialist |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 12.5.2008 Где: Кривой Рог Репутация: 1 Всего: 2 |
Если 10 битный АЦП то 1024 деления. И если опорное напряжение 0 и 5в то все правильно. З.Ы Кстати че за зверь такой "валжность" ? Это сообщение отредактировал(а) Specialist - 21.7.2008, 23:31 |
|||
|
||||
| Ofer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: 1 Всего: 5 |
||||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Что, куда преобразовывать? Тебе датчик выдает DC сигнал. Его ты пропускаешь через ADC и имеешь значение в твоем мк.
Прошу заметить, что в даташите есть одна формула, а ты из нее две сделал -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Ofer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: 1 Всего: 5 |
||||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Это одна формула (просто на две строки растянута)!
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Вообще то формул там аж 3 разных (см DOC000... datasheet): Vout=Vsupply(0.0062(sensor RH)+0.16) - линейная (просто, но не точно) Vout=Vsupply(0.00003(sensor RH)^2+0.0281(sensor RH)+0.820) - квадратичная (сложнее и более точно) Vout=(0.0305+0.000044T-0.0000011T^2)(Sensor RH)+(0.9237- 0.0041T+0.000040T^2), T=Temperature in ºC - компенсация по температуре Vsupply - напряжение питания, должно совпадать (или быть пропорциональным) опорному напряжению АЦП (при этом оно не обязанно быть супер точным) Это сообщение отредактировал(а) xvr - 22.7.2008, 10:52 |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Именно, но таких что указаны Ofer'ом нет. А эти три вроде понятны и без объяснений. Пока вообще ничего не получается я бы взял линейную и добился нормальных результатов.
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Ofer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: 1 Всего: 5 |
Итак..... как понимаю я должен использовать в программе следующие формулы
Правильно? |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Нет. У тебя есть одна формула (простая и не очень точная), и вторая (более точная но без учета температуры). Не надо одну в другую вставлять. Точнее не просто не надо, а это неправильно. Первый вариант Vin = (ADC*5)/1024; //напряжение на АЦП SensorRH = ((Vin/5)-0.16)/0.0062; //показание HIH Второй Vin = (ADC*5)/1024; //напряжение на АЦП и потом решение квадратного уравнения, Voltage output (2nd order curve fit) Третий Vin = (ADC*5)/1024; //напряжение на АЦП и потом формула Temperature compensation Это сообщение отредактировал(а) cardinal - 23.7.2008, 03:00 -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Ofer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: 1 Всего: 5 |
Но ведь для нахождения температурной компенсации необходимо знать SensorRH. А для этого его нужно найти по SensorRH = ((Vin/5)-0.16)/0.0062; //показание HIH То есть в итоге мы имеем первый вариант + формулу температурной коррекции |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |