This is the SFM3000 a Mass Flow Meter develop by SENSIRION. This can measure a bidirectional flow of air and other non-aggressive gases at rate up to 200slm superb accuracy and extremely high speed output at 14 bit/ 2kHz rate. This flow meter features a sensor chip SF05. In addition to a thermal mass flow sensor element, this chip contains an amplifier, A/D converter, EEPROM memory, digital signal processing, and interface. The signal is internally linearized and temperature compensated and works / operates from 5v supply voltage and communicates via i2c / two wire interface protocol.
The SFM3000 is highly suitable for Medical Instruments like Anesthesia & Inhalers, also can be implemented in Process Automation’s, Burner Control, Fuel Cell Control, Spectroscopy, Environmental Monitoring, and Laboratory Special Equipment’s. Etc.
Required Components
- Arduino IDE | Atmel Studio | Energia | Processing
- Arduino PRO, FIO, NANO, UNO, MINI, MEGA, PRO MINI, LEO, BT, DUE, ETHERNET,LILYPAD, NodeMCU, Teensy Board, TeensyDuino, ESP8266 12, 12E, ESP32, ESP8266, ESPDuino, ATMEGA328 16/12, ATMEGA32u4 16/8/ MHz, ESP8266, MSP430 ,ATMEGA250 16 MHz, STM32, AVR, Note: The Diagram below is using NANO. (please refer to each MCU’s respective pin-outs & bus configurations)
- SFM3000 Mass Flow Meter Sensor
- 16X2 / 20X4 i2c LCD Screen Display Panel
- Capacitors (See below required values)
- Resistors (See below required values)
- PCB Designer (Circuit simulation to PCB Layout)
Wiring Guide
Source Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#include <Wire.h> #include <SFM3000CORE.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F,20,2); //If your using 20x4 display change to (20,2)/(16,2). keep in mind that most i2c address runs on 0x27, 0x3f, 0x38 SFM3000CORE senseFlow(64); int offset = 32000; // Offset float scale = 140.0; // Scale factor for Air & N2 is 140.0, O2 is 142.8 void setup() { Serial.begin(9600); lcd.begin(16,2); lcd.setBacklight(1); lcd.setCursor(0,0); lcd.print("Initializing"); delay(100); lcd.setCursor(0,1); lcd.print("please wait"); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Start Wire"); Wire.begin(); lcd.setCursor(0,1); lcd.print("Sensor Init"); delay(1000); // let serial console settle senseFlow.init(); Serial.println("Sensor initialized!"); lcd.clear(); } void loop() { unsigned int result = senseFlow.getvalue(); float flow = ((float)result - offset) / scale; Serial.print("FLOW > "); lcd.setCursor(0,0); lcd.print("FLOW > "); if (result >= 0) { Serial.print("ERROR"); lcd.setCursor(0,1); lcd.print("ERROR"); delay(4000); } Serial.print(flow, 5); lcd.setCursor(0,1); lcd.print(flow, 5); delay(100); } |
Downloads
- Download SFM3000 Mass Flow Meter Sensor Datasheet
- Download SFM3000 i2C User Guide / Manual
- Download SFM3000CORE Code Library
- Download 16×2 LCD i2c Code Library