Wprowadzenie produktu Ten analogowy analogów miernik przewodności ma cechy prostego połączenia, wygodny i praktycznie.Po podłączeniu w pojęciu, a następnie przez zarządzanie programem, bardzo wygodne zmierzyć przewodność roztworu.Najważniejsze jest to, że otwieramy kod źródłowy całego projektu i kodu.Użytkownicy mogą łatwo gromadzić dane o przewodności przez Arduino dla dalszej kontroli i badań.Fani mogą zwiedzać, udostępniać i przekazywać cenne opinie.Przewodność-to zdolność substancji przenosić prąd i odwrotność oporności.W cieczy opór elektryczny opór elektryczny jest często mierzona odwrotnej wielkości oporu elektrycznego.Przewodność wody jest bardzo ważnym wskaźnikiem jakości wody i odzwierciedla stopień obecności elektrolitów w wodzie.Zakres stosowania badanie jakości wody Woda i gleba mieszane rolnictwo akwakultura орнаментальный akwarium techniczne parametr napięcie prądu działalności: +5.00 w rozmiar ПКБ: 45mm x 32mm mierzy szereg: 1ms/cm--20 ms/cm odpowiednia temperatura: 5-40 ° dokładność: ХХ2.54 interfejs (łata w 3 stopy) typ interfejsu БНК elektroda przewodności (stała elektrody 1) eksplorator elektroda długość kabla: około 60 cm schemat elektryczny miernik EC ---- Art-chodź -nie w ---- 5.0 V; G ---- GND; A ---- analog IO (odpowiedniego kodu źródłowego) Arduino codice sorgente: # Include # Define StartConvert 0 # Define ReadTemperature 1 Const numReadings = 20 byte;//il numero del campione volte Byte ECsensor Znaczki = A1;//Meter CE uscita analogica, Znaczki su analogico 1 Byte DS18B20 _ Znaczki = 2;//DS18B20 segnale, Znaczki su digitale 2 Unsigned int AnalogSampleInterval = 25, printInterval = 700, tempSampleInterval = 850;//analogico intervallo di campionamento; di serie di stampa intervallo; temperatura intervallo di campionamentoUnsigned int letture [numReadings];//le letture da il ingresso analogico Indice di byte = 0;//la indice di la czytanie corrente Unsigned lungo AnalogValueTotal = 0;//il da corsa totale Unsigned int AnalogAverage = 0, averageVoltage = 0;//la media Unsigned lungo AnalogSampleTime, printTime, tempSampleTime; Galleggiante di temperatura, ECcurrent; //Temperatura chip di i/o OneWire ds (DS18B20 _ Znaczki);//on digital Znaczki 2 Void setup () { //Inizializzazione di comunicazione seriale con il computer: Serial.Stopień przewodności roztworu zmienia się w zależności od stężenia elektrolitu w roztworze wodnym.W międzynarodowym systemie jednostek jednostka przewodności nazywa się Siemens/metr (z/m), a inne jednostki-z/m, MS/cm, ΜS/cmbegin (115200); //Inizializzare tutte le letture per 0: Per (byte thisReading = 0; thisReading Letture [thisReading] = 0; TempProcess (StartConvert);//lasciare che il DS18B20 avviare il convertire AnalogSampleTime = millis (); PrintTime = millis (); TempSampleTime = millis (); } Void loop () { /* Ogni tanto un po ', del campione il valore analogico e calcolare la media. */ Se (millis ()-AnalogSampleTime> = AnalogSampleInterval) { AnalogSampleTime = millis (); //Sottrarre l ' ultima czytanie: AnalogValueTotal = AnalogValueTotal-letture [index]; //Leggere dal sensore: Letture [index] = analogRead (ECsensorPin); //Aggiungere la czytanie per il totale: AnalogValueTotal = AnalogValueTotal + letture [index]; //Anticipo per il prossimo posizione nella matrice: Indice = indice + 1; //Se siamo alla fine della matrice...Se (indice> = numReadings) //. ..Wrap around all ' inizio: Indice = 0; //Calcolare la media: AnalogAverage = AnalogValueTotal/numReadings; } /* Ogni tanto un po ', MCU leggere la temperatura da il DS18B20 e poi lasciare che il DS18B20 avviare il convertire.Attenzione: La intervallo di tempo tra avviare il convertire e leggere la temperatura deve essere maggiore di 750 millisecondi, o la temperatura non è preciso! */ Se (millis ()-tempSampleTime> = tempSampleInterval) { TempSampleTime = millis (); Temperatura = TempProcess (ReadTemperature);//leggere la temperatura attuale dal DS18B20 TempProcess (StartConvert);//dopo la czytanie, avviare il convertire per la prossima czytanie } /* Ogni tanto un po ', stampa le informazioni su il monitor seriale. */ Se (millis ()-printTime> = printInterval) { PrintTime = millis (); AverageVoltage = AnalogAverage * (float) 5000/1024; Serial.print ("il valore Analogico di:"); Serial.print (AnalogAverage);//analogico, in media, da 0 a 1023 Serial.print ("Tensione:"); Serial.print (averageVoltage);//millivolt, in media, da 0mv per 4995mV Serial.print ("mV"); Serial.print ("temp:"); Serial.print (temperatura);//temperatura attuale Serial.print ("^ C EC:"); Galleggiante TempCoefficient = 1.0 + 0.0185 * (temperatura-25.0);//formula di compensazione della temperatura: fFinalResult (25 ^ C) = fFinalResult (corrente) /(1.0 + 0.0185 * (fTP-25.0)); Galleggiante CoefficientVolatge = (float) averageVoltage/TempCoefficient; Se (CoefficientVolatge circa 216mv se la tensione (tensione di compensazione) Altrimenti se (CoefficientVolatge> 3300) di Serie.println ("Fuori della gamma! ");//> 20 ms/cm, fuori della gamma Altro { Se (CoefficientVolatge Altrimenti se (CoefficientVolatge Altro ECcurrent = 5.3 * CoefficientVolatge + 2278;//10 ms/cm ECcurrent/= 1000;//convertire us/cm per MS/cm Serial.print (ECcurrent, 2);//due decimali Serial.println ("ms/cm"); } } } /* Ch = 0, lasciare che il DS18B20 avviare il convertire; ch = 1, MCU leggere la temperatura attuale dal DS18B20. */ Galleggiante TempProcess (bool ch) { //I ritorni la temperatura da un DS18B20 in GRADI Celsius Statica di dati byte [12]; Statica byte addr [8]; Statica galleggiante TemperatureSum; If (!ch) { If (!Ds.search (addr)) { Serial.println ("non più sensori sulla catena, reset di ricerca!"); Ds.reset_search (); Di ritorno 0; } Se (OneWire:: crc8 (addr, 7)! = addr [7]) { Serial.println ("CRC non è valido!"); Di ritorno 0; } Se (addr [0]! = 0x10 & & addr [0]! = 0x28) { Serial.print ("Dispositivo non è riconosciuto!"); Di ritorno 0; } Ds.reset (); Ds.selezionare (addr); Ds.write (0x44,1);//inizio di conversione, con potenza parassita su alla fine } Altro { Regalo byte = ds.reset (); Ds.selezionare (addr); Ds.write (0xBE);//Leggere Appunti Per (int i = 0; i Dati [i] = ds.read (); } Ds.#include #define StartConvert 0#define ReadTemperature 1const byte numReadings = 20; //ilość próbek timesbyte ECsensorPin = A1; //wyjście analogowe WE Meter,wyjście analogowe 1byte DS18B20_Pin = 2; //sygnał DS18B20, wyjście cyfrowe 2unsigned int AnalogSampleInterval=25,printInterval=700,tempSampleInterval=850; //częstotliwość próbkowania analogowego;interwał drukowania sekwencyjnego;temperatury próbki intervalunsigned Int Readings[Numreadings]; // stan z analogowego inputbyte index = 0; // wskaźnik bieżącego odczytu unsigned long Analogvaluetotal = 0; // Aktualny totalunsigned int Analogaverage = 0,averagevoltage=0; // averageunsigned Long analogsampletime,Printtime,Tempsampletime;float temperature,eccurrent; //temperatura układu wejścia / wyjścia DS(ds18b20_pin);/ / on Digital PIN 2void Setup () {//Initialize Serial communication with Computer: Serial.begin(115200); / / initialize all the Readings to 0: for (Byte Thisreading = 0; THISREADING =analogsampleinterval) { Analogsampletime=Millis(); //odejmujemy ostatnie stan: AnalogValueTotal = AnalogValueTotal - readings[index]; // odczyt z czujnika: readings[index] = analogRead(ECsensorPin); // dodajemy wskazania do kwoty: AnalogValueTotal = AnalogValueTotal + readings[index]; // przejdź do następnej pozycji w tablicy: index = index + 1; // jeśli znajdujemy się na końcu tablicy...reset_search (); MSB = dati byte [1]; LSB = dati byte [0]; Galleggiante tempRead = ((MSB TemperatureSum = tempRead/16; } Di ritorno TemperatureSum; }