当前位置: 首页 > news >正文

openpnp,cadence SPB17.4,placement - 从allegro中导出坐标文件的选项会影响贴片精度

文章目录

    • openpnp,cadence SPB17.4,placement - 从allegro中导出坐标文件的选项会影响贴片精度
    • 概述
    • 笔记
    • place_symbol_origin.txt VS place_pin1.txt
        • 相同的地方
        • 不同的地方
    • place_symbol_origin.txt VS place_body_center.txt
      • 分析 - body中心和符号中心的区别
      • 忽略0.01mil的区别,看看其他不同值的距离是多少?
    • 继续看坐标文件中超差的元件
    • 继续看坐标文件中超差的元件
    • 继续看坐标文件中超差的元件
    • 继续看坐标文件中超差的元件
    • 继续看坐标文件中超差的元件
    • 继续看坐标文件中超差的元件
    • 解决贴片坐标不对的方法
    • 备注
    • 思想火花
    • 备注
    • END

openpnp,cadence SPB17.4,placement - 从allegro中导出坐标文件的选项会影响贴片精度

概述

因为贴片机精度的问题,以最高标准维护了贴片机。现在能确认,贴片机硬件和openpnp合在一起,精度为5个丝.
但是将坐标文件导入后,对着板子上的元件浏览,大部分还可以,但是有3个IC,明显会在X轴方向偏了0.2mm. 这还了得…

这个现象和我的烂贴片机维护之前的表现是一样的。
既然我能确定贴片机硬件和openpnp合在一起是没问题的,那么只能怀疑我的坐标文件不对。

这个坐标文件是我用工具处理过的(cadence SPB17.4 - export placement file to openpnp).

难道是我的处理代码有问题?
不能够啊 😛 如果转换错了,那么所有的元件坐标都应该有问题才对啊?
且我检查过工具代码,没发现啥问题。

难道是从allegro导出的原始坐标文件就不对?这个可能性也不大。
因为allegro这么NB的软件,只可能是使用姿势不对,不可能离谱到这个程度。

allegro导出坐标文件时,有选项,是否我选错了?
验证一下allegro导出坐标文件时,采用不同的选项,看看坐标文件有啥区别?

笔记

在这里插入图片描述
在这里插入图片描述
导出时,不勾选旧格式。
然后分别勾选符号中心,body中心, pin1, 分别导出3个选项的坐标文件为place_symbol_origin.txt,place_body_center.txt,place_pin1.txt
用BC5分别两两比较3个文件,比较2次,就知道这3个文件有啥区别。

可以看到坐标文件的单位都是mil

UUNITS = MILS

place_symbol_origin.txt VS place_pin1.txt

相同的地方
UUNITS = MILS
...
DWP1                 177.16        3027.12        0    DW_HOLE_D2R0MM_D3R0MM
DWP2                 2992.14        256.23        0    DW_HOLE_D2R0MM_D3R0MM
DWP3                 177.16         256.23        0    DW_HOLE_D2R0MM_D3R0MM
DWP4                 2992.14       3027.12        0    DW_HOLE_D2R0MM_D3R0MM
// ...
MK1                  2924.80        107.27        0    MY_MARK_POINT_SMT_D1MM
MK2                  253.00         103.41        0    MY_MARK_POINT_SMT_D1MM
MK3                  91.40         2712.27        0    MY_MARK_POINT_SMT_D1MM
// ...
TT1                  1137.53       2315.00        0    TEST_PT_TH          
TT10                 287.39         746.36        0    TEST_PT_TH          
TT11                 1853.79       2495.60        0    TEST_PT_TH          
TT12                 2667.56        486.16        0    TEST_PT_TH          
TT13                 1168.71        486.16        0    TEST_PT_TH          
TT14                 1601.78        486.16        0    TEST_PT_TH          
TT15                 735.64         486.16        0    TEST_PT_TH          
TT16                 2034.85        486.16        0    TEST_PT_TH          
TT17                 1450.01       2526.59        0    TEST_PT_TH          
TT18                 2630.33       1364.59        0    TEST_PT_TH          
TT19                 2725.74       1513.06        0    TEST_PT_TH          
TT2                  1737.19       2319.00        0    TEST_PT_TH          
TT20                 2573.65        835.59        0    TEST_PT_TH          
TT21                 2355.65        667.59        0    TEST_PT_TH          
TT22                 2573.65        765.59        0    TEST_PT_TH          
TT23                 2576.65        667.59        0    TEST_PT_TH          
TT24                 614.49        1471.45        0    TEST_PT_TH          
TT25                 577.59        2104.00        0    TEST_PT_TH          
TT26                 467.53        2106.00        0    TEST_PT_TH          
TT27                 367.81        2105.00        0    TEST_PT_TH          
TT28                 269.83        1471.00        0    TEST_PT_TH          
TT3                  958.30        1197.00        0    TEST_PT_TH          
TT4                  958.65        1293.00        0    TEST_PT_TH          
TT5                  543.06        2233.71      270    TEST_PT_TH          
TT6                  338.15        2593.84        0    TEST_PT_TH          
TT7                  804.97        2778.60        0    TEST_PT_TH          
TT8                  723.21        2899.54        0    TEST_PT_TH          
TT9                  722.36        2633.69        0    TEST_PT_TH  

