Stap 5: Code
De volgende code naar je arduino laden.
Hopelijk werkt het goed!
Wanneer de temperaturen niet stabiel genoeg kunt u ' een 0,5 =' in bijvoorbeeld ' een = 0.8'
/*
Psychrometer
Leest een analoge ingang op pin 0 en op pin 1. Zet het op temperatuur. Temperatuur worden omgezet in een relatieve vochtigheid.
En het resultaat op het LCD-scherm afgedrukt.
*/
de code van de bibliotheek omvatten:
#include
initialiseren van de bibliotheek met de nummers van de pennen van de interface
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
geeft de beginwaarde voor de droge en natte temperatuur
zweven averagedry = 20;
zweven averagewet = 16;
een constante die het gewicht van de oude waarden in hydrological de nieuwe waarde bepaalt geven
float een = 0,5;
de setup-routine wordt uitgevoerd zodra wanneer u drukt op reset:
VOID Setup {}
Deze maakt gebruik van de spanning die wordt geleverd in in Aref als referentie
WANNEER U DE WEERSTANDEN WEGLATEN OOK WEGLATEN
analogReference(EXTERNAL);
de LCD's aantal kolommen en rijen instellen:
LCD.begin (16, 2);
Een bericht op het LCD-scherm afdrukt.
LCD.Print("RelativeHumidity");
Initialiseer seriële communicatie met de computer:
Serial.begin(9600);
}
de routine van de lus wordt uitgevoerd over en weer forever:
void loop {}
Lees de input op analoge pin 0 en pin 1, is dit de droog/nat-temperatuur:
de vertragingen van de delay(1000) met een tweede, dit is om te stabiliseren van de arduino
analogRead(A0);
delay(1000);
int sensorValuedry = analogRead(A0);
analogRead(A1);
delay(1000);
zweven sensorValuewet = (float) analogRead(A1);
De sensorvalue omzetten in een temperatuur
De sensorvalue gemeten zonder een lagere spanning van de verwijzing is gekalibreerd met een thermometer
De sensorvalue gemeten met een lagere spanning van de verwijzing is gecorrigeerd met behulp van 149.7/828.3.
149.7 is de sensorvalue zonder lager referentie spanning
828.3 is de sensorvalue met een lagere spanning van de referentie.
Deze twee waarden zullen waarschijnlijk anders zijn met andere resistants
WANNEER U DE WEERSTANDEN WEGLATEN OOK WEGLATEN HET OMZETTEN DEEL (149.7/828.3)
zweven temperaturedry = sensorValuedry * (149.7/828.3) * 0.5304-53.926;
Neem een lopend gemiddelde met weigthing-factor een
averagedry = een * averagedry + (1-a) * temperaturedry;
De sensorvalue omzetten in een temperatuur
zweven temperaturewet = sensorValuewet * (149.7/828.3) * 0.5181-50.889;
Neem een lopend gemiddelde
averagewet = een * averagewet + (1-a) * temperaturewet;
formules gebruiken om te bepalen van de relatieve vochtigheid
zweven Es = 0.61 * exp ((19.9 * averagewet) /(273 + averagewet));
zweven Ea = Es-0.067 * (averagedry-averagewet);
float H = Ea / Es;
{
Stel de cursor op de kolom 0, lijn 1
(Opmerking: lijn 1 is de tweede rij, aangezien tellen met 0 begint):
lcd.setCursor (0, 1);
afdrukken van de relatieve vochtigheid:
LCD.Print(H);
}
}