XRD自动换样系统

喵小喵 发布于 2025-11-12 最后更新于 2025-11-12


缘起

自XRD数据处理程序切换使用后,衍射数据的后端计算已经不再需要人工进行;但是因为目前的XRD设备并未配备自动换样器,所以在整个测试期间,依然需要人员进行值守换样,那么整个的工作效率并没有得到提升。

参考帕纳科自有的自动换样系统,以及布鲁克XRD自动换样器,其基础设计都是多个金属构成的纵向样品架,上面放置圆形样品台;水平旋转驱动系统由底座执行,垂直运动驱动系统则由丝杆+光轴/线轨组成;两家设备的差异点只在于样品装载/卸载方式不同:

帕纳科所使用的是一个可以叉住圆形样品台的类似于扳手的金属片(亦或塑料?)通过类似于叉车的方式将样品台叉起,并在到达测试台处放下,测试台升起至测试位置;而布鲁克的则采用机械手进行样品的装卸。

相较而言布鲁克的方式比较节省空间,无论是为了叉出样品台所需的横向空间,以及为了确保样品台被叉起的纵向空间,但代价是系统结构较为复杂,额外增加了一个机械手部件;而帕纳科自动进样器已经能够实现的3×15样品一次进样足够满足测试需求,所以第一阶段目标暂时先以简单方法实现来进行。

ToDo List

  1. 安装配置ESP-IDF环境
  2. 使用ESP32驱动一个步进电机
  3. 步进电机指定步数停止
    • 达到PCNT断点后脉冲仍未停止输出的问题
    • 需求步数大于PCNT溢出上限的情况处理
  4. 加减速控制
    • S形加减速曲线的数学模型及算法实现
  5. 闭环控制?还是视觉识别?亦或二者同时存在?

记录

1.安装配置ESP-IDF环境

乐鑫官方已经给出了非常简单的ESP-IDF安装方式,如果使用VS Code的话,可以直接通过插件进行安装:

快速入门 — ESP-IDF 编程指南 v5.5.1 文档

当完成安装后,就可以创建工程文件夹了,其根目录下创建一个"CMakeLists.txt"文件以配置ESP-IDF环境:

cmake_minimum_required(VERSION 3.5)

# 设置IDF路径
set(IDF_PATH "~/esp/v5.5.1/esp-idf") # 按需修改

# 包含ESP-IDF构建系统
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(stepper_control) # 项目名称

之后,创建一个"main"文件夹作为程序文件的目录,其根目录创建一个"CMakeLists.txt"文件以配置编译器:

idf_component_register(SRCS "main.c"
                       INCLUDE_DIRS "")

至此,环境已经配置完成,在"main"文件夹下新建一个"main.c"即可开始使用了。

2.使用ESP32驱动一个步进电机

3.步进电机指定步数停止

4.加减速控制

5.闭环控制/视觉识别——如何精确定位样品叉位置