【DigiKey“智造万物,快乐不停”创意大赛】作品提交 - 无线模块化高精度滴定系统
[复制链接]
无线模块化高精度滴定系统
作者:allenliu
一、作品简介
微量柱塞泵是一种用步进电机和丝杠带动活塞来实现液体或气体的输送功能的一种高精度长寿命泵。
该系统采用了1mL容量的泵, 也就是一个行程能够输送1mL的液体, 可以实现最低0.5uL的流量控制精度, 也就是相当于可以控制一次泵出1/100滴水。可以用于微流体的控制, 实现血液生化分析等。
传统的柱塞泵控制系统一般采用RS485,需要额外的USB转RS485硬件和电缆连接,而且如果隔离不好还有烧毁PC的USB,主板的风险。由于采用RS485,导致只能通过PC来控制。
无线滴定系统省却了通讯电缆,由于连接到服务器端,可以通过PC或者手机等来控制微量泵,不仅节省成本,再物理上也更加安全。
系统功能包括:
1. 用手机自带的WIFI扫描器扫描设备二维码就可1秒左右入网, 期间要更换网络只要再次扫描即可,无需按键重置设备,无需用户安装额外App。
2. 泵支持A口吸液,A口出液,B口吸液,B口出液等操作
3. 流量最小分辨率为7.8125nL, 即为0.0078125毫升
4. 使用树莓派作为服务器, 可连接多台滴定泵
5. 可通过PC, 手机等控制泵
6. 使用MQTTv5协议,支持二次开发
7. 只需使用一路工业/医疗标准的24v供电
二、系统框图(图文结合)
从框图可以看出, 该泵包括一个步进电机(M)连接一个活塞和缸体, 活塞连接一个三通阀门。
三通阀门供电为12或者24v,通过一个电磁控制驱动芯片来驱动, 该芯片集成了输入保护, 续流二极管等功能,能够很好的节省元件数量, 减少体积和成本。
步进电机有TMC2209的驱动模块控制, 实现电机的静音控制。
由于是开环步进电机驱动,这里需要一个光电对射开关(ITR)来实现位置的检测,这里不用TMC2209里的无限位检测功能原因是怕长期对丝杠有损坏, 还有就是在一些特殊情况下需要泵送很高的压力的情况下会检测失败。
系统通过ESP32-C6来提供控制功能, 通过检测(ITR),控制阀门方向和驱动TMC2209来实现泵的控制。由于电磁阀是12v/24v供电的, 考虑到工业和医疗一般为24V供电,这里也使用24v电源, 通过DCDC来降压到3.3v。
三、各部分功能说明(图文结合)
主控采用ESP32C6, 原设计计划采用ESP32C6+RP2040的方式, ESP32C6用于通讯,RP2040用于电机控制, 不过画图过程中发现外壳的空间不足以放下RP2040。
步进电机驱动器采用TMC2209, 所有的控制引脚都连接到主控,可以编程方式控制细分和运行模式, 还能用串口驱动。
设备需要确定丝杠滑块状态,可以通过对射光耦或者TMC2209的电流来判断,本着寿命和噪声的考虑选了前者的方案。
U2是用于控制电磁阀的, 作为一个一体化驱动, 外观和普通的sot23的管没什么区别,可以节省空间和成本, 相对于光耦方案。
供电采用LGS5148 buck芯片,该芯片VIN高达48v,SOT-23-6的封装非常小巧,关键是该封装有很多PIN2PIN的替代。
电源模块的原理图:
-
- PCB设计
考虑到想要做通用模块,以后diy也能用的,设计的时候就考虑到很多方案,尤其是排版上也画了很多样式。
PCB的效果图1:
这种可以采用插件或者贴片的方式,焊接的时候用电烙铁就可以了, 为了分板方便又画了方便分板的图, 不过发现JLC免费的不给做这种方式的。
还有用这种分立方式, 直接用PCB做引脚, 省掉了插件, 采用双面对称结构,安装在板边的时候可以更加灵活:
对应的焊盘:
画完焊盘后发现这种结构的缺点就是焊盘占用空间大。
而且这种焊盘怕之后嘉立创审核麻烦。
还有设计了一种就是采用双面方式的, 这种就做成模块画PCB的时候直接用。
就在准备提交制板的时候发现居然有卖成品的模块的, 体积也小:
免费的PCB券就省一张了, 于是就先用这个成品替代了。
外壳采用的是一个接线的公模,找了1周试过多款外壳发现这个居然完美匹配:
根据外壳画了PCB: 由于体积限制和天线的信号考虑,把ESP32C6 MINI放背面, 漂空中的是对射光耦,活塞的位置检测, PCB和外壳通过光耦固定螺丝拧到电机上:
焊接组装调试
经过“漫长”的等待, PCB回来了:
郁闷的是焊了2次天电流都不对,一度以为供电电路有问题, 零时洞洞板飞线试了下,一次点亮:
这次干脆不用焊锡膏, 之间焊锡怼上去, 焊上一次搞定。
尴尬的事情来了, 算错外壳高度了, 导致步进电机高出外壳2MM, 而电源模块高出了1MM。后来想半天想到可以把步进电机不焊接针 电源模块之间锉刀锉平一点, 不过感觉一个引脚有点松, 就给开盖了, 还好用的软硅胶, 打开发现引脚锡断了, 这种引脚用的贴片的, 干脆都去掉, 之间贴着焊盘焊接。
安装完后的效果(对射光耦和电磁阀还未焊接):
中间3P是用于USB调试的, D-,D+,GND, 接上电源插上USB杜邦线就能调试了。
- 安装EMQX MQTT
EMQX是个功能很强大的MQTT服务器。支持由于EMQX不在apt默认库里, 需要导入相应的源。
树莓派上运行:
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh| sudo bash
sudo apt-get install emqx
sudo systemctl start emqx
安装完后就可以用http://pi-iot:18083访问emqx后台了。
- 开启COAP
- 在“Access Control”->Authentication->Create…->Password Based开启密码认证功能, 添加用于设备的用户名和密码。
- 在扩展网关那启用COAP插件:
- 测试MQTT功能
- 在树莓派终端启动MQTT订阅:
mqttx sub -t +/# -u aa -i user1 -P 123 -v
- 获取token:
coap-client -m post -e "" "coap://192.168.1.47/mqtt/connection?clientid=user1&password=123"
- 使用获取的token发布消息:
coap-client -m post -e "abc2132123" "coap://192.168.1.47/ps/aabbcc?clientid=a&token=3696240490"
- 模块设计
由于对速度有要求,软件采用原生IDF开发,安装IDF文档说明安装好开发环境。
为了方便代码管理, 把用到的模块封装成了几个库:
File: 负责spiffs的读写
Wifi:主要是网络的配置功能
void my_wifi_init();
void my_wifi_connect();
void my_wifi_run_dpp(); /* 运行easyconnect 服务, 用户通过用手机自带的WIFI设置扫描生成的二维码就能快速入网了,测试了下速度大概在1秒左右就能配置好了 */
void my_wifi_register_event(my_wifi_event_handler handle);
mDNS: 主机名查询,网络发现等
coap:用于连接MQTT服务器
mqtt:lwip版本的用tcp方式连接MQTT服务器
void my_mqtt_init();
void my_mqtt_register_event(my_mqtt_event_handler handler);
void my_mqtt_start();
void my_mqtt_stop();
void my_mqtt_run();
stepper:步进电机驱动库
void my_stepper_init();
void my_stepper_drop(int32_t nl); // 滴定给定的液体, 单位为纳升
Easy Connect(DPP) 使用的时候需要配置要监听的通道, 在入网后WIFI就会切换到路由器指定通道通讯了, 为了让DPP继续工作,代码中做了处理让其自动切换到同一通道。
四、作品源码
见附件压缩包
五、作品功能演示视频
见下方视频效果
3e8e24c98052
六、项目总结
由于比较晚收到板子, 项目有点赶,再加上对系统复杂度的错误估计, 导致了没有时间完善所有的功能,花在该项目的时间上超过了上百小时。
不过在项目中学到了很多知识,包括电机控制, ESP32从无到有等。也能在交流群中学到新的东西。
【DigiKey“智造万物,快乐不停”创意大赛】物料开箱 基于OpenThread的多路滴定控制器
https://bbs.eeworld.com.cn/thread-1262539-1-1.html
【DigiKey“智造万物,快乐不停”创意大赛】无线滴定系统 - 系统架构:
https://bbs.eeworld.com.cn/thread-1267962-1-1.html
【DigiKey“智造万物,快乐不停”创意大赛】无线滴定系统 - 1 树莓派4B上搭建MQTT
https://bbs.eeworld.com.cn/thread-1264545-1-1.html
【DigiKey“智造万物,快乐不停”创意大赛】无线滴定系统 - 步进电机S曲线加速测
https://bbs.eeworld.com.cn/thread-1268069-1-1.html
七、视频效果
考虑到手头没有细的针头,加上太小视频看不出效果,录制的时候使用了4微升, 8微升和40微升进行展示。
用的MQTT的命令格式为:
[步进量] [推挤/抽吸] [推挤抽吸方向]
通过这三个参数可以实现左侧吸液,左侧出液,右侧吸液,右侧出液这4种功能。 这些操作在实际的应用中是很常见的。
生化(血液)检测就是通过这个实现移液滴定等功能。
lv_0_20240119100350
|