| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Как узнать валжность? |
| Автор: Ofer 21.7.2008, 10:38 |
| Добрый день! К АЦП ATmege 8 подключен датчик влажности HIH-4000-001. Как мне вычислить влажность воздуха в процентах? В приложении архив с описаниями датчика. |
| Автор: xvr 21.7.2008, 12:34 | ||||
А почитать, то что приатачил?
Vout - выходное напряжение Vsupply - напряжение питания sensor RH - влажность (в %) |
| Автор: Ofer 21.7.2008, 13:05 |
| 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 21.7.2008, 21:07 | ||
Привет.
Подаешь питание на датчик, и с выхода преобразовуй с помощью АЦП напряжение. В даташите есть диаграмма зависимости напряжения от влажности. Чем эти формулы отличаются я не знаю, но я так понял, что с помощью них можно посчитать поправку влажности в зависимости от конкретной температуры. Например TrueRH = SensorRH/(1.0305+0.000044T-0.0000011T^2) T in C TrueRH - Действительное значение влажности. SensorRH - Полученное значение влажности с датчика. По идее можно поправку не считать, но тогда полученный результат будет не совсем точный. З.Ы В даташите написано, что нужно закрывать от яркого света |
| Автор: Ofer 21.7.2008, 21:50 |
| Specialist, в принципе, я это знал. Только убедится надо было. Еще только не ясно как преобразовывать с ADC в Vout. Я так думаю, что Vout = (ADC*5)/1024; А вот за яркий свет не знал. Спасибо |
| Автор: Specialist 21.7.2008, 23:26 | ||
Если 10 битный АЦП то 1024 деления. И если опорное напряжение 0 и 5в то все правильно. З.Ы Кстати че за зверь такой "валжность" ? |
| Автор: cardinal 22.7.2008, 00:13 | ||
Что, куда преобразовывать? Тебе датчик выдает DC сигнал. Его ты пропускаешь через ADC и имеешь значение в твоем мк.
Прошу заметить, что в даташите есть одна формула, а ты из нее две сделал |
| Автор: Ofer 22.7.2008, 08:46 | ||
Это обе формулы из Honeywell__HIH-4000-001.pdf |
| Автор: cardinal 22.7.2008, 10:39 |
| Это одна формула (просто на две строки растянута)! |
| Автор: xvr 22.7.2008, 10:51 | ||
Вообще то формул там аж 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 - напряжение питания, должно совпадать (или быть пропорциональным) опорному напряжению АЦП (при этом оно не обязанно быть супер точным) |
| Автор: cardinal 22.7.2008, 11:17 |
| Именно, но таких что указаны Ofer'ом нет. А эти три вроде понятны и без объяснений. Пока вообще ничего не получается я бы взял линейную и добился нормальных результатов. |
| Автор: Ofer 23.7.2008, 01:31 | ||
Итак..... как понимаю я должен использовать в программе следующие формулы
Правильно? |
| Автор: cardinal 23.7.2008, 02:57 |
Нет. У тебя есть одна формула (простая и не очень точная), и вторая (более точная но без учета температуры). Не надо одну в другую вставлять. Точнее не просто не надо, а это неправильно. Первый вариант 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 |
| Автор: Ofer 23.7.2008, 11:22 | ||
Но ведь для нахождения температурной компенсации необходимо знать SensorRH. А для этого его нужно найти по SensorRH = ((Vin/5)-0.16)/0.0062; //показание HIH То есть в итоге мы имеем первый вариант + формулу температурной коррекции |
| Автор: xvr 23.7.2008, 11:34 | ||||
Нет, все 3 формулы записанны в виде зависимости Vout от SensorRH, так что в любом случае используется одна формула, (точнее обратная к ней, что бы получить зависимость SensorRH от Vout) |
| Автор: cardinal 23.7.2008, 12:37 |
| И вообще там лажа какая-то в даташите Помоему первая формула должна скорее так выглядеть ((Vin/5)-0.1916)/0.0062 (допустим, что 0.0062 верно и лучше округлить вниз) а во второй и третей не хватает V_supply. Иначе их Calculated values at 5 V вообще не получить... |
| Автор: Ofer 4.8.2008, 09:19 |
| Прошу прощения, что так долго не описывался по теме. Общими стараниями, я наконец понял, что формулы TrueRH = SensorRH/(1.0305+0.000044T-0.0000011T^2) T in C TrueRH = SensorRH/(0.92537-0.0041T+0.000040T^2) T in C это одно целое. Т.е. равносильно такой записи SensorRH/(0.92537-0.0041T+0.000040T^2) = SensorRH/(1.0305+0.000044T-0.0000011T^2) А значит, что нужно всего лиш найти напряжение показание датчика Vin = (ADC*5)/1024; и через формулу с температурной компенсацией находим искомое. cardinal, а что привело вас к такому выводу? Пожалуйста, изложите ход своих мыслей. |
| Автор: cardinal 4.8.2008, 14:08 | ||
На странице 2 (документа DOC000179697.pdf) есть Example Data Printout, а в нем Calculated Values для двух влажностей. Они должны получится по одной из формул, а не особо получаются... Вообще я бы исходил из более новых данных, то есть только DOC000179697.pdf. |