Gravity 蠕动泵

简介

蠕动泵通过对弹性泵管交替挤压和释放来输送流体,除泵管以外,流体不与泵的任何部件接触,不会污染输送的液体,因此可用来输送各种液体,甚至输送一些带颗粒物的液体。 蠕动泵作为一种计量泵可以方便的进行定量输送,具有广泛的应用场景和使用量,不仅在公民科学等diy项目中有大量应用,且在各种涉水项目中均有相应的应用需求。如水培、滴灌,热带鱼养殖,虾缸环境控制等常规使用。 同时,蠕动泵在食品、医疗等行业中也有着广泛的应用。 我们的这款蠕动泵套件,提供简单易用的Gravity接口、舵机PPM信号的驱动方式,大大简化了使用难度,因此可以方便的使用Arduino、树莓派、micro:bit等控制器进行控制。泵头中的泵管材质为BPT,抗酸碱,寿命长,非普通硅胶管能比。 有了这款蠕动泵,可以实现非常有趣的应用,如酸碱滴定、溶液定量等。在实验室应用中,大量的滴定试验可以用蠕动泵这样的计量泵完成自动化改造,如:水电位滴定、基于指示剂的颜色滴定、基于pH剂的滴定等。

产品功能描述

产品参数

产品参数:应至少包含以下项目。格式参考以下填写方式。】

引脚说明

DFR0523 Gravity: 蠕动泵驱动板引脚说明

标号 名称 功能描述
1 D 控制信号输入(PPM信号)
2 + 电源正极(5~6V)
3 - 电源负极(0V)
4 M- 电源正极
5 M+ 电机正极

Arduino使用教程

本教程将演示如何让这款蠕动泵产品进行顺时针旋转、停止旋转、逆时针旋转这三个基本功能。 电机驱动板采用舵机的PPM信号进行控制,对应关系如下:

PPM信号 蠕动泵状态(正面观察泵头)
顺时针最大速度旋转
90° 停止
180° 逆时针最大速度旋转

另外,PPM信号中设置的角度值越靠近0°或180°,则电机转速越快;越靠近90°,则电机转速越慢;因此可根据需要设置合适的角度值进行电机的调速,从而达到控制流速的目的。

注意:

软硬件准备

arduino控制蠕动泵

接线图

样例代码

/***************************************************
     DFRobot Gravity: Peristaltic Pump
     <https://www.dfrobot.com/wiki/index.php/Gravitry: Peristaltic Pump SKU:DFR0523>

     ***************************************************
     This sample code shows 3 states: clockwise maximum speed rotation; stop; counterclockwise maximum speed rotation

     Created 2017-12-25
     By Jason <jason.ling@dfrobot.com@dfrobot.com>

     GNU Lesser General Public License.
     See <http://www.gnu.org/licenses/> for details.
     All above must be included in any redistribution
     ****************************************************/

     /***********Notice and Trouble shooting***************
    0   -> clockwise maximum speed rotation
    90  -> stop
    180 -> counterclockwise maximum speed rotation
     ****************************************************/

    #include <Servo.h>

    Servo myservo;

    #define PUMPPIN 9    //peristaltic pump control pin, connect to arduino digital pin 9
    #define waitTime 2000 //interval time(ms) between every state

    void setup()
    {
      myservo.attach(PUMPPIN);
    }

    void loop()
    {
        myservo.write(0);   //Clockwise maximum speed rotation
        delay(waitTime);
        myservo.write(90);  //Stop
        delay(waitTime);
        myservo.write(180); //Counterclockwise maximum speed rotation
        delay(waitTime);
        myservo.write(90);  //Stop
        delay(waitTime);
    }

Mind+代码

结果

上传样例代码后,可看到蠕动泵开始工作,每隔2秒,不断的在顺时针最大速度旋转、停止、逆时针最大速度旋转这三个状态之间切换。

高级教程

  #include "GravityPump.h"
  #include "Button.h"//https://github.com/DFRobot/Button

  GravityPump pump;
  Button button;
  bool run = true;
  int debug = 1;

  void setup()
  {
      pump.setPin(9);
      button.init(2);
      Serial.begin(115200);
      pump.getFlowRateAndSpeed();
  }

  void loop()
  {
      pump.update();
      button.update();
      if (debug)
      //in debug mode the pump will do calibation.
      //if set the debug mode off then the function works.
      {
          pump.calFlowRate();
      }
      else
      {
          if(run)
          {
              //switch the function by using Comments.
              run = false;
              // Serial.println(pump.flowPump(6.6));
              //just put the number in ml then the pump will dosing the numbers of liquid to you.
              //and you can find the numbers from serial port.
              Serial.println(pump.timerPump(120000));
              //just put the number in milisecend then the pump will dosing the time of numbers for you.
              //and you can find the numbers from serial port.
          }

      }
      if(button.click())
      {
          //Serial.println("click");
          //when you click the button the pump will stop immediately
          pump.stop();
      }
      if(button.press())
      {
          Serial.println(pump.flowPump(100));
          //when you press the button the pump will continue working.
          //Serial.println("press");
      }
  }

结果说明

该代码有两个模式,一个是调试模式,在调试模式下,debug赋值为1。

调试模式下,进入流量校准模式。

在串口调试串口,输入STARTCAL回车后进入校准模式。

蠕动泵将运行一段时间,请用我们提供的量筒接取泵出的水量。

读取量筒度数后,将数据用“SETCAL:XX”(XX表示读取数据、英文标点)输入后回车。

校准结束。

相关校准数据会存入arduino的E2PROM。

在正常使用模式下,请将debug赋值为0。

写入代码后,水泵会运行,按下按钮后,水泵会停止,再次按下后会继续运行。

长按按钮,则水泵持续运行。

API功能说明

蠕动泵状态更新 void update();

获取蠕动泵状态,必须放在主循环LOOP中。

引脚设置 void setPin(int pin);

设置蠕动泵接线引脚。

校准功能 void calFlowRate(int speed = 180);

校准功能,参数中是当前速度下的校准值。

在串口窗口中输入STARTCAL启动校准。

蠕动泵将运行一段时间,请确保管子内液体呈满管状态。校准请使用提供的量筒或自行准备量筒。

输入SETCAL:XX,其中xx为量筒读取的数据。输入回车后即可完成校准。

基本功能 void pumpDriver(int speed, unsigned long runTime);

void pumpDriver(int speed, unsigned long runTime); 
//speed 为速度参数,0到180,90停止,0和180分别为两个方向最大速度
//runTime 为运行时间,单位毫秒

/*举例*/
void pumpDriver(180,3000)//顺时针运行3秒

定时功能 float timerPump(unsigned long runTime);

定时功能,运行给定时间,单位毫秒,并在串口给出输出体积,单位mL。

如果进行过校准,则给出的体积数将基本等于理论值。

float timerPump(unsigned long runTime); 
//runTime 运行时间,单位毫秒
//输出给定时间液体,串口输出流量值,单位mL(毫升)

流量功能 float flowPump(float quantitation);

流量功能,给定体积数,泵将输出给定的流量,单位mL。

如果进行过校准,则给出的体积将基本等于理论值。

float flowPump(float quantitation);
//quantitation 流量,单位mL
//输出给定流量液体

读取流量值 void getFlowRateAndSpeed();

读取功能,读取存储在EEPROM里的速度(0~180)和流量值(ML)

停止功能 void stop();

停止功能。使用这个功能将立刻停止水泵的运行。

常见问题

还没有客户对此产品有任何问题,欢迎通过QQ在线客服或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多