Sensor de Fluxo de Água YF-S201 com Arduino Uno

Neste tutorial iremos demonstrar como utilizar o sensor de fluxo de Água com o Arduino Uno. Para acompanhar este artigo, iremos necessitar dos seguintes componentes:

Imagem Produto Comprar
 

 

 

Arduino Uno

 


 

 

 

Cabos Jumper Macho-Macho

 


 

 

 

Sensor Controlo Fluxo de Água 1/2″ YF-S201

 


Sobre o Sensor de Fluxo de Água

Quando a água flui através do rotor, o rotor é enrolado. A sua velocidade muda com uma taxa de fluxo diferente. Em seguida, o rotor magnético faz a reação ao sensor Hall, o sensor de efeito Hall produz o sinal de pulso correspondente. Este sensor é adequado para detectar a taxa de fluxo

  • Modelo: YF-S201;
  • Caudal de Água: 1 – 30L/min;
  • Alta amplitude ≥ 4.6V;
  • Baixa amplitude ≤ 0,5V;
  • Resistência elétrica 1250V / min;
  • Resistência de isolamento ≥ 100MΩ;
  • Teste de pressão hidrostática ≤ 2,0Mpa;
  • Corrente de operação máxima: 15 mA (DC 5V);
  • Gama de tensão de trabalho: DC 5 ~ 18V;
  • Capacidade de carga: ≤ 10 mA (DC 5V);
  • Temperatura de utilização: ≤ 80°C;
  • Faixa de humidade operacional: 35% ~ 90% RH;
  • Pressão máxima: 2.0Mpa;
  • Temperatura: -25 ~ + 80°C;
  • Diâmetro exterior: 20mm;
  • Diâmetro de entrada: 9mm;
  • Diâmetro da saída: 12mm.
Sensor de Fluxo de Água YF-S201

Esquema de Montagem

Esquema de Montagem

Código Utilizado

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;

void setup()
{

Serial.begin(9600);

pinMode(statusLed, OUTPUT);
digitalWrite(statusLed, HIGH);

pinMode(sensorPin, INPUT);
digitalWrite(sensorPin, HIGH);

pulseCount = 0;
flowRate = 0.0;
flowMilliLitres = 0;
totalMilliLitres = 0;
oldTime = 0;

attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
}

void loop()
{
if ((millis() - oldTime) > 1000) 
{
detachInterrupt(sensorInterrupt);
flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;
oldTime = millis();
flowMilliLitres = (flowRate / 60) * 1000;

totalMilliLitres += flowMilliLitres;

unsigned int frac;

Serial.print("Flow rate: ");
Serial.print(int(flowRate)); 
Serial.print("L/min");
Serial.print("\t");

Serial.print("Output Liquid Quantity: ");
Serial.print(totalMilliLitres);
Serial.println("mL");
Serial.print("\t"); // Print tab space
Serial.print(totalMilliLitres / 1000);
Serial.print("L");

pulseCount = 0;

attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
}
}

void pulseCounter()
{
pulseCount++;
}

Para mais projetos, percorram o nosso blog, onde podem encontrar vários artigos interessantes relacionados com eletrónica, robótica e muito mais! Visitem também o nosso site, onde encontram tudo para eletrónica e robótica!