Zaloguje się
or
Tel +48 698 615 740

Podłączenie czujnika przepływu wody do arduino

01 lutego, 2022

W artykule zostanie omówiony czujnik przepływu wody, który podłączymy do arduino. Będziemy robić z niego odczyt przepływu wody na minutę oraz ilość wody która przepłynęła w mililitrach i litrach.

Spis treści

  • Krótki opis
  • Specyfikacja
  • Podłączenie czujnika do arduino
  • Zaprogramowanie arduino
  • Kalibracja czujnika

Krótki opis

Jest to prosty czujnik do pomiaru przepływu cieczy.  Poprzez zliczanie impulsów kręcącego się wiatraka mierzony jest  przepływ cieczy.

Specyfikacja

  • Materiał: Tworzywo
  • Kolor: przezroczysty
  • Napięcie robocze: DC 5 ~ 15 V.
  • Maksymalny prąd roboczy: 15 mA (DC 5 V).
  • Zakres napięcia roboczego: DC 5 ~ 15 v.
  • Temperatura pracy: di 80 ° C
  • Dopuszczalne ciśnienie: 1,75 MPa
  • Zakres przepływu: 1-30 l / min
  • Dokładność (w 1 ~ 30L MIN): ± 10%
  • Charakterystyka impulsu przepływu (5xQ): Q = L / Min ± 3%
  • Cykl pracy impulsu wyjściowego: 50% ± 10%
  • Montaż na rurę o średnicy 1/2
  • Wymiary: 54 x 29 mm

Podłączenie czujnika do arduino

Połączenie jest bardzo proste, z czujnika wychodzą trzy kable: żółty odpowiada za wysyłanie impulsu sygnału, czerwony za zasilanie 5V i czarny za uziemienie. Zaczniemy od zasilania, czarny przewód wpinamy do GDN, czerwony do 5V. Zajmiemy się teraz żółtym przewodem który podłączamy do pinu 2. Całe połączenie przedstawione jest poniżej.

Zaprogramowanie arduino

Zaczniemy od zadeklarowania potrzebnych zmiennych

byte statusLed    = 13;
byte sensorInterrupt = 0;
byte sensorPin       = 2;
float calibrationFactor = 4.5;
volatile byte pulseCount;  
float flowRate;
unsigned int flowMilliLitres;
unsigned long totalMilliLitres;
unsigned long oldTime;

Ustawiamy potrzebne ustawienia w funkcji setup

void setup()
{
  Serial.begin(9600);//rozpoczęcie transmisji na porcie szeregowym
  pinMode(statusLed, OUTPUT);//ustawienie pinu statusLed jako wyjście
  digitalWrite(statusLed, HIGH);//ustawienie stanu wysokiego na pinie statusLed
  
  pinMode(sensorPin, INPUT);//ustawienie pinu sensorPin jako wejście
  digitalWrite(sensorPin, HIGH);//ustawienie stanu wysokiego na pinie sensorPin

  //ustawienie potrzebnych zmiennych na zero
  pulseCount        = 0;
  flowRate          = 0.0;
  flowMilliLitres   = 0;
  totalMilliLitres  = 0;
  oldTime           = 0;

  attachInterrupt(sensorInterrupt, pulseCounter, FALLING);//ustawienie przerwania na pinie sensorInterrupt i wywołanie funkcji pulseCounter podczas zmiany stanu na niski pinu sensorInterrupt
}

Przechodzimy do głównej funkcji loop

void loop()
{
   
   if((millis() - oldTime) > 1000)      {//wykonuj co jedną sekundę 
    detachInterrupt(sensorInterrupt);
    
    flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;//obliczenie częstotliwości przepływu
    
    oldTime = millis();//przypisujemy do starego czasu obecny
    
    flowMilliLitres = (flowRate / 60) * 1000;//obliczanie mililitrów
    
    totalMilliLitres += flowMilliLitres;//suma milimitrów i przepływu mililitrów
      
    unsigned int frac;//stworzenie zmiennej
    
    //Wypisanie na ekran dancyh

    Serial.print("Czestotliwosc przeplywu: ");
    Serial.print(int(flowRate));
    Serial.print("L/min");
    Serial.print("\t");

    Serial.print("Ilosc przelanej wody: ");        
    Serial.print(totalMilliLitres);
    Serial.print("mL ~ "); 
    Serial.print(totalMilliLitres/1000);
    Serial.println(" L ");

    pulseCount = 0;
    
    attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
  }
}

Ostatnim elementem będzie stworzenie funkcji zliczającej sygnały

void pulseCounter()
{
  pulseCount++;
}

Po wgraniu powinniśmy zobaczyć w monitorze portów szeregowych odczyty z naszego czujnika.

Kalibracja czujnika

Po podłączeniu i wgraniu programu do arduino, może okazać się, że wyniki nie są zgodne ze stanem rzeczywistym i trzeba go ustawić. Do kalibracji czujnika użyłem butelki 1 litrowej ze zrobionymi na spodzie dziurkami, aby zapewnić dojście powietrza. Przelewając przez czujnik całą wodę z butelki, sprawdzałem końcowy odczyt ilości wody przelanej w mililitrach i zmieniałem calibrationFactor, który domyślnie jest ustawiony na 4,5 (możecie znaleźć tą zmienną na samej górze programu). W moim wypadku zadawalające wyniki dawało ustawienie go na 5.1, oczywiście sytuacja u was może być całkowicie inna i sami musicie dostosować odpowiednią wartość. Poniżej zamieszczam filmik, który ukazuje, jak to wyglądało w domowych warunkach.

Sticky
Możliwość komentowania Podłączenie czujnika przepływu wody do arduino została wyłączona
Adrian Wojtala

Adrian Wojtala

Ma 21 lat. Studiuje informatykę na Uniwersytecie DSW, ukończył technikum o profilu technik-informatyk. Interesuje się programowaniem i w przyszłości ma plan zostać back-end developerem. Swoją przygodę z Arduino rozpoczął podczas praktyk od września 2021 r.

Comments are closed.

Strona korzysta z plików cookies w celu realizacji usługi i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.