读取该 well 的 EEPROM 参数
ReadWellHorizontalPos(well) → 水平位置;ReadWellFocusZero(well) → Z零点(仅记录,粗对焦不依赖它)
移到 EEPROM 水平位置 + 设中低曝光
HorizontalMoveTo(钳位后位置),失败重试最多 3 次;SetExposure(60)
水平钳位范围 [0, 220000] · 中低曝光 CenterScanExposure=60 (×100µs)
① 粗对焦
⏱ 开扫前停稳(防运动拖影伪峰)
先把 Z 移到扫描起点(60000),再额外等待停稳 + 丢弃到位前残留帧,然后才开始逐层扫描。
修复偶发问题:手动复位会把 Z 打到远端,正式标定大行程冲到起点,若不停稳,前几层抓到运动拖影帧会形成伪峰(如74000)带偏对焦。
移到起点 lo=60000 · 额外停稳 CoarseSettleMs=2000ms · 丢1帧
① 粗对焦(找大致焦面)
固定中心大窗口逐层扫描,中央40%ROI算清晰度(Tenengrad÷mean),取最高分层;每层分数落盘便于排查伪峰
中心 90000 · 半幅 ±30000 → 区间 [60000,120000] · 步距 2000 → 31层 · 每层移动后等 350ms + 丢1帧
② 水平居中
② 水平微调居中(优化Y偏移)
以EEPROM水平位为中心小范围扫描,检测well圆,选|Y偏移|最小且完整的位置
半幅 ±2000 (远小于well间距9000的一半) · 9步 → 步距≈500 · 每步等800ms · 居中容差 |Y|<12%
③ 曝光
③ 曝光二分(well内ROI测光)
二分搜索曝光值,使well盘面亮度适中(不过曝/不死黑),按 Over/Good/Under 判定
曝光范围 [10, 800] (×100µs) · 每次设曝光后等 max(200, e/5)ms + 丢1帧
④ 精对焦
④ 精对焦(围绕粗焦点细扫 + 平滑插值)
围绕粗对焦Z小范围密扫,well圆内0.95r ROI(未检出降级中央40%),3点平滑+抛物线插值求峰顶
半幅 ±6000 · 步距 500 → 25层 · 中心=粗对焦Z · 每层等350ms+丢1帧 · Z钳位[0,125000]
移到最清晰Z + 存图 + 记录结果
VerticalMoveTo(focusZ);存标定后BMP;记录 水平/Y偏/曝光/focusZ/峰比
合格判定:|Y偏|<12% 且 检出圆 且 峰比(max/mean)>1.2