简介
蠕动泵通过对弹性泵管交替挤压和释放来输送流体,除泵管以外,流体不与泵的任何部件接触,不会污染输送的液体,因此可用来输送各种液体,甚至输送一些带颗粒物的液体。 蠕动泵作为一种计量泵可以方便的进行定量输送,具有广泛的应用场景和使用量,不仅在公民科学等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信号 | 蠕动泵状态(正面观察泵头) |
---|---|
0° | 顺时针最大速度旋转 |
90° | 停止 |
180° | 逆时针最大速度旋转 |
另外,PPM信号中设置的角度值越靠近0°或180°,则电机转速越快;越靠近90°,则电机转速越慢;因此可根据需要设置合适的角度值进行电机的调速,从而达到控制流速的目的。
注意:
- 由于电机功率(5W)较大,为减小电源电压对电机转速的影响,请务必给主控板或扩展板外接电源!
软硬件准备
-
硬件
- DFRuino UNO R3 x1
- DFR0523 Gravity: 蠕动泵x1
- 5~7V外接电源 x1
- Gravity 3Pin数字连接线(或杜邦线) x1
-
软件
- Arduino IDE 点击下载Arduino IDE
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秒,不断的在顺时针最大速度旋转、停止、逆时针最大速度旋转这三个状态之间切换。
高级教程
- 下载并安装GravityPump库。如何安装库?
- 打开Arduino IDE,将下面的代码上传到Arduino UNO。
#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在线客服或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。