今天刚把做好的PCB文件交给工厂去制板,阶段工作告一段落,来一个小总结。
前一段时间复习完C语言之后,在中国知网上搜索用单片机实现的小制作,找比较有意思,又不需要太多外专业知识的东西,然后就相中了超声波测距系统。实验室有项目使用到了超声波测距,有部分电路图可以直接用到我这个系统上,电路正确性可以保证,所以可行性有了,决定立即动手。
单片机的最小系统原理图一搜一大堆,超声波收发电路在以前的项目中进行截取,温度补偿电路也可以在知网论文中找到,总原理图搞定。然后就是进行PCB的设计。这篇博文就具体写在进行PCB制作的过程中遇到的问题,并记录解决方法。本科学过protel,因为好久没用了,忘得差不多了。现在比较流行用Altium Designer画图,就试着用了,遇到很多问题。
1.软件在英文和中文之间的切换:(Altium Designer 13.1)
DXP/preference/system/general/localization,将use localized resources选中即为中文,不选中即为英文。
不过那个中文翻译的水平不怎么样。
2.画STC89C52的原理图库时,引脚属性的设置。
Designator填的是引脚的编号1-40,display name填引脚的名字。也就是说放置好引脚后,引脚的里面显示引脚名字,外面显示编号。designator里的编号和制作PCB库时的引脚标号是一一对应的。
刚开始我画的原理图库全部把这两个弄反了,结果原理图一直不能导入到PCB文件。
3.一个原理图库文件(.schlib)里面可以包含多个元件的库。
一个工程不需要建立很多原理图库文件,一个就好。PCB库文件类似。
刚开始我给每个元件建了一个库文件,后来使用软件的过程中发现了一个库文件可以包含很多元件。
4.注意原理图中把一个元器件分成两部分画的情况。
LMV822MM是一个有两级运放的芯片,分成两部分用,一次用一级。
在原理图库中将一个芯片绘制成两部分的方法:先正常画第一部分,画完之后选择tool/new part,然后在出现的窗口中画另外一部分即可。
第一次我没有看清电路,以为有两个芯片,当我把PCB都制作完成,在铺铜前检查电路时才发现这个问题,导致了很多重复工作。
5.原理图比较大时,画在两张sheet上的处理办法
首先已有两张画好的原理图,相关的部分已经用标号连接。然后新建一个原理图,比如global.sch,在global.sch图中依次点击Design/Creat sheet symbol from sheet or HDL,然后在出现的窗口中依次选择原理图文件,放置在global.sch中即可。
6.原理图制作好之后,编译通过,然后新建PCB文件并保存之后才能将原理图导入到PCB文件中。
我在制作过程中遇到了几次不能导入原理图到PCB文件的情况。
7.电位器在标准库里的封装和实物不相符,需要更改库里的封装。
标准库的3脚(在边上)是可调端,实际器件的2脚(在中间)是可调端。
8.串口在PCB文件中的摆放方向:让突出的那段在keepout线外。
突出的那段刚好是要连接的口。
9.画keepout层边框。
画直线时,为了避免线向上或向下变动45度,在画线过程中按空格键,就能保证直线不会拐了。
10.PCB文件中背景在格子和圆点之间切换的快捷键:V-G-V
个人觉得圆点比较舒服。
11.如果要布单面板,但有少部分线在底层走更方便时,可以用直接在PCB文件中加0电阻的方法。
假设A和B要连在一起,中间有很多线阻隔。可以放置0电阻,让这些阻隔的线刚好在0电阻的两个焊盘之间,然后让A和B分别连接0电阻的两个焊盘,这时A和B就连接好了。焊接电路板时,用导线或者电阻的引脚代替0电阻即可。
用这个方法可以在单面板上减少很多绕很远的线。
12.修改PCB中同类型的东西。可以先选择其中一个,再右键用find similar objects功能,将要修改的那个类型中的any改为same,点击ok确定。然后在弹出的PCB Inspector中对要修改的项进行修改。
13.刚开始做PCB之前要考虑到板子的尺寸,尺寸决定了成本。
我本来计划用两块板,一块是单片机的控制电路,包括温度测量,串口通信,结果显示等,另一块是超声波的收发。PCB都弄完,准备送到工厂去制板,咨询后发现好不划算,10*10以内的板子统一价150,总共得300。不得已我又得重新做PCB,合成一块板,并控制在10*10。
14.双面板上的直插元件的焊盘在两面都有焊锡,相当于过孔。焊盘本身过孔。
15.如何高亮显示某个网络连接。
按住CTRL,点击网络中的某一条线即可。在右下角的mask level 中还可以调节高亮网络和变暗网络的亮度。
16.当强制把两个没有连接关系的焊盘连接在一起时,会出现连接不上的情况。可以通过修改preference/PCB Editor/interactive Routing中冲突走线的方式来解决。
会有连接毫不相干的焊盘的时候吗?有的,例如添加0电阻时,某个焊盘要和0电阻的焊盘相连。
17.PCB中只显示一层,隐藏其他层的方法。
PCB文件下,按快捷键L,依次选择view options/single layer mode/hide other layers.
或者现在PCB文件视图的底部选择要显示的层,然后直接用快捷键shift+s。
18.生成元器件清单。
reports/project reports/bill of materials,在左纵列的下边选中value,在右边就会显示value这一项,但并不会按照value进行分类,比如你有很多电阻,电阻值各不一样,右边的窗口中就把所有的电阻显示为一行,value项里依次把所有的电阻值列了出来,这样的表不是很方便。解决方法是在左纵列的下面将value拖动到左纵列的上面,这样右面的窗口中就会按照value进行分类了。也就是说右边的表格会按照左纵列上面的项目进行分类。
19.检测布好的PCB中是否有漏布的线。
reports/board information/Report...,然后勾选Routing information,点击report即可。在弹出的页面有100%这个字眼就说明没有漏线。
20.Altium Designer制作的PCB文件保存为protel99se的格式:file/save copy as,选择格式为PCB4.0 binary file。
21.生成gerber文件。
交给工厂去制板时,给PCB文件或者gerber文件。gerber文件的生成:
依次点击File/Fabrication Outputs/Gerber Files,在弹出的gerber setup窗口中的general中选择单位和精度,在layers中选择导出的层,在Apertures里选中“Embedded apertures(RS274X)”,点击ok就生成了gerber文件
Gerber文件各层扩展名与PCB原来各层对应关系
(1)扩展名的第一位g一般指gerber的意思。
(2)扩展名的第二位代表层,b代表bottom,t代表top,“g+数字”代表中间线路层,“g+p+数字”代表电源层。
(3)扩展名的最后一位代表层的类别。l是线路层,o是丝印层,s是阻焊层,p代表锡膏,m代表外框、基准孔、机械孔,
顶层Top (copper) Layer : .GTL
底层Bottom (copper) Layer : .GBL
中间信号层Mid Layer 1, 2, ... , 30 : .G1, .G2, ... , .G30
内电层Internal Plane Layer 1, 2, ... , 16 : .GP1, .GP2, ... , .GP16
顶丝网层Top Overlay : .GTO
底丝网层Bottom Overlay : .GBO
顶锡膏层Top Paste Mask : .GTP
底锡膏层Bottom Paste Mask : .GBP
顶阻焊层Top Solder Mask : .GTS
底阻焊层Bottom Solder Mask : .GBS
禁止布线层Keep-Out Layer : .GKO
机械层Mechanical Layer 1, 2, ... , 16 : .GM1, .GM2, ... , .GM16
顶层主焊盘Top Pad Master : .GPT
底层主焊盘Bottom Pad Master : .GPB
钻孔图层Drill Drawing, Top Layer - Bottom Layer (Through Hole) : .GD1 Drill Drawing, other Drill (Layer) Pairs : .GD2, .GD3, ...
钻孔引导层Drill Guide, Top Layer - Bottom Layer (Through Hole) : .GG1 Drill Guide, other Drill (Layer) Pairs : .GG2, .GG3, ...