powrót do spisu treści

powrót do publikacje

4.3 Pomiar wilgotności.

Zastosowany przetwornik wilgotności HIH4000 produkcji Honeywell’a posiada wyjście napięciowe. Napięcie wyjściowe jest liniową funkcją wilgotności (rys.15) i zmienia się w zakresie:

- od 0,958 V co odpowiada wilgotności względnej 0%
- do 4,025 V co odpowiada wilgotności względnej 100%

Układ ten jest podłączony do przetwornika A/C mikroprocesora, który przetwarza wejściowe napięcie unipolarne na naturalny kod dwójkowy. Oznaczając napięcie wejściowe jako Ux, wartość odczytaną z przetwornika jako Ubin oraz uwzględniając rozdzielczość przetwornika, określiłem pojedynczy przyrost napięcia d przy rozdzielczości 24 bitów:

(1)

(2)

(3)

Rys. 15 Funkcja przetwarzania przetwornika wilgotności HIH4000 [12]

W praktyce okazało się, że aż 24 bity nie są potrzebne - w programie przy obliczeniach nie uwzględniłem ostatnich najmłodszych ośmiu bitów ponieważ nie odgrywały one żadnej roli przy obliczeniach. Plusem tego rozwiązania jest także zmniejszenie ilości obliczeń dla mikrokontrolera.

Do poprawnego skonfigurowania pracy przetwornika A/C, konieczne było doprowadzenie do wejść REF+ i REF- mikrokontrolera napięć odniesienia, czyli do REF- 1V i do REF+ 4V co odpowiada zmianom napięcia wejściowego z układu HIH4000. Do tego celu posłużyły dwa źródła prądowe wbudowane w porcie P1 mikroprocesora o wydajności 200μA każde. Na rysunku 16 obwody odpowiedzialne za napięcia tworzą rezystory R2, R3 oraz R16. Z prawa Ohma można łatwo obliczyć:

(4)

(5)

Rys. 16. Podłączenie HIH4000 do mikrokontrolera

Układ taki nie wymagał żadnej kalibracji. Sprawdzenia poprawności obliczeń i działania wykonałem za pomocą woltomierza, który wskazywał aktualne napięcie na wyjściu przetwornika HIH4000 oraz drobnej modyfikacji programu polegającej na wyświetleniu mierzonej wilgotności oraz aktualnego napięcia Ux na wyświetlaczu LCD. Wynik tego doświadczenia udowodnił równość napięcia Ux mierzonego przez mikrokontroler z napięciem wyświetlanym na woltomierzu. Poniżej przedstawiam fragment programu:

void ntc(void)
{
code float u=178.8139343e-9;
xdata float v;
xdata unsigned long d=0;
d=(d|ADC0H)<<8;
d=(d|ADC0M)<<8;
d=(d|ADC0L);
wilgotn=(32.5974026*(d*u+0.1)-31.22831169 );
v=d*u+0.1;
set_cursor(0,9);printf("W=%.1f%%",wilgotn); // wyświetlenie wartości wilgotności
set_cursor(3,0);printf("Uout=%.2fV ",v); // wyświetlenie wartości napięcia wyjściowego HIH4000
}

powrót do spisu treści

powrót do publikacje