ノート:TDS プローブは、55 °C を超える水では使用できません。
ディスプレイに影響を与えるため、TDS プローブを容器の端に近づけすぎないようにしてください。
TDS プローブのヘッドとリードは防水加工されており、水に浸すことができますが、接続インターフェースと信号アダプタ ボードは防水加工されていません。 注意してご使用ください。
1×TDS信号アダプタボード
1×防水TDSプローブ
1×アナログセンサーライン
ソースコード:
#define TdsSensorPin A1
#define kValue 1.8 //kValue = キャリブレータ TDS の値 / TDS を取得するための測定値
#define VREF 5.0 // ADC のアナログ基準電圧 (Volt)
#define SCOUNT 30 // サンプル ポイントの合計
Int analogBuffer[SCOUNT]; // ADC から読み取ったアナログ値を配列に格納します
Int analogBufferTemp[SCOUNT];
int analogBufferIndex = 0、copyIndex = 0;
Float averageVoltage = 0、tdsValue = 0、温度 = 25;
ボイドセットアップ()
{
Serial.begin(115200);
pinMode(TdsSensorPin, INPUT);
}
空ループ()
{
static unsigned long analogSampleTimepoint = millis();
If(millis()-analogSampleTimepoint > 40U) //40 ミリ秒ごとに、ADC からアナログ値を読み取る
{
analogSampleTimepoint = ミリ秒();
analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin); //アナログ値を読み込んでバッファに格納
analogBufferIndex++;
If(analogBufferIndex == SCOUNT)
analogBufferIndex = 0;
}
static unsigned long printTimepoint = millis();
If(ミリス()-printTimepoint > 800U)
{
printTimepoint = ミリ秒();
For(copyIndex=0;copyIndex;copyindex++)
analogBufferTemp[copyIndex]= analogBuffer[copyIndex];
averageVoltage = getMedianNum(analogBufferTemp,SCOUNT) * (float)VREF / 1024.0; // メディアン フィルタリング アルゴリズムによってより安定したアナログ値を読み取り、電圧値に変換します
フロート補正係数=1.0+0.02*(温度-25.0); //温度補正式: fFinalResult(25^C) = fFinalResult(current)/(1.0+0.02*(fTP-25.0));
フロート補正電圧=平均電圧/補正係数; //温度補償
tdsValue=(133.42*compensationVolatge*compensationVolatge*compensationVolatge - 255.86*compensationVolatge*compensationVolatge + 857.39*compensationVolatge)*0.5*kValue; //電圧値をtds値に変換
//Serial.print("電圧:");
//Serial.print(平均電圧,2);
//Serial.print("V");
Serial.print("TDS 値:");
Serial.print(tdsValue,0);
Serial.println("ppm");
}
}
Int getMedianNum(int bArray[], int iFilterLen)
{
Int bTab[iFilterLen];
(バイト i = 0; i;>
bTab[i] = bArray[i];
整数 i、j、bTemp;
(j = 0; j< iFilterLen - 1; j++)
{
(私 = 0; 私< iFilterLen - j - 1; i++)
{
If (bTab[i] > bTab[i + 1])
{
bTemp = bTab[i];
bTab[i] = bTab[i + 1];
bTab[i + 1] = bTemp;
}
}
}
((iFilterLen & 1) > 0) の場合
bTemp = bTab[(iFilterLen - 1) / 2];
それ以外
bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;
bTemp を返します。
}