±âŸ: ¹æ¼ö ÇÁ·Îºê
ÆÐÅ°Áö Æ÷ÇÔ »çÇ×
1 x TDS ½ÅÈ£ ¾î´ðÅÍ º¸µå
1 x ¹æ¼ö TDS ÇÁ·Îºê
1 x ¾Æ³¯·Î±× ¼¾¼ ¶óÀÎ
¼Ò½º ÄÚµå:
# TdsSensorPin A1 Á¤ÀÇ
# Á¤ÀÇ kValue 1.8 // kValue = TDS¸¦ ¾ò±âÀ§ÇÑ Ä¶¸®ºê·¹ÀÌÅÍ TDS/ÃøÁ¤ÀÇ °ª
# Á¤ÀÇ VREF 5.0 // ADCÀÇ ¾Æ³¯·Î±× ÂüÁ¶ Àü¾Ð (º¼Æ®)
# Á¤ÀÇ SCOUNT 30 // »ùÇà Æ÷ÀÎÆ®ÀÇ ÇÕ°è
Int analogBuffer[SCOUNT]; // ¹è¿¿¡ ¾Æ³¯·Î±× °ªÀ» ÀúÀåÇÏ°í ADC¿¡¼ ÀнÀ´Ï´Ù.
Int ¾Æ³¯·Î±× BufferTemp[SCOUNT];
Int analogBufferIndex = 0, copyIndex = 0;
Ç÷ÎÆ® Æò±Õ Àü¾Ð = 0, tdsValue = 0, ¿Âµµ = 25;
¹«È¿ ¼³Á¤ ()
{
Á÷·Ä. ½ÃÀÛ (115200);
ÇÉ ¸ðµå (TdsSensorPin, INPUT);
}
º¸ÀÌµå ·çÇÁ ()
{
Á¤Àû ¼¸íµÇÁö ¾ÊÀº ±ä ¾Æ³¯·Î±×SampleTimepoint = ¹Ð¸® ();
(¹Ð¸® ()-analogSampleTimeppoint> 40U) // 40 ¹Ð¸® Ãʸ¶´Ù ADC¿¡¼ ¾Æ³¯·Î±× °ªÀ» ÀнÀ´Ï´Ù.
{
AnalogSampleTimepoint = ¹Ð¸® ();
AnalogBuffer [analogBufferIndex] = analogRead(TdsSensorPin); // ¾Æ³¯·Î±× °ªÀ» ÀÐ°í ¹öÆÛ¿¡ ÀúÀåÇÕ´Ï´Ù.
¾Æ³¯·Î±× ¹öÆÛÀ妽º ++;
If(analogBufferIndex = = SCOUNT)
AnalogBufferIndex = 0;
}
Á¤Àû ¼¸íµÇÁö ¾ÊÀº ±ä printTimepoint = ¹Ð¸® ();
(¹Ð¸® ()-printTimepoint > 800U)
{
PrintTimepoint = ¹Ð¸® ();
(CopyIndex = 0;copyIndex
AnalogBufferTemp [copyIndex]= analogBuffer[copyIndex];
AverageVoltage = getMedianNum(analogBufferTemp,SCOUNT) * (float)VREF / 1024.0; // Áß°£ ÇÊÅ͸µ ¾Ë°í¸®Áò¿¡ ÀÇÇغ¸´Ù ¾ÈÁ¤ÀûÀÎ ¾Æ³¯·Î±× °ªÀ» Àаí Àü¾Ð °ªÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
Ç÷ÎÆ® º¸»ó °è¼ö = 1.0 + 0.02 * (¿Âµµ-25.0); // ¿Âµµ º¸»ó °ø½Ä: fFinalResult(25 ^ C) = fFinalResult (ÇöÀç)/(1.0 + 0.02 *(fTP-25.0));
Ç÷ÎÆ® º¸»ó Àü¾Ð = Æò±Õ Àü¾Ð/º¸»ó °è¼ö; // ¿Âµµ º¸»ó
TdsValue =(133.42 * º¸»ó Àü¾Ð * º¸»ó Àü¾Ð * º¸»ó Àü¾Ð-255.86 * º¸»ó Àü¾Ð * º¸»ó Àü¾Ð + 857.39 * º¸»ó Àü¾Ð) * 0.5 * kValue; // Àü¾Ð °ªÀ» tds °ªÀ¸·Î º¯È¯
// Á÷·Ä. Àμâ ("Àü¾Ð:");
// Á÷·Ä. Àμâ (Æò±Õ Àü¾Ð, 2);
// Á÷·Ä. Àμâ ("V");
Á÷·Ä. Àμâ ("TDS °ª:");
Á÷·Ä. Àμâ (tdsValue,0);
Á÷·Ä. println("ppm");
}
}
Int getMedianNum(int bArray[], int iFilterLen)
{
Int bTab[iFilterLen];
(¹ÙÀÌÆ® i = 0; i
BTab [i] = bArray[i];
Int i, j, bTemp;
(J = 0; j < iFilterLen - 1; j ++)
{
(I = 0; i < iFilterLen - j - 1; i ++)
{
(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;
}