kildekode:
#define TdsSensorPin A1
#define kValue 1.8 //kValue = værdi af kalibrator TDS / måling for at få TDS
#define VREF 5.0 // analog referencespænding (Volt) af ADC’en
#define SCOUNT 30 // summen af prøvepunkt
Int analogBuffer[SCOUNT]; // gem den analoge værdi i arrayet, læst fra ADC
Int analogBufferTemp[SCOUNT];
Int analogBufferIndex = 0, copyIndex = 0;
Float gennemsnitsspænding = 0, tdsValue = 0, temperatur = 25;
Ugyldig opsætning()
{
Serial.begin(115200);
pinMode(TdsSensorPin, INPUT);
}
Void loop()
{
Statisk usigneret langt analogSampleTimepoint = millis();
Hvis(millis()-analogSampleTimepoint > 40U) //hvert 40 millisekund, læs den analoge værdi fra ADC’en
{
analogSampleTimepoint = millis();
analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin); //læs den analoge værdi og gem den i bufferen
analogBufferIndex++;
If(analogBufferIndex == SCOUNT)
analogBufferIndex = 0;
}
Statisk usigneret langt printTimepoint = millis();
If(millis()-printTimepoint > 800U)
{
printTimepoint = millis();
For(copyIndex=0;copyIndex<scount;copyindex++)< span=””></scount;copyindex++)<>
analogBufferTemp[copyIndex]= analogBuffer[copyIndex];
gennemsnitsspænding = getMedianNum(analogBufferTemp,SCOUNT) * (float)VREF / 1024.0; // læs den analoge værdi mere stabil ved hjælp af medianfiltreringsalgoritmen, og konverter til spændingsværdi
Float compensationCoefficient=1,0+0,02*(temperatur-25,0); //temperaturkompensationsformel: fFinalResult(25^C) = fFinalResult(current)/(1.0+0.02*(fTP-25.0));
Float compensationVolatge=gennemsnitlig spænding/kompensationskoefficient; //temperaturkompensation
tdsValue=(133.42*compensationVolatge*compensationVolatge*compensationVolatge – 255.86*compensationVolatge*compensationVolatge + 857.39*compensationVolatge)*0,5*kValue; //konverter spændingsværdi til tds-værdi
//Serial.print(“voltage:”);
//Serial.print(averageVoltage,2);
//Serial.print(“V “);
Serial.print(“TDS-værdi:”);
Serial.print(tdsValue,0);
Serial.println(“ppm”);
}
}
Int getMedianNum(int bArray[], int iFilterLen)
{
Int bTab[iFilterLen];
For (byte i = 0; i<ifilterlen; span=””></ifilterlen;>
bTab[i] = bArray[i];
Int i, j, bTemp;
For (j = 0; j < iFilterLen – 1; j++)
{
For (i = 0; i < iFilterLen – j – 1; i++)
{
Hvis (bTab[i] > bTab[i + 1])
{
bTemp = bTab[i];
bTab[i] = bTab[i + 1];
bTab[i + 1] = bTemp;
}
}
}
Hvis ((iFilterLen & 1) > 0)
bTemp = bTab[(iFilterLen – 1) / 2];
Andet
bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 – 1]) / 2;
Returner bTemp;
}
Anmeldelser
Der er endnu ikke nogle anmeldelser.