openpnp - 贴片前, 放入一块新板子后, 对板子的坐标矫正
文章目录
- openpnp - 贴片前, 放入一块新板子后, 对板子的坐标矫正
- 概述
- 笔记
- 实验前置条件
- 实验开始
- 建立自己板子上的Mark点封装, 用于自己人工圈定判断Mark点位置是否正确
- 建立mark点封装
- 根据多个mark点, 来精确定位板子左下角原点坐标
- END
openpnp - 贴片前, 放入一块新板子后, 对板子的坐标矫正
概述
openpnp提供了放入新板子后, 根据设置的mark点封装和元件, 对板子做贴片前坐标自动矫正的功能.
经过多次实验, 发现openpnp提供的对放入新板子后, 根据第一次矫正时设置的多个Mark点, 进行自动矫正的功能是不好使的(偶尔会成功), 伤心了(实验了10几次, 最后发现openpnp提供的自动矫正坐标是个不好使的烂功能…).
只能每次放入新板子, 都重新确定一下板子原点, 才是靠谱的做法.
我的设备是有夹具的, 放入同类的新板子后, 坐标基本不差, 只是走一遍流程, 最多用10秒钟就能将坐标确认完.
发现, 如果不用openpnp提供的mark点自动矫正坐标功能, 给自己人工比对的mark点, 搞成1mmx1mm的正方形比对框还好用些.
板子坐标矫正, 是为了使贴片时吸嘴落到板子上的元件时, 位置更准确.
笔记
重新记录一次, 以后贴片之前, 就这么来矫正板子坐标.
实验前置条件
将job删掉
将多余的part删掉
需要保留的2有2个
FIDUCIAL-HOME, 这个是主基准点用的, 不能删除.
FIDUCIAL-1x2, 这个是次基准点用的, 不能删除
封装页中, 除了主/次基准点的封装, 也都删掉
飞达页, 除了自己建立的飞达, 其余都删掉.
日志页, 可以设置成TRACE + TRACE
save job, save 配置.
openpnp关机, 退出
openpnp启动, 开机, 归零.
实验开始
增加openpnp板子配置
填写Z坐标.
板子的Z坐标, 就填写Z轴的低限位(当时设置Z低限位时, 将N1降低到夹具上的PCB表面获取的Z坐标) -17.6mm
因为openpnp自动矫正新板子坐标功能不好使, 所以"Check Fids?"不要打勾
在夹具中放入新板子
打开顶部相机, 用JLOG移动顶部相机到离板子左下角1~2mm的地方. 不要太远, 肉眼辨认板边容易, 矫正板子原点坐标时, 需要微调的距离短, , 方便一些.
捕获当前板子原点坐标的粗略位置
选中当前板子条目, 导入named csv坐标文件
建立自己板子上的Mark点封装, 用于自己人工圈定判断Mark点位置是否正确
首先, 从自己的PCB和原理图中, 确定自己用的Mark点实际封装.
我这板子统一用的1mm直径的表贴焊盘, 那么我们就做一个1mm的正方形作为封装来人工确认mark点是否定位准确.
建立mark点封装
封装名称为 MK
为封装增加管教 mk_pin_1
为管脚定义一个1mm的正方形, 此时, 顶部相机在哪里都无所谓.
保存JOB, 保存配置.
新建元件MK, 使用MK封装
将MK元件的封装指定为MK封装
保存JOB
去JOB页的placements页, 将3个mark点的封装都改为MK
根据多个mark点, 来精确定位板子左下角原点坐标
JOG窗口上面, 出现了任务提示框.
根据提示, 将3个Mark点在placements页中选中.
点击提示框的Next按钮
此时, 如果有报错, 说明没有捕获板子原点坐标的大致位置, 取消, 回到前面去大致捕获板子原点的位置才行.
openpnp将自动移动到选中的3个Mark点中的一个. 我这里是MK2
看提示, 说, 此时, 要精确的移动JLOG, 将MK2精确定位, 因为我们选的封装是1mm的正方形, 框住mark点的操作, 此时很方便.
组合不同步长(1mm, 0.1mm, 0.01mm)和相机方法倍数, 将顶部相机MK封装的黄框, 精确的套住板子上的实际的MK2, 然后点击Next
现在顶部相机移动到了MK3, 根据提示, 用MK封装的黄框精确套住MK3, 点击Next.
现在顶部相机移动到了MK1, 根据提示, 用MK封装的黄框精确套住MK1, 点击Next.
现在已经精确定位了所有我们选择的Mark点, 现在openpnp提示, 点击Finish可以结束调整 .
那就点击Finish.
此时, 顶部相机已经回到新的精确远点位置.
保存job
可以看到, 现在板子远点位置已经不是我们粗略捕获的位置了, 而是一个精确的位置.
用元件导航功能, 看看3个Mark点和其他元件位置是否都精确?
保存JOB!
千万不要再使用根据Mark点元件, 自动定位坐标的功能
此时, 就可以贴片了(元件高度配置好了, 如果飞达飞达配置好了).
如果我们将板子从夹具上拿下来了, 或者重新安装了一块PCB到了夹具上, 此时要校验一下坐标是否精确.
就重新使用一次矫正板子坐标原点的功能, 因为夹具是和精确的, 将板子推到位, 矫正过程基本是走一遍流程, 3个mark点的位置基本不用动, 很快. 如果发现位置有调整, 导致JOB变了, 保存JOB.
END
相关文章:

