pulseCount = 0; attachInterrupt(digitalPinToInterrupt(2), pulseCounter, RISING); oldTime = millis();
| Benefit | Explanation | |---------|-------------| | | No need to buy physical sensors for initial testing | | Rapid prototyping | Test code changes in seconds | | Debugging | View pulse trains, count interrupts virtually | | Education | Safe environment for students learning flow sensors | | Hardware independence | Simulate even when sensor is out of stock | yfs201 proteus library
But there’s a catch: . This article provides a complete walkthrough on sourcing, installing, and using a custom YFS201 library for Proteus. You will learn why simulation matters, how to model flow sensors, and how to write firmware that reads flow rate and total volume—all without a physical prototype. Part 1: Understanding the YFS201 Flow Sensor Before diving into the Proteus library, let’s recap what the YFS201 is. Key Specifications | Parameter | Value | |-----------|-------| | Operating Voltage | 5V to 24V DC | | Current Consumption | ≤ 15 mA | | Flow Rate Range | 1 – 30 L/min | | Pulse Frequency | F = (7.5 * Q) ± 3% (Q in L/min) | | Output Signal | Square wave (Hall effect) | | Connection | 3-pin (Red: VCC, Black: GND, Yellow: Signal) | How It Works The YFS201 contains a pinwheel rotor and a Hall effect sensor. As liquid flows through the valve, the rotor spins, causing the Hall sensor to generate a pulse train. The frequency of these pulses is proportional to the flow rate . Part 1: Understanding the YFS201 Flow Sensor Before
For final product development, always verify with a physical YFS201. If you cannot find a YFS201 library, use these Proteus substitutes: Option A: Pulse Generator + Custom Formula Place a Pulse Generator (in Proteus → Generators → DCLOCK or PULSE) and connect to the microcontroller pin. Manually set frequency = desired flow rate × 7.5. The frequency of these pulses is proportional to
volatile int pulseCount = 0; float flowRate = 0.0; float totalLiters = 0.0; unsigned long oldTime = 0;
Formula:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2);