可以看到相同的地方有共同点,这些相同坐标的元件都是1个pin的元件。所以1脚和符号中心重合。

不同的地方

找个1206的电容来看

C2                   446.55        2372.89       90    C1206               
C2                   446.55        2310.19       90    C1206               

差别是Y坐标。2372.89 - 2310.19 = 62.7mil = 62.7mil×0.0254mm/mil=1.59258mm
这就说明,pin1的坐标文件根本不能用于贴片机。差的太多了。
只要不是1pin的元件,坐标的差距就是巨大的距离(1角和元件中心)
1206电容的尺寸 = 3.2mm(长) × 1.6mm(宽)
可以看出1.59mm相当于3.2mm的一半。
对照外形尺寸,也能看出为啥C2的X坐标相同,因为pin1的中心在符号中心的对称面上。

所以,首先排除的坐标文件为Pin1的选项

那现在可能的选项就在’符号中心’和’body中心’之中。
既然我用的坐标文件转换后用于贴片,精度太差(坐标错了)。那就看看这2个导出选项中,是否能有正确的那个坐标文件。

place_symbol_origin.txt VS place_body_center.txt

这个比较结果就有些微妙了。
分析一下。
在这里插入图片描述
同一个2pin封装(C1206), 差0.01mil => 0.01mil 等于 0.000254毫米(mm), 这个差别不影响贴片,可以忽略,但是问题要搞清楚。

分析 - body中心和符号中心的区别

body中心,指的是Place_Bound外形(元件占地面积)的中心, 这个中心一般是和引脚有对称关系(除非元件引脚排列和外形是不对称的),一般说来是元件的几何中心。

符号中心,是画封装时的封装原点(零点)坐标。这个坐标一般不在中心。为了画封装方便,一般都将封装原点放在pin1上。这样方便计算其他pin和外形丝印边的坐标。
除非是用了工具来封装,才有可能封装原点在元件的几何中心。

如果导出的坐标文件要转换后给贴片机用,那么必须选择"body中心"选项来导出坐标文件。

忽略0.01mil的区别,看看其他不同值的距离是多少?

在这里插入图片描述
dX = 2570.21 - 2570.51 = 0.3mil = 0.00762mm
dY = 486.27 - 486.16 = 0.1mil = 0.00254mm
1mil = 0.0254mm = 2个丝
一般在5个丝以下的误差(且我的设备的装配精度大约就在5个丝附近),可以忽略。
5丝 = 5 × 0.3937 ≈ 1.9685mil
现在忽略2mil以下的误差。
继续找大于2mil的坐标误差。

在这里插入图片描述
这个封装是个插件,不需要贴片。但是要找一下这个封装为啥坐标差别如此之大?

在PCB中找到这个元件。
在这里插入图片描述
HDR-TH_3P-P2_54-V-M 不记得是否是我自己封装的。这是标准封装,应该是从JLC扒下来的。
选中该元件,从菜单上选择Display/Element
在这里插入图片描述
D:/my_dev/my_local_git_prj/my_SPB_lib/pcb_lib/
hdr-th_3p-p2_54-v-m.psm
我的封装和编译完的符号都在一起,封装应该是hdr-th_3p-p2_54-v-m.dra
找到了 D:\my_dev\all_mine\my_SPB_lib\pcb_lib\hdr-th_3p-p2_54-v-m.dra, 打开,查看2个中心都在哪里?
在clolor192中,将place_bound_X 都改为醒目的绿色
在这里插入图片描述
可以看到,在左下角有默认的REFDES的文字,附近有个十字圈,圆圈中心就是符号中心。
右上角由标记出的绿色place_bound_x的外形的中心,就是body中心。
再结合坐标文件,就可以知道为啥符号中心和body中心的导出的坐标文件,为啥数值差距的如此之大。
打开这个封装,我就可以确认,这个封装确实是从JLC扒出来的。然后转成AD的低版本,然后倒入allegro,再导出的allegro封装文件。
我自己手工画封装或者用工具画封装,都不会将符号中心和body中心整这么远。离大谱…
这也说明一个道理,如果是从第三方扒出来的封装,一定要确认2点:

  • body中心确实在所有pin的几何中心上。
  • body中心和符号中心(原点)要重合(如果不用符号原点选项导出,可以不重合)。
    不过如果自己画封装时,开始肯定是将符号中心放在pin1上。等封装画完了,才去设置符号中心到body的中心。