openpnp - 贴片前, 放入一块新板子后, 对板子的坐标矫正
文章目录openpnp - 贴片前, 放入一块新板子后, 对板子的坐标矫正概述笔记实验前置条件实验开始建立自己板子上的Mark点封装, 用于自己人工圈定判断Mark点位置是否正确建立mark点封装根据多个mark点, 来精确定位板子左下角原点坐标ENDopenpnp - 贴片前, 放入一块新板子后, 对板子…...

计及需求响应的改进灰狼优化算法求解风、光、柴、储容量优化配置(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...

Elasticsearch使用——高级篇
1.数据聚合**聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如:什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何?实现这些统计功…...
Java网络爬虫-HttpClient工具类
关于用Java进行爬虫的资料网上实在少之又少,但作为以一名对Java刚刚初窥门径建立好兴趣的学生怎么能静得下心用新学的Python去写,毕竟Java是世界上最好的语言嘛 (狗头)关于Java爬虫最受欢迎的一个框架Jsoup常常搭配HttpClient来使用,因为Jsou…...

LeetCode203_203. 移除链表元素
LeetCode203_203. 移除链表元素 一、描述 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2…...
【洛谷 P1443】马的遍历 题解(广度优先搜索)
马的遍历 题目描述 有一个 nmn \times mnm 的棋盘,在某个点 (x,y)(x, y)(x,y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。 输入格式 输入只有一行四个整数,分别为 n,m,x,yn, m, x, yn,m,x,y。 输出格式 一个 nmn \t…...
为什么gpt输出有随机性?
以下答案由chatGPT产生! 为什么gpt输出有随机性? GPT(Generative Pre-trained Transformer)是一种基于Transformer架构的神经语言模型,它是一个深度学习模型,通过在大规模文本数据上进行预训练࿰…...

配置Clion用于STM23开发(Makefile)
前言 对于Clion配置STM32开发环境的教程在网上一搜一大堆,但是大部分都是22年之前的,使用的方法都是在STM32CubeMX生成SW4STM32工程。但是在22年不知道哪个版本后,CubeMX已经不再支持生成SW4STM32工程了,这也是我本人遇到的问题。…...

如何在 Istio 中使用 SkyWalking 进行分布式追踪
在云原生应用中,一次请求往往需要经过一系列的 API 或后台服务处理才能完成,这些服务有些是并行的,有些是串行的,而且位于不同的平台或节点。那么如何确定一次调用的经过的服务路径和节点以帮助我们进行问题排查?这时候…...

HBase高手之路1-Hbase简介
文章目录HBase高手之路1-Hbase简介一、什么是HBase1. HBase简介2. HBase的发展过程二、HBase特点1. 海量存储2. 列式存储3. 极易扩展4. 高并发5. 稀疏6. 强一致性读/写7. 自动分块8. 自动RegionServer故障转移9. Hadoop/HDFS集成10. MapReduce11. Java Client API12. Thrift/RE…...

计算机视觉手指甲标注案例
关键点标注是指识别和标注图像或视频中特定的相关点或区域的过程。在机器学习行业,它经常被用来训练计算机视觉模型,以执行诸如物体检测、分割和跟踪等任务。 关键点注释可用于以下应用: 面部关键点检测:识别图像中人脸上的眼睛…...
linux 字符串截取(cut)
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 -c :以字符为单位进行分割。 -d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。 -n…...

003+limou+HTML——(3)HTML列表
000、前言 列表是网页常见的一种数据排列方式,在HTMl中列表一共有三种:有序列表、无序列表、定义列表(另外“目录列表dir”和“菜单列表menu”已经在HTML5中被废除了,现在都是使用无序列表ul来替代) 001、有序列表&a…...

设计模式---工厂模式
目录 1. 简单工厂模式 2. 工厂方法模式 1. 简单工厂模式 简单工厂模式(Simple Factory Patterm)又称为静态工厂方法模式(Static Factory Model),它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义了一…...

C++基础了解-13-C++ 数组
C 数组 一、C 数组 C 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 number0、number1、…、number9…...
ICC2:限制LVT比例
1) 禁用VT 在优化过程用,如果要禁用某种VT可以直接对其使用dont use,如下示例: set_attribute -objects [get_lib_cells *_lvt*/*] -name dont_use -value true 在dont use lib cell的基础上还可以对某些模块放开lvt的使用。 set_app_options -name …...

Kettle工具通过JNDI连接Oracle集群
我们在用Kettle ETL工具的时候,可能会遇到数据库为Oracle集群的模式,或者有时候目标库为oracle,在持续的循环调度中,经常发现oracle的数据库连接中断的情况,此时,在Kettle中有一个JNDI的连接方式能很好的解…...

[ 常用工具篇 ] windows安装phpStudy_v8.1_X64
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
SpringBoot 如何将配置文件挂到 jar 包外面?
目录一、SpringBoot 指定配置文件路径:1)使用命令行参数:2)使用环境变量:3)使用外部配置文件:二、SpringBoot 配置文件生效的优先级排序:一、SpringBoot 指定配置文件路径࿱…...

蓝桥杯C/C++b组第一题个人整理合集(5年真题+模拟题)
蓝桥杯C/Cb组填空第一题合集 前言 比赛标准的签到题,比赛时的第一题。不会考到什么算法,甚至都不需要你打代码。但有时候第一题都没做出来的确是非常挫灭信心 看了看历年题目。很多小陷阱也不少 今年的比赛也正好还有一个月,自己对填空题第…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...