Der Sensor YF-S201 ist ein Wasser- bzw. Durchflusssensor auf Basis eines Halleffekt-Sensors, der z.B. in eine Wasserleitung eingebaut werden kann. Der magnetische Sensor ist versiegelt und geschützt in dem Gehäuse integriert. Fließt Wasser durch den Sensor, dann werden elektrische Impulse generiert, die mit einem Mikrocontroller ausgelesen werden können. Jeder Impuls entspricht in etwa 2,25 Millilitern.
Betreibsspannung: | 4,5V bis 24 V |
---|---|
Maximale Stromaufnahme: | 15 mA |
Flussmenge: | 1 l/min bis 30 l/min |
Max. Wasserdruck: | 1,74 MPa |
Impulse pro Liter: | 450 |
Genauigkeit: | ±10 % |
Ausgabetyp: | 5 V TTL |
Flankensteigungszeit: | 0,04 µs |
Flankenabfallzeit: | 0,18 µs |
Es ist zu beachten, dass der YF-S201 kein geeichtes Bauteil darstellt und somit keine sehr hohe Genauigkeit zu erwarten ist. Es kann aber als Grundlage für eigene Versuche dienen. Der gemessene Durchfluss ist beispielsweise abhängig vom Wasserdruck.
Pin | Beschreibung | Arduino Uno/Nano |
---|---|---|
rot | Spannungsversorgung | 5V |
schwarz | Masse/0V | GND |
gelb | Signalausgabe | D2 (oder andere digitale Pins) |
Im ersten Versuch werden die einzelnen Impulse gezählt und einmal pro Sekunde ausgegeben. Im folgenden
Sketch wird für jeden Impuls ein Interrupt getriggert und nach einer Sekunde wird die Anzahl der Impulse
wieder auf 0 zurückgesetzt.
Wichtig ist, darauf zu achten, dass ein Pin verwendet wird, der als Interrupt benutzt werden kann.
(siehe Interrupt-fähige Pins bei Mikrocontrollern)
#define PIN_FLOW 2
#define MEASURE_DELAY 250
#define lmillis() ((long)millis())
volatile int pulses;
long nextMeasure;
void setup()
{
Serial.begin(9600);
pinMode(PIN_FLOW, INPUT);
pulses = 0;
nextMeasure = lmillis() + MEASURE_DELAY;
attachInterrupt(digitalPinToInterrupt(PIN_FLOW), countPulse, RISING);
}
void loop()
{
if (lmillis() - nextMeasure >= 0) {
noInterrupts();
nextMeasure = lmillis() + MEASURE_DELAY;
Serial.println(pulses);
pulses = 0;
interrupts();
}
}
void countPulse()
{
pulses++;
}
Laut Herstellerangaben lässt sich die Flussrate sehr leicht mit folgender Formel errechnen:
Flussrate in l/min. = Pulsfrequenz (Hz) / 7,5
Somit müssen können wir den vorherigen Sketch verwenden, nur dass noch die Zeile:
Serial.println(pulses);
ausgetauscht werden muss mit der Zeile:
Serial.println(String(pulses/7.5) + " l/min");