Water flow sensor question

  • hi everyone. we have the FS400A G1 flow sensor, and been working with the lopy4, but we are very confused about how to implementate the RPM function. i hope some answer in mycropython to be used on a lopy4. thank's

    from time import sleep
    import machine
    rmt = machine.RMT(channel=3)
    rmt.init(gpio="P4", rx_idle_threshold=16000)
    lt = 0
    while True:
        data = rmt.pulses_get(timeout = 5000)

    And arduino code

    // Fórmula:   f(Hz) = K * Q(L/min) 
    // Sensor de ¼”:   S
    // Sensor de ½”: 7,5
    // Sensor de ¾”: 5,5
    // Sensor de 1″: 4,8
    volatile int CantPulsos;  //Variable que acumula los pulsos recibidos
    int LxM;      //Variable que acumula el calculo de Litros por Minuto 
    int pinsensor = 2;    //Numero de pin donde conectamos el sensor
    float FacConv = 4.8;    //Factor de Conversion para calcular caudal
    void rpm ()  {      //Función que se ejecuta durante la interrupción
      CantPulsos++;   //Incrementa el contador de pulsos
    void setup() { 
      pinMode(pinsensor, INPUT);    //inicializa el pin digital 2 como entrada
      Serial.begin(9600);       //inicializa el puerto serie
      attachInterrupt(0, rpm, RISING);  //(Interrupcion 0(Pin2),funcion rpm,Flanco de subida, cuando pasa de LOW a HIGH)
    void loop () {
      CantPulsos = 0;           //Pone en 0 el contador de pulsos
      sei();               //Habilitamos las interrupciones, equivalente a sei();
      delay (1000);           //Esperamos un segundo
      cli();               //Deshabilitamos las interrupciones, equivalente a cli();
      LxM = (CantPulsos / FacConv);     //Calcula los Litros por Minuto 
      Serial.print (LxM, DEC);    //Imprime la cantidad de litros por minuto
      Serial.print (" L/min\r\n");    //Imprime "L/min" y salta a una nueva linea

  • I provided a general solution to pulse counting in the following post:

    At some point I may provide a micropython library for this.

Log in to reply

Pycom on Twitter