继续看坐标文件中超差的元件

在这里插入图片描述
这个封装我自己画的,去查一下。
D:\my_dev\all_mine\my_SPB_lib\pcb_lib\LCD_YR91050A_V1.dra
在这里插入图片描述
将元件层的place_bound_x改为红色,可以看到,就是元件的外形。
随便画一条线,从0,0开始画,0,0的坐标就是符号中心,可以看到,符号中心在一个pin上。
当然这个pin就和body(place_bound_x)中心差的太远了。

从这能看出,为了出坐标文件和画封装方便,在allegro中导出坐标文件时,只能选择body中心来导出坐标文件。

继续看坐标文件中超差的元件

在这里插入图片描述
D:\my_dev\all_mine\my_SPB_lib\pcb_lib\sot-23_l2_9-w1_3-p1_90-ls2_4-br.dra
在这里插入图片描述
这个封装是用Footprint Expert 24画的,可以看出该软件将place_bound_x画大了。
反而是符号中心是和body中心是重合的。不过对于SOT23封装来说,这个误差不大,能接受。
不过,还是要改封装(place_bound_x)才好。
看来啥免费的东西都不是白拿的,免费的东西最后还是贵的。
对于小白来说,有好多东西都注意不到,等吃了亏才发现上当。

继续看坐标文件中超差的元件

在这里插入图片描述
D:\my_dev\all_mine\my_SPB_lib\pcb_lib\r0805.dra
在这里插入图片描述
这个封装是从JLC扒下来,用allegro转的。
明显能看到符号原点不在元件引脚对称的中心。
且这个封装没有place_bound_x层…
从这能看出一个道理,如果扒第三方的封装,自己要检查。
不过如果是小白阶段的话,估计也检查不到body中心和符号原点这里…

继续看坐标文件中超差的元件

SOT-89-3_L4_5-W2_5-P1_50-LS4_2-BR
在这里插入图片描述
这个封装不是我自己弄的。
看起来,这个封装只要用body中心,就差不多是好的坐标。

继续看坐标文件中超差的元件

在这里插入图片描述

这个封装不是我弄的。
在openpnp上预览这个IC时,顶部相机十字总是在X轴方向上,向左偏一个pin,相机十字几乎搭在左边pin的边缘。
看了封装,此时才明白,原来是这个封装的place_bound_x画多了,坑货。
画这个封装的软件或者人,应该将place_bound_x均匀的包住4周的管脚才好啊。
不过很奇怪,假设我就是导出选项错误,选的是符号原点,看起来坐标应该是对的啊。
因为从这个封装看,符号原点和真正的body中心基本重合。
反正现在能确定了,就是封装的中心坐标不对引起的。只要核对完封装,坐标就是对的。

继续看坐标文件中超差的元件

在这里插入图片描述
sop-8_l5_0-w4_0-p1_27-ls6_0-bl.dra
在这里插入图片描述
看起来是place_bound_x画大了。
如果因为pin1指示的原点才扩大的place_bound_x, 那么将对称的一边也扩大,不就能解决元件body中心对称的问题了么?
要不只留在IC丝印内部的pin1指示,也能解决这个问题啊。
谁做的这种封装, 真疯狂。

解决贴片坐标不对的方法

  1. 在allegro中,只能用body中心来导出坐标文件(因为符号原点是用来方便画封装用的,一般都是放在pin1上。除非是用专门做封装的工具,才会将符号原点放在body中心附近(仅仅是附近而已))。
  2. 如果板子已经做回来了,可以用body中心导出一份坐标文件,然后转成openpnnp的坐标格式,看看坐标是否正确,如果ok了,那是运气好。
  3. 如果板子已经做回来了,但是body中心导出的坐标文件也不对,可以再拷贝一份工程,元件位置不改,去核对所有用到的封装(或者核对库中的所有封装的body中心,都改过来),然后临时更新板子副本的封装,再出临时的坐标文件,用于贴片。
  4. 如果板子还没有送去做,那么重新更新要归档的allegro工程,然后归档,做板子,出坐标文件,贴片。

备注

我开始贴LQFP封装的IC时,发现X坐标总是差0.1mm, 0.15mm, 0.2mm。
那时贴片机刚到手,就怀疑是定制的贴片机有问题(确实有问题,已经分析验证过了,不是冤枉人)。
然后就开始维护贴片机。现在贴片机精度确定没问题,还是贴歪了。
这时才继续分析贴片精度的问题。这时能怀疑的就是坐标文件有问题。
因为allegro坐标文件,我是用自己写的工具转成openpnp能用的格式。
所以,我先去检查了我的手搓工具是否有问题,没发现问题。
那么才怀疑到是否从allegro导出的坐标文件就不对呢? 这才来做的本实验。
才发现坐标文件出的可能有问题,但是用到的封装(大部分都是从第三方扒下来,用allegro转换的格式)中的body中心有问题。
有点背。新手,有好多东西考虑不到。
经验本身不值钱(就是上手一次就懂的事情),但是没经验却万万不能啊。太耽误时间了。

思想火花

以后封装(白嫖行动)会不断的增加,好多封装都是扒第三方的。然后用allegro去转换。
然后还得手工去验证修改封装中body中心? 这好费劲的。再说了,人不是机器,长时间重复一项工作,那是折磨啊。
难道以后不能享受轻松白嫖的快乐了? 那不能够啊… 失去了白嫖的快乐,这谁忍的了?

突然冒出来一个主意(有刚需时,主意来的就是快 😛),可以不用以后不断的改封装,可以继续轻松白嫖的快乐。
一般从第三方(e.g. JLC)上白嫖的封装,用allegro转换后,自动另存的封装名字都是很讲究的。
名称里面就有管脚的间距这些信息(e.g. sop-8_l5_0-w4_0-p1_27-ls6_0-bl.dra)。

只要给自己的工具备一个数据库(e.g. sqlite3, ini都行, 实在要是偷懒,硬编码在结构数组中都行啊),登记上不同封装的管脚间距信息。
有的封装是自己做的(e.g. LCD_YR91050A_V1.dra),有的是通用的(e.g. C0805, R0603), 可以特例处理(只要无法从封装名称上搞定引脚间距的封装,全部特化处理)。也登记在数据库中。
每次自己的封装库中有了新封装,可以先不登记进入自己的工具的数据库。

在自己工具中转换坐标时,如果无法判断出元件的1脚坐标和pin间距布局时(可能此元件没有登记), 就报错(断言)退出。
那转换不成功,就查工具代码,将这种报错封装需要的判断信息补全到数据库就ok.
等工具做好,以后就导出按照pin1坐标导出的板子坐标文件(pin1导出的坐标精准无比,随便第三方怎么设置符号原点和body中心,爱谁谁,我都可以找到理论上正确的根据pins围成的几何图形的中心,这才是真正的body中心)。

这样就很方便了(又回到了自己的舒适区)。
这个思想火花,我非常喜欢,不说有多优雅,至少将精确贴片和白嫖封装解耦了。

备注

既然allegro有按照pin1导出坐标文件的功能,那么应该有用场啊。
真想知道按照pin1导出坐标文件是干啥用的,是不是有配套的软件可以从pin1坐标结合封装信息生成贴片用的坐标文件啊。

END


http://www.mrgr.cn/news/96027.html

相关文章:

  • PyTorch处理数据--Dataset和DataLoader
  • 详解java体系实用知识总结
  • K8S学习之基础五十二:k8s配置jenkins
  • 我的世界1.20.1forge模组进阶开发教程——结构(3)
  • 我的世界进阶教程——结构(2)
  • 【C++网络编程】番外篇(实战):基于Boost.Asio协程的HTTP服务器实现与静态文件服务开发指南
  • macOS 制作dmg磁盘映像安装包
  • 2.0 项目管理前言
  • 车载以太网网络测试 -24【SOME/IP概述】
  • 科普:特征、规则、模型,及Lift(提升度)
  • PyTorch图像预处理--Compose
  • Linux面试题
  • 优选算法系列(4.前缀和 _下) k
  • CAS(Compare And Swap)
  • 23种设计模式-观察者(Observer)设计模式
  • ElasticSearch -- 部署完整步骤
  • 黑盒测试与白盒测试详解
  • dynamic_cast的理解
  • LangChain4j(1):初识LangChain4j
  • Matlab Hessian矩阵计算(LoG算子)