💡 在阅读本章节之前建议先阅读并了解步进电机相关内容
💡 点此观看视频版本 一起来搭建简易注射泵
注射泵是一种智能化的注射装置、由步进电机及其驱动器、丝杆和支架等构成,具有往复移动的丝杆、螺母,因此也称为丝杆泵。其能够精确、均匀、持续地输送液体,可严格控制液体用量,保证流体最佳的有效浓度,合理地调节流体注射速度,连续输注各种流体。
工作时,控制系统发出控制脉冲使步进电机旋转,而步进电机带动丝杆将旋转运动变成直线运动,推动注射器的活塞进行注射输送液体,实现高精度,平稳无脉动的液体传输。
下图为注射泵示意图,标明了注射泵的主要部件,包括步进电机、丝杠、注射器系统等。在实际搭建注射泵平台时,还需根据注射器尺寸的不同,设计夹具,对注射器进行固定。
与注射泵运行直接相关的是传动平台丝杠的导程参数,表示了丝杠每转一圈,滑块运动的距离(单位毫米),本实例中传动平台型号为(T6*1 100mm)其中1表示导程为1mm。在样例程序中可以对传动平台的导程进行设置(见4.4节)。
根据圆柱体体积公式
因此,注射泵速率为
其中:
V 表示体积(立方毫米)
d 表示注射器直径(毫米)
h 表示柱体长度(毫米)
s 表示射泵速率(毫升/秒)
v 表示步进电机转速(转/秒)
l 表示导程(毫米/转)
❗ 注意: 购买链接可能存在失效的可能,若出现,可以自行搜索购买。
💡 将下载好的3D打印模型中的STL文件发送给3D打印商家即可打印。
采购链接 https://item.taobao.com/item.htm?ft=t&id=769928450877
💡 上方链接为一站式集成采购链接,若需自行采购可参考下方表格。
编号 | 名称 | 数量 | 购买链接 |
---|---|---|---|
1 | 丝杠传动平台 (T6*1 100mm) | 1台 | 欧力达电动滑轨模组 |
2 | 步进电机驱动器 | 1台 | TB6600步进电机驱动器 |
3 | esp32或其它微控制器 | 1台 | NODEMCU-32-S2 |
4 | 10毫升注射器 | 1只 | 医用一次性螺口注射器针管 |
5 | 注射器支架 | 1副 | 3D打印零件 模型下载 |
6 | 螺丝 | 若干 | M2.5*10内六角螺丝 |
7 | 杜邦线 | 若干 | 杜邦线 母对母/公对母/公对公 |
8 | 导线 | 若干 | 导线 |
9 | 24V电源 | 1台 | 24V2A电源适配器 |
10 | DC转接头 | 1个 | DC 5.5x2.5mm 转接头母头 |
按照以下电路图安装全部的硬件电路:
❗ 注意: 因P43、P44为开发板默认的串口引脚,因此不需要在此处接线,只需直接将开发板使用usb线连接至计算机即可使用计算机中出现的串口直接与之通信。
💡 若使用USB线连接开发板与计算机,5V电源的将会由USB提供,无需额外供电设备。
💡ENA- DIR- PUL-可串联后接入同一GND引脚。
连接完成后的成品效果如图:
注射泵控制程序已上传至相应的代码仓库,可以通过下方链接下载,使用VScode打开所下载的文件夹并烧录至esp32微型控制器。
💡 注射泵esp32控制程序下载或查看注射泵esp32控制程序Gitee仓库
❗ 注意: 解压项目代码时,请确保解压完成的路径中无除英文字母、数字和允许的半角符号外的其他字符。烧录时应拔去引脚接线,以免流程失败并报错。烧录成功后开发板亮起蓝灯。
💡 有关如何编译代码并刷写esp32设备,请参考化学自动化开发环境搭建4.3节内容
如果使用 ESP32-S2的芯片,请将不要使用0号IO引脚(会使芯片开机进入烧录模式),可以将ENABLE引脚设为3号
如需修改控制器IO引脚编号,请修改injection_pump_global.h内容:
#define IO_PIN_SERIAL_TXD 43 //串口发送
#define IO_PIN_SERIAL_RXD 44 //串口接收
#define IO_PIN_ENABLE 0 //步进电机驱动器使能
#define IO_PIN_DIRECTION 1 //步进电机方向控制
#define IO_PIN_STEP 2 //PWM信号
以上宏定义了IO引脚编号。
如果采用了与示例不同型号的步进电机和传动平台,您需要修改injection_pump_controller.h中的以下参数:
#define LEAD 1 // 丝杆导程
#define MICRO_STEP 4 // 步进电机微步细分倍数
#define STEP_ANGLE 18 // 步进电机步进角的10倍
以上宏定义了步进电机及步进电机驱动器的参数。
💡有些步进驱动器可以设置微步和电流,请根据需要设置修改驱动器或代码的参数。电流过大过小都可能导致电机无法正常启动。
💡 有关串口调试的详细内容,请查看串口通信章节内容
指令 | 参数 | 功能 | 单位 | 示例 | 备注 |
---|---|---|---|---|---|
push | double | 泵出液体 | ml | push 1 | 泵出1毫升液体 |
pull | double | 吸入液体 | ml | pull 1 | 吸入1毫升液体 |
set_speed | double double | 设置输液速度 | μl/s | set_speed 200 300 | 设置输液速度从200微升每秒递增至最大300微升每秒 |
set_pump_diameter | double | 设置注射器直径 | mm | set_pump_diameter 15 | 设置注射器直径15mm(默认值) |
参数 | 值 |
---|---|
波特率 | 9600 |
数据位 | 8 |
停止位 | 1 |
校验 | None |
流控 | None |
使用串口调试助手软件,设置对应的串口参数,选择正确的串口号,点击打开串口。
根据4.5.1节中的指令控制注射泵。以下为示例:
💡 每条指令发送后,若设备正常接收,会向串口反馈Command received。若还有其他信息如:Bad command、Speed error,可能由于指令有误,请检查指令和串口设置是否正确。
❗ 注意: // 标志及其后文本为注释内容,在运行中不会显示,也不要向设备输入。
❗ 注意: // 单片机蓝灯熄灭时,可能是单片机程序出错,此时应该按下EN按钮重启单片机。
[00:00:00.000]OUT→◇set_pump_diameter 15 // 设置注射器直径为15mm
[00:00:00.000]IN←◆Command received // 控制器已收到指令
[00:00:00.000]OUT→◇set_speed 100 200
// 设置泵速度,开始从100微升每秒加快至200微升每秒,
//结束时从200微升每秒减速至100微升每秒,最后停止。
[00:00:00.000]IN←◆Command received // 控制器已收到指令
[00:00:00.000]OUT→◇push 1.5 // 推出1.5毫升液体
[00:00:00.000]IN←◆Command received // 控制器已收到指令
[00:00:00.000]OUT→◇pull 1.5 // 吸入1.5毫升液体
[00:00:00.000]IN←◆Command received // 控制器已收到指令
push 1
指令,每次推出1毫升液体,并记录电子天平读数。注射泵泵入体积 | 质量读数 | 单次质量 |
---|---|---|
0 | 0.000 | / |
1 | 0.977 | 0.997 |
2 | 1.961 | 0.984 |
3 | 2.945 | 0.984 |
4 | 3.917 | 0.972 |
5 | 4.898 | 0.981 |
6 | 5.906 | 1.008 |
对每次泵出质量,计算其平均值:
*注:25度室温下水的密度为0.997g/ml
对每次泵出质量,计算其标准偏差:
以程序设定累计体积为x轴,实际体积为y轴,进行线性回归分析:
根据线性回归方程,即可计算所需质量对应的体积应在程序中指定的矫正体积。