Gravity 蠕动泵

简介

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

产品功能描述

  • 三滚轮挤出,出水稳定
  • 计量准确(校准后)
  • 自带驱动器
  • PPM信号驱动,简单易用
  • 兼容3.3~5.5V主控器
  • 反接保护

产品参数

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

  • 驱动板
    • 输入电压: 5V-6V
    • 最大连续工作电流:1.8A
    • 峰值电流:2.5A
    • 静态电流:<1mA (无PPM控制信号输入)
    • PPM信号分辨率:1us
    • PPM信号正脉宽范围:500us-2500us
    • 正转脉宽范围:500us-1400us (500us转速最大)
    • 停止点脉宽范围:1400us-1600us
    • 反转脉宽范围:1600us-2500us(2500us转速最大)
    • PWM驱动频率:500 Hz
    • 连线接口:Gravity-3P
    • 板子尺寸: 27.4mm x 28.7mm
    • 蠕动泵
      • 电机:直流有刷电机
      • 工作电压:6V
      • 额定功率:5W
      • 泵管材质:BPT
      • 泵管规格:内径3mm,外径5mm
      • 泵头材质:工程塑料
      • 脉动:三滚轮,脉动小
      • 流量:85ml/min(最大转速)
      • 工作条件:环境温度 0~40℃,相对湿度<80%
      • 安装方式:平板式

引脚说明

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

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

Arduino使用教程

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

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

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

注意:

  • 由于电机功率(5W)较大,为减小电源电压对电机转速的影响,请务必给主控板或扩展板外接电源!

软硬件准备

arduino控制蠕动泵

接线图

样例代码

  • 将模块与Arduino按照上方的连线图相连,当然你也可以配合Gravity I/O扩展板使用,可以更方便、更快速的完成项目原型搭建。
  • 打开Arduino IDE,将下面的代码上传到Arduino UNO。
/***************************************************
     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在线客服或者论坛联系我们!

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

更多

DFshopping_car1.png DFRobot商城购买链接