Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Измерване на относителна влажност чрез HIH-4030 и Ардуино

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 закъснение
}