HIH-4030 e сензор за измерване на влажност в относителни единици (%RH). Захранва се с напрежение от 4 до 5.8V, като оптималният вариант е 5V. Резултата от измерването връща като аналогов сигнал, който се подава към аналогов вход на микроконтролер.
Напрежението, което връща сензора, се изменя спрямо влажността по следната зависимост:
Vdc = (VSUPPLY)(0.0062*RH + 0.16)
RH е измерената влажност, а VSUPPLY захранващото напрежение.
Пример
В дадения по-доло пример се използва алгоритъм за изглаждане на данните от сензора. Микроконтролерът използва усреднената стойност от десет измервания, за да получи относителната влажност по аналитичната зависимост по-горе. Изчислената стойност извежда в Serial Monitor, като проценти относителна влажност.
Сензорът се свързва към Arduino, като пиновете 5V и GND са към 5V и GND на платката, а OUT е към входа A0.
Кода който трябва да се зареди на Arduino е следният:
/* Описание: * измерва относителната влажност, като използва метод за изглаглаждане * връща стойността в проценти в Serial Monitor * Tihomir Trifonov (07-2011) * с подкрепата на Robotev.com */ ////// декларации на използваните входове и изходи const int analogInPin = A0; // А0 е входа към който е свързан сензора ////// декларации на променливи използвани в програмата int sensorValue[10] = {0,0,0,0,0,0,0,0,0,0}; // стойности получени // от сензора int sum = 0; // сумата от измерванията float average; // средно аритметичната им стойност float humidity; // изчислената влажност int i; // брояч, показващ индекса void setup() { // начални инициализации Serial.begin(9600); // стартира серийна комуникация } void loop() { // програмен цикъл ////// метод за изглаждане на резултатите sum -= sensorValue[i]; // изважда послената измерена стойност // от общата сума sensorValue[i] = analogRead(analogInPin); // получава данни от сензора sum += sensorValue[i]; // прибавя данните към общата сума i++; // премества индекса if ( i == 10 ) i = 0; // проверява дали е достигнат края на масива // и ако е достигнат връща индекса в началото average = sum / 10; // намира средно-аритметичната стойност // от последните 10 измервания /////// изчислява относителната влажност по формулата в даташийта humidity = (0.005*average - 0.8)/0.031; // превръща усреднената стойност // в относителна влажност (%RH) /////// извежда получената стоийност в Serial Monitor Serial.print("\n humidity = " ); Serial.print(humidity,1); // с 1 цифра след запетаята Serial.print("% " ); delay(50);// 50ms закъснение }