普通视图

Received before yesterday鸦鸦的巢穴

AD原理图添加ROOM及模块复制的方法(PCB更新不删除)

作者鸦鸦
2025年9月11日 17:25

这次终于不拖延了,教程来了!已在AD15和AD22中亲测有效,界面略有差异,但步骤都是通用的。

核心思想是在原理图设置class分类,通过class自动添加room,通过room实现模块批量布局走线。

AD原理图添加ROOM

第一步:修改工程设置

点击顶部“类生成”的选项卡,自动生成的全部取消(解决了每次画PCB都有一个初始ROOM的问题,这个ROOM不会再自动生成了),用户自定义的全部勾选,注意看下方小字,提示你在哪里定义,ClassName是器件的一个parameter参数,不是description也不是comment。

下一步就是批量选中一个模块的所有器件,增加一个parameter参数。

注意过滤掉线等杂质,只选元器件,然后新增的参数名叫ClassName(不区分大小写),这个单词是固定的,不能乱改,至于具体的类别名称随便取,比如我这里取名叫“模块1”。

模块2、模块3同样的操作……

然后就是激动人心的更新PCB时刻了。

更新列表会自动添加相应的ROOM,以后再更新也不会被删除,列表干干净净,强迫症大快人心。

模块批量复制(自动布局布线)

下面讲讲模块复制的方法,也就是ROOM COPY。前提是第一个模块得自己画好。

首先把每个模块都用ROOM包裹起来,如果ROOM尺寸过大可以用自动包裹调整一下,一般是器件周围的最小矩形块。

然后就是最关键的一步,通道复制。

上面这张图全是重点,首先你要找到PCB LIST这个面板,一般在右下角菜单。

然后选中第一个模块的所有器件,过滤器筛选出元器件,然后按照位号排序。(注意:这要求你在原理图编号的时候保证每个模块内部的元器件编号排序是一一对应的,不要求编号完全一致,但相对顺序要一致,否则你就要找别的办法来排序,比如空间位置什么的,也可以手动对应,就是比较麻烦)

然后复制Channel Offset那一列到下一个模块粘贴,有的AD版本可能要打开edit模式。(注意,这是AD自动布局的核心逻辑:只要通道一致布局布线就完全一致。)

然后就是ROOM COPY(快捷键DMC),先点击模板ROOM,再点击要布局的ROOM。

这个界面的参数需要自己摸索,不同的复制方式细节有所不同。

得到理想的结果,大功告成↓

如果失败了,大概率是通道编号不对,没有对应上,再检查检查吧~

如果元器件封装丝印翻转到背面了,那可能是软件bug,需要自己更新一下封装库,或者手动调整一下。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往AD原理图添加ROOM及模块复制的方法(PCB更新不删除)

Matlab/Simulink批量运行仿真、参数寻优

作者鸦鸦
2021年4月6日 17:45

适用场景

参数寻优、PI调参等。用Matlab脚本代替人工操作。

前提条件

1. 需要改变的参数用变量名代替,比如K。这样便于在脚本中修改变量值。

2. 主界面要有outport(输出端口,椭圆形的),这个作为评价指标。注意是最外层的系统,Subsystem貌似不行。

3. 模型设置里勾选Single simulation output。

脚本代码

%% 批量运行仿真
clear;
modelname=bdroot;   %获取当前激活模型名
n=0;
for K=0:0.01:0.2	%需要改变的参数
    n=n+1;
    simOut(n)=sim(modelname);   %这句是关键
    result(n,1)=K;  %第一列记录参数值
    result(n,2)=simOut(n).yout{1}.Values.data(end); %第二列记录模型输出值(终值)
end
plot(result(:,1),result(:,2));

然后就可以愉快地挂机摸鱼,喝茶睡觉玩手机啦~

关于sim()函数的更多用法可参考Matlab官网说明:https://ww2.mathworks.cn/help/simulink/slref/sim.html?requestedDomain=cn

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Matlab/Simulink批量运行仿真、参数寻优

Altium Designer 重拾指南 | 菜鸟救星

作者鸦鸦
2022年2月19日 01:45

这个软件真是见了鬼了,隔一段时间不用就归零,永远半生不熟。

由于新换了电脑,笔者又从头安装了一遍AD,没有任何第三方元件库,所以能够较完整地反映本菜鸟的摸索过程。

装哪个版本?

软件越新,安装包就越大,曾经我对安装包大小比较敏感,以为这种软件都和微软的Office一样,随便找个稳定的年份都差不多……

但是幸好这次我任性了一回,直接装了2022年最新版本,被一个叫Manufacture Part Search的面板惊艳到了!有了这玩意,还要啥第三方库啊?它直接就能放置元器件厂商的原理图、封装且含3D模型!另外元件的封装预览可以在2D和3D视图之间切换,非常直观!而我以前用过的2019版本似乎是没有这个功能的。

既然都是搞电的,这玩意装一个最新版不过分吧?

当然了,EDA软件也不是只有AD一家,KiCad还是免费开源的呢,立创那个在线EDA也不错,不是非得在一棵树上吊死!

先建工程还是先建原理图?

一个Project主要就两种文件,Schematic和PCB,顶多再加上各自的元件库。

从零新建的时候还是直接建工程吧。别单个单个建。

首次新建建工程,建完之后可以单个单个添加。缺啥添啥。

顺序搞错了也问题不大,自由文件可以直接拖动到工程里。


原理图篇

第一个元件咋画?

好了,终于要开始画原理图了,不管你画的什么,电阻总是有的吧?

那么问题来了,第一个电阻从哪里找?这直接关系到后面所有电阻的画法。

假设没有第三方元件库,直接从Components面板自带的Miscellaneous Devices库搜res,这样会不会太草率了?

不会,电阻的原理图无非就两种,要么长方形要么尖刺形,难道还能画出花来?

可是封装怎么办,现在不都流行贴片吗?自带的Res1好像是那种又大又粗的直插电阻诶?会显得很LOW吧?

封装可以改的!拖出来之后可以改!或者嫌麻烦的直接用Res3,它是贴片0603封装。

找不到XX面板怎么办?

仔细看右下角有个Panels,绝大多数的面板都可以在这里找到。

封装怎么修改?

双击元件打开元件的Properties属性面板,拉到下面有个Footprint,先把它显示出来,然后点击小笔笔🖊图标,小笔笔是编辑,或者add也可以。

选Any,再点Browse。

库选择Miscellaneous Devices,里面有一些常见的封装,包括贴片的0402、0603等等。

上面的做法只改了单个元件的封装,要是有很多元件都要改怎么办呀?如何批量修改封装?

修改封装的步骤是相同的,只不过需要选中所有同类元件。

如何选中所有同类元件?

以电阻为例,先选中一个元件,右键Find Similar Objects,匹配规则里面把有代表性的特征改为Same就行,至少一个相同特征就行,不必全改,最后记得勾上Select Matching,并且是在整个Project Documents里查找。

贴片封装一般选什么型号?

从小到大排序:0201<0402<0603<0805<1206<1210<1812<2010<2512

现在常用的的电阻、电容、电感、二极管都有贴片封装。贴片封装用四位数字标识,表明了器件的长度和宽度。[29]

贴片电阻封装形式有英制和公制之分,不过业内常以英制表示。实际应用中如果是简单元器件较少的项目中应用相对较多的是0603、0805和1206,因为在绘制完PCB做回板子之后都会有调试的过程,在调试时如果小于0603手工焊接难度大,大于1206浪费板子资源还会使板子尺寸增加,当然如果是对板子尺寸有严格要求,或者项目较为复杂元器件数量多还是封装越小越好,小封装用机器焊接出错率也小。[30]

如果不是做产品,随便画画的话,笔者prefer 0603,因为之前我用过0402画PCB的时候非常小,不放大很难选中,拖放比较麻烦,需要频繁缩放……所以单纯从画图方便角度考虑,下次我选择0603。如果手工焊那就更难了。

Surface-mount technology (SMT) is a method in which the electrical components are mounted directly onto the surface of a printed circuit board (PCB). An electrical component mounted in this manner is referred to as a surface-mount device (SMD).[31]

不想自己画元件有哪些途径白嫖?

电阻是挺容易画的,但是像开关管、放大器、集成芯片那种怎么办呀,不太好弄了吧?

下面介绍几种本人已知的元件库来源。

淘宝闲鱼CSDN那种一大包的第三方库就不说了。那种动辄几个G,下载安装都挺费劲的,关键是你想要的某个元器件型号还不一定有!就像拆盲盒一样。

至于AD官网,好像也挺麻烦的,要邮箱注册什么的。而且更新不一定及时吧,人家厂商新出了个什么器件难道还会向AD通报吗?

下面介绍几种精准搜索单个元器件原理图或封装的方法。

来源1:AD自带的Manufacture Part Search面板(最方便)

这个功能需要登录后才能下载或放置,否则只能查询。

以OPA2140AID为例,直接输型号搜索,有绿色图标的大概就是有模型,右键Place,直接一步到位原理图封装3D模型全搞定,但Place这种操作是一整套捆绑在一起的,后续不能改封装啥的,如果只需要单独使用其中某个部分,就选Download。

另外它还带有筛选功能,左上角那个图标可以筛选参数和元器件厂商。

来源2:从立创EDA导出

以OPA2140AID为例,直接在立创商城里搜型号,点数据手册会显示原理图和封装,找一个看的顺眼的,点立即使用,先在它的在线EDA里面打开。然后分别导出原理图和封装。

导出之后在AD里打开,是个PCB文件,还不能直接用,要先转换为封装库,怎么转?菜单-Design-Make PCB Library。原理图库同理。3D模型好像也是类似的。

来源3:元器件厂商官网

我比较喜欢德州仪器,因为它官网比较简洁,最主要的是有中文……把菜鸟的心理拿捏的死死的。

还是以OPA2140AID为例,先在官网搜型号,进入到具体产品页,找到设计和开发-CAD/CAE符号,点击下载下面的了解详情。

检查原理图错误

菜单Project-Validate PCB Project XXX.PrjPcb,之后会有信息在Messages窗口显示,如果没有这个窗口,右下角Panels里可打开。


PCB篇

如何由原理图生成PCB?

画PCB前应当确保所有元件都指定了正确的封装。如果没有的话后面肯定是要返工的,不过问题不大,多返工几次就熟能生巧了嘛。

先新建一个PCB文档,菜单Design-Import Changes From XXX.PrjPcb

PCB自动布局

想得美,AD好像没有那么智能,关于元器件的摆放,最多只能按矩形排列。菜单Tools-Component Placement-Arrange Within Rectangle。

所以,如果我没有理解错的话,主要还得靠手工排列和对齐。

至于经验的话,我只记住了强弱电要分开,数字模拟要分开,至于为什么,其实我也讲不太清楚,别问,问就是电磁干扰……具体怎么干扰?

名称微分形式积分形式
高斯定律${\displaystyle \nabla \cdot \mathbf {E} ={\frac {\rho }{\varepsilon _{0}}}}$${\displaystyle \oint _{\mathbb {S}}\ \displaystyle \mathbf {E} \cdot \mathrm {d} \mathbf {s} ={\frac {Q}{\varepsilon _{0}}}}$
高斯磁定律${\displaystyle \nabla \cdot \mathbf {B} =0}$${\displaystyle \oint _{\mathbb {S} }\ \displaystyle \mathbf {B} \cdot \mathrm {d} \mathbf {s} =0}$
法拉第电磁感应定律${\displaystyle \nabla \times \mathbf {E} =-{\frac {\partial \mathbf {B} }{\partial t}}}$${\displaystyle \oint _{\mathbb {L} }\ \mathbf {E} \cdot \mathrm {d} {\boldsymbol {\ell }}=-{\frac {\mathrm {d} \Phi _{\mathbf {B} }}{\mathrm {d} t}}}$
安培环路定律${\displaystyle \nabla \times \mathbf {B} =\mu _{0}\mathbf {J} +\mu _{0}\varepsilon _{0}{\frac {\partial \mathbf {E} }{\partial t}}\ }$${\displaystyle \oint _{\mathbb {L} }\ \mathbf {B} \cdot \mathrm {d} {\boldsymbol {\ell }}=\mu _{0}I+\mu _{0}\varepsilon _{0}{\frac {\mathrm {d} \Phi _{\mathbf {E} }}{\mathrm {d} t}}}$
麦克斯韦方程组(真空)

麦克斯韦方程组第三个式子,也就是法拉第电磁感应定律,${\mathcal {E}}=-N{{d\Phi _{B}} \over dt}$,封闭电路中感应电动势的大小,等于穿过这一电路磁通量的变化率;

麦克斯韦方程组第四个式子,也就是安培环路定律,$\oint _{{{\mathbb {L}}}}{\mathbf {B}}\cdot {\mathrm {d}}{\boldsymbol {\ell }}=\mu _{0}I$,$\oint _{{{\mathbb {L}}}}{\mathbf {H}}\cdot {\mathrm {d}}{\boldsymbol {\ell }}=I$,电流在一个曲面上的通量,等于磁场沿着曲面的边缘闭合回路的路径积分。

通俗理解的话,电流越大→磁场越强→磁通越大→磁通量的变化率大→感应电动势大→电磁干扰越强,所以信号线应当远离电源线,因为电源线是大电流;数电的话比较好理解,从0到1的跳变du/dt或者di/dt肯定很大→磁通量的变化率大→感应电动势大→电磁干扰越强,所以数字模拟要分开。

交叉选择模式

对了,在布局的时候,有一个非常实用的功能我不允许你不知道,那就是菜单Tools-Cross Select Mode。

板子规划视图 & 3D视图

布局完成之后,板子大小、形状基本应该确定了,当然也可以一开始就画好外形再布局,实际上是双向调整的过程,没必要分个谁先谁后。

菜单View-Board Planning Mode。第二种视图就是原来的2D视图,平时看到的就是在第二种视图下,调整完了之后也是在这里切回去。值得注意的是,3D视图也在这个菜单下。

菜单Design下有若干选项可对板子外形做调整。调完后如果有强迫症的话可以在Keep-Out层画个边框。

但这种方法调来调去基本都是方形的,如果是异形板要怎么办呢?

如何绘制出任意形状的PCB?

先在Keep-Out层画出你要的形状,比如圆形。

在2D视图下,菜单Design-Board Shape-Define Board Shape from Selected Objects。[32]

如何画出直角?

AD的直线工具很难画出直角,都是45°线,这在布线时很实用,但是画板子外形时简直要了命,建议把磁吸工具全部打开,提高吸附能力,这样在沿着板子外边缘描线时或许可以画得更直一点。

其实还有更靠谱的方法——愚蠢的我刚刚发现了矩形工具……

放置尺寸

切换到Mechanical 1机械层,菜单Place-Dimension-Linear。

放置尺寸时按空格键可旋转尺寸方向。

放置螺丝孔

也是在Keep-Out层画圈,画好后菜单Tools-Convert-Create Board Cutout from Selected Primitives。

这种方法放置的孔洞是没有镀铜的,另外还有一种做法是把焊盘当作螺丝孔,这样做出来的螺丝孔孔壁有铜。

至于螺丝的尺寸,常用的是M3螺钉,M3螺钉本体直径3mm,为了避免螺丝放不进去,至少加0.1mm的余量。即3.1mm的孔径,5mm的外径。也有人说M3螺钉对应3.5mm的孔径。所以3.1~3.5mm之间应该都可以,我比较倾向于3.2mm。

怎么设置螺丝尺寸?双击圆形,跳出属性界面,注意这里的单位是英制的mil(密耳),不是mm。

1 mil = 0.0254 mm
126 mil = 3.2004 mm

其实,只要输入数字的时候带上单位,也会自动转换,不带单位默认mil。

另一个需要注意的是这里的尺寸是半径和线宽,不是内径和外径。半径63mil相当于直径3.2mm。

除了M3以外,还有M2、M2.5、M3、M4、M4.5、M5、M6等螺钉尺寸,M后面的数字代表直径(mm)。

PCB自动布线

这个功能真的是菜鸟救星!菜单Route-Auto Route-All。其他布线方式暂时还没有研究。

滴泪

菜单Tools-Teardrops…

覆铜

在覆铜前应将布线规则中的Clearance改为20mil。

菜单Place-Polygon Pour…

顶层和底层都应该覆铜,且连接到GND,至于是否应该去除死铜,我也不太确定,只知道去除死铜的同时能够去除超出板子边缘的铜,如果画铜层时一不小心超出了板子边缘的话。

覆铜完成后,应将布线规则中的Clearance改回初始值,一般为10mil。

原理图改动之后PCB怎么办?

菜单Design-Import Changes From XXX.PrjPcb。

如果PCB全部变绿,使劲缩小,看整个PCB的左下角是不是有一个Room,删掉即可。

重做布线、滴泪、覆铜。

检查PCB错误

菜单Reports-Board Information,勾选Routing Information。

若还有导线没连接,回到PCB,按Shift+S,就可以查看哪些导线没连接。[33]


尾声

自动生成的乱七八糟的文件能不能删?

保存的核心就是自己建的那几个文件,多余的删了没啥影响。(亲测)

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Altium Designer 重拾指南 | 菜鸟救星

一个充电宝引发的争论:先有mAh还是先有Wh

作者鸦鸦
2024年3月23日 22:01

那天在迪士尼排队,掏出了我最爱的Anker充电宝,后边的小情侣在赌我这个是无线的还是有线的,然后看我插上了线,他们以为有线实锤了。我很想转过头去告诉他们其实无线也可以的,但是我忍住了。被误解是i人的宿命。

1000018806.jpg

然后朋友跟我讲起了mAh和Wh的概念,我才知道原来mAh还有猫腻。

  • 瓦时(Wh):能量的单位,W=Pt=UIt。
  • 毫安时(mAh):电量的单位,Q=It​,电流大小和时间的乘积,可以理解为,电流越大,放电时间越短,电流越小,细水长流。
  • 注意:电量还有一个单位——库伦(C),1库仑=1安培·秒,因此1mAh=3.6C,而1C约相当于6.25×10^18个电子的电量。

从公式可以看出,mAh和Wh的计算公式只差了个电压U,因此,假如一个充电宝对应的Wh是固定的话,在不同的电压下,mAh就不同了。

例如安克的这个充电宝,电芯容量5000mAh,电池能量18.5Wh=3.7V×5000mAh,因此广告宣称的5000mAh,是在3.7V这个电压条件下的。但是当它以5V输出的话,不计损耗的理想情况下,容量就变成了3700mAh。而它标注的额定容量2900mAh,应该是考虑了各项损耗后的实验数据。

这里引入了一个重要假设,那就是充电宝的能量(Wh)是固定的。

但是,mAh也是有明确物理意义的呀,它是电量的单位,和库伦数成正比,而库伦数又和电子数成正比,换句话说,毫安时和电子数是绑定的。

那么问题来了,为什么是充电宝的能量固定,而不是它的电子数固定???为什么是从Wh推导mAh,而不是从mAh推导Wh?究竟是先有mAh还是先有Wh?

如果假设充电宝的能量固定,那就必须接受充电宝的电子数可变这一灵异现象。

但是,电子数怎么能变呢???它是一个物质实体,冰箱里的鸡蛋数量,难道会随着计算方式的改变而改变吗?

你可以暂停阅读思考半天,但是我现在就要揭晓答案。

其实这里进入了一个概念误区,毫安时代表的并不是充电宝里含有的电子总数,而是在外界刺激下可提供的电子数量。这里的外界刺激,就是电压差。电压差越大,它能提供的电子数就越多。就好比你向朋友借钱,他不给,但是你拿刀架在他脖子上,他立刻掏出一百万给你。

聪明的小伙伴可能会立刻发现这套解释的一个bug,按照我的说法,5V应该比3.7V的mAh更大才对!

对你个大头鬼哦!

5V是输出电压,不是电压差。为什么会有3.7V,主要是锂电池电芯单元的电压,充电宝和手机的电池电压都是3.7V左右,充电宝先升压到5V,然后才能给3.7V的手机充电,如果只输出3.7V,没有电压差的话,是充不了电的,水往低处流,电往低处充。

但是,不论是输出5V还是3.7V,都可以视为外界的反向电动势吧,它是一个阻力电压。想象一下,最愉悦的放电状态,肯定是一根导线直通啦,外界电压为零的时候能提供的电子数最多吧。它应该有一个内部电压,暂且设为N吧,不管有没有其他的升降压电路,它有一个放电的趋势,这能达成共识吧,然后输出电压是阻力,应该有个负号。所以电压差应该是N-5V和N-3.7V,而N-3.7V大于N-5V,所以3.7V的mAh更大。

也许有不严谨的地方,但是先这么理解吧。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往一个充电宝引发的争论:先有mAh还是先有Wh

Matlab求解函数solve、vpasolve和fsolve宠幸谁

作者鸦鸦
2023年11月20日 01:56

以经典的PI补偿器求解PI参数为例:

$$
20 \lg |k_p + \frac{k_i}{j \omega_c}| = gain\_rise
$$

$$
\frac{k_i}{k_p} = \omega_z
$$

第一个方程限定了补偿器在穿越频率处的增益,第二个方程拟定了零点位置。

(如果不懂涵义也没关系,这篇文章仅讨论针对类似的非线性方程组哪种求解函数最好用。如果想捋清楚各类补偿器的设计方法,后面单独写一篇文章。)

宫斗开始

首先淘汰fzero和roots这两个比较低端的函数,据说只支持单变量求解[16]

决赛圈还剩下solvevpasolvefsolve

  • solve:符号解或数值解,无需初始值,只需把方程等号改为双等号==。用法与vpasolve基本相同,感觉更为智能。
  • vpasolve:符号解或数值解,无需初始值,只需把方程等号改为双等号==。若有符号解时比较准,数值解经常无解或错解,慎用!
  • fsolve:仅数值解,必须给初值,方程组必须以函数句柄方式调用,右端为零。数值解比较准。

注:所谓解析解就是符号解;所谓函数句柄,可以理解为指针地址。

宠幸例子

已知参数:

wc = 2 * pi * 4e3;
gain_rise = 49.7481;
wz = 2 * pi * 100;

solve用例

syms kp ki
eqns = [20*log10(abs(kp + ki/(j*wc))) == gain_rise,
    ki/kp==wz];

[ki kp]=solve(eqns);

kp=double(kp)
ki=double(ki)

结果:

kp =
  307.0926
ki =
   1.9295e+05

vpasolve用例

syms kp ki
eqns = [20*log10(abs(kp + ki/(j*wc))) == gain_rise,
    ki/kp==wz];

[ki kp]=vpasolve(eqns)

结果:

ki =
192891.70190885358092200094503597 + 4821.8329924348312217466650244155i
kp =
306.99667840202430580932484824932 + 7.6741855550958895617299121076886i

fsolve用例

syms kp ki
eq1 = 20*log10(abs(kp + ki/(1i*wc))) - gain_rise;
eq2 = ki/kp - wz;
eqns = [eq1,eq2];

fun = @(vars) double(subs(eqns, [kp, ki], vars));
initial_guess = [1, 1];
sol = fsolve(fun, initial_guess);

kp = sol(1)
ki = sol(2)

结果:

kp =
  307.0924
ki =
   1.9295e+05

冠军加冕

用法上,solvevpasolve都十分简洁,fsolve由于句柄和初值的存在显得稍稍复杂,不过可以求助ChatGPT帮你写呀!

精度上,solvefsolve的结果都可以看作是正确的,vpasolve的复数解我也不知道是什么鬼,就算仅看实部,精度也不如其他两位小主,因此打入冷宫。

速度上,solvefsolve快。但fsolve真真是个很单纯的孩子,从迭代过程来看就是粗暴求解,用以检验会比较安心,而且其他两个无解的时候fsolve可能还会有解。

我宣布,solve是本届Matlab求解函数宫斗冠军。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Matlab求解函数solve、vpasolve和fsolve宠幸谁

PCB进阶指南

作者鸦鸦
2023年5月29日 22:17

前置知识:Altium Designer 重拾指南 | 菜鸟救星 – 鸦鸦的巢穴 (crowya.com)

以下经验主要适用于开关电源等既有功率线又有信号线的场景。

多层板布局

以六层板为例,最外两层走功率,次外两层铺地,中间两层走信号。

功率线放在最外层,是因为散热好。

把信号线夹在地层中间,有利于屏蔽外部干扰。

增加或减少层数是在菜单Design-Layer Stack Manager这里操作(快捷键DK)。

右键插入一个新的信号层。

或者,用AD预设的六层板。

个人还是喜欢自己右键插入新板。

这里涉及到一个正片(Signal)和负片(Plane)的概念:

Signal就是走线的地方敷铜,Plane是默认敷铜,走线的地方挖空。

走线宽度

信号线一般10mil或者20mil就可以了,但是涉及驱动、电源的线要适当加粗,比如40mil、50mil[17]

主功率的走线肯定要宽得多,可以用这个算:PCB走线载流计算器

以15A为例,可以看到所需的外层线宽比内层小得多,这也是为什么前面说最外层走功率。

一层线不够宽的话可以分两层走,比如顶层200mil,底层200mil,加起来就够了。

确定了宽度之后可以对功率线单独设置一个走线规则,在菜单Design-Rules这里(快捷键DR)。

网络类别(Class)的设置是在菜单Design-Classes这里(快捷键DC)。

需要注意的是每次从原理图更新PCB时不要把Class删掉。

驱动线、电源线同理。

绝缘间距

首先涉及到两个概念:

  • 爬电距离:表面距离
  • 电气间隙:空间距离

这个比较头大,标准比较杂乱捋不明白。我也不太清楚,就按污染等级2材料组别III来查表吧。

IEC60335-1:2001 表17-基本绝缘的最小爬电距离[18]

还有一种简单粗暴的说法是每100V按1mm来估算,300V大约3mm的样子。

确定了绝缘间距之后就可以为功率线设置一个专属的规则了,同样是在菜单Design-Rules这里(快捷键DR)。

100mil=2.54mm
250mil=6.35mm

过孔直径

还是在菜单Design-Rules这里(快捷键DR)。

一般都是通孔,直径差不多就可以了,大点小点问题不大,比如我这里外径28mil内径14mil。

功率地与信号地

菜鸟曾经搞不清如何接地。甚至忘记焊0Ω电阻,怎么调都不对劲。现在大概知道了。

不隔离的话,一般只有两个地,功率地(PGND)和信号地之间分开铺地,最后通过0Ω电阻相连。

隔离的话,原边两个地,副边两个地,至少就有四个GND了,如下图,两边分别通过0Ω电阻相连。

有时候模拟地(AGND)和数字地(DGND)也会分开,但最终也是要连在一起的。

 功率地和信号地为什么要分开?
减小公共阻抗。你想想功率地线上回流的电流有多大,哪怕导线只有一点点阻抗,也会产生压降,如果这个压降叠加到信号回路里,那就不准了。同样,模拟地和数字地分开也是为了减小公共阻抗。
 那为什么又要用0Ω电阻相连?
提供相同的零电位基准。如果不连,两个回路之间是可能存在电位差的,是“悬浮”的,可能会导致一系列玄学问题。那直接用一根导线相连不就好了吗?还是前面的问题,如果你在原理图里直接用线连接,AD是无法区分出功率地和信号地这两个节点的,但是加一个0Ω电阻,就变成两个节点了,方便画PCB。

总而言之,分开的是路径,连接的是电位。殊途同归。同归于零。

至于控制回路应该和原边共地还是副边共地,怎么方便怎么来。

铺铜

铺铜不是GND的专利哦,有些粗的功率线也可以用铺铜的方式来画。可以理解为画图中的油漆桶工具。

一共有三个工具涉及铺铜,工具条里的Polygon Pour是智能铺铜,有避障功能的,还有一个Fill是绘制方块铜皮,Solid Region是绘制多边形铜皮。选中区域重新铺铜的快捷键是TGR。

一般GND是单独铺整层,因为连接GND的节点很多,毕竟很多模块都需要零电位参考嘛,电源负端也要连GND,所以这个节点是地下水源,很多地方都需要连它,那索性修到家家户户门口嘛,实在够不着打口井(过孔)就能接到地了。

理论上凡是电位稳定的节点都可以铺铜,因为铺铜还有一个附带的好处就是可以屏蔽干扰,但是大多数节点的电位肯定都不如零电位的GND那么稳定,所以铺地是最常见的,其他节点的铺铜就比较少见,除非是为了拓宽走线面积。

快捷键

Ctrl+W 连线

Ctrl+M 测量(比放置尺寸好用)

Shift+S 仅显示单层布线(比小眼睛图标好用)

元件布局

  • SPACE 旋转
  • X 水平翻转
  • Y 垂直翻转

元件对齐(强迫症必会)

  • Ctrl+Shift+L 左对齐
  • Ctrl+Shift+R 右对齐
  • Ctrl+Shift+T 上对齐
  • Ctrl+Shift+B 下对齐
  • Ctrl+Shift+H 水平均分
  • Ctrl+Shift+V 垂直均分

字母键组合(菜单下划线字母)(英文输入法下)

  • DR:Design-Rules 规则设置
  • DC:Design-Classes 类别设置
  • DK:Design-Layer Stack Manager 层管理器
  • TGR:Tools-Polygon Pours-Repour Selected 选中部分重新铺铜

潜规则

  1. 滤波电容布局时靠近芯片引脚
  2. 驱动芯片布局时靠近MOS管
  3. MOS管靠近边缘排布有利于散热结构设计(但是不方便走线)
  4. 尽可能减小环路面积,比如U形回路
  5. 信号线夹在地层中间
  6. 强电、弱电分开布局
  7. 功率地、信号地、数字地、模拟地分开
  8. 放不下的元器件可以放反面

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往PCB进阶指南

运算放大器&比较器应用指南

作者鸦鸦
2023年5月29日 14:08

前言

关于运放的资料网上很多,但结构不清晰,配图不精致。

为了避免每次遗忘都重新搜索,还是决定自己重写一遍。

虚短虚断[19]就不讲了,已经成为每个学过模电的人刻在DNA里的记忆了。

运放有四种基本线性运算:同相放大、反相放大、加法、减法(差分放大);两种基本的非线性运算:积分、微分。既然名字就叫放大器,那就先讲用于放大的三种情况吧。

三种放大电路

同相放大
反相放大
差分放大(减法)

$$V_o=\left(1+\frac{R_f}{R_1}\right)V_i$$

输入接正

$$V_o=-\frac{R_f}{R_1}V_i$$

输入接负

$$V_o=\frac{R_2\left(1+R_1 / R_2\right)}{R_1\left(1+R_3 / R_4\right)} V_{i 2}-\frac{R_2}{R_1} V_{i 1}$$

当R1/R2 = R3/R4

$$V_o=\frac{R_2}{R_1}\left(V_{i 2}-V_{i 1}\right)$$

当R1=R2=R3=R4

$$V_o=V_{i 2}-V_{i 1}$$

两电阻的同相比例放大电路有个问题,只能放大不能缩小,放大倍数只能大于1,因为本质是电阻分压原理,没有负电阻所以没法缩小。为了实现任意放大倍数,还需再加两个电阻,用于分压。即四个电阻的同相比例放大电路可以实现任意放大倍数。

除了图上的两个电阻外,输入端往往还有一个电阻,应该是限流或者阻抗匹配的作用。

加法电路

加法电路

$$V_o=-\left(\frac{R_f}{R_1} V_{\mathrm{i} 1}+\frac{R_f}{R_2} V_{\mathrm{i} 2}+\frac{R_f}{R_3} V_{\mathrm{i} 3}\right)$$

当Rf=R1=R2=R3

$$V_o=-\left(V_{i 1}+V_{\mathrm{i} 2}+V_{\mathrm{i} 3}\right)$$

两种非线性运算

积分电路
微分电路

$$v_o(t)=-\frac{1}{R C} \int v_i(t) \mathrm{d} t$$

$$v_o(t)=-R C \frac{\mathrm{d} v_i(t)}{\mathrm{d} t}$$

跟随器

也叫缓冲器,同相比例放大的一种特殊应用。

电压跟随

$$V_o=V_i$$

 既然增益为1,何必多此一举?
设想一个经典的电阻分压采样场景,前级用了大电阻分压,后级却是个低阻抗的MCU,如果直接相连,分压电阻和MCU的输入阻抗就是并联关系,两个电阻并联,总阻值一定比其中任何一个都小,那采样还采的准吗?所以,电压跟随器的作用主要是为了增大输入阻抗,实现前后级信号的隔离。
没有跟随器,采样点阻抗变小[20]
加入跟随器,后级相当于开路

比较器

比较器可以看作是一种特殊的运算放大器。两者符号也一模一样,那看原理图的时候怎么区分呢?这可能是困扰过许多菜鸟(不会只有我吧)的一个问题。

  • 看连接方式:运放是负反馈,比较器是正反馈。
  • 看型号:比如LM158是运放,LM119、LM293是比较器。
 运放可以当做比较器用吗?
可以,反之不行。但是!不太合适。就好像开宝马送外卖,还不如小电驴快。
首先,运放讲究的是精确,因为工作在线性区嘛,要维持一个稳定的放大倍数,总是小心翼翼的。
比较器就喜欢走极端,我才不管你放大多少倍呢,直接向上下限冲刺,来个高低电平翻转!
所以比较器的速度一般比运放快,更适合用在只需要判断输入大小的场景。术业有专攻。
如果你硬要让运放去走极端的话,应该也不是不行,只不过人家不是专门为这种应用场景设计的。
最实际的一个区别是,比较器的内部输出端一般是集电极开路(OC),外部接个上拉电阻就可以拉到任何所需的电平电压,而运放内部一般是推挽输出。

上拉电阻和下拉电阻

上拉电阻
下拉电阻[21]
 为什么要加上拉电阻?
这里找了一个通俗易懂的YouTube视频,如果看不了的就看截图吧。

 上拉电阻的阻值如何确定?
理论上是要验算一下的,但无脑取10kΩ应该也能满足大多数情况。
具体方法就是分别计算开关打开和关闭两种状态下产生的高低电平电压是多少,是否符合TTL或者CMOS的电平范围标准。比如DSP的高电平范围是2~3.3V,低电平范围是小于0.8V,这个在数据手册里能查到。

运放和比较器的选型

 LM158、LM258、LM358有什么区别?
性能从高到低排序:LM158军品级(-55°C~125°C)>LM258工业级(-25°C~85°C)>LM358商业级(0°C~70°C),如果不在乎那点温度范围和性能差异的话,是可以通用的。

如果从响应速度方面考察,运放的核心指标有 带宽 和 压摆率SR (Slew Rate),都是越大越快;比较器的核心指标是响应时间,显然越小越快。下面给个具体产品的对比:

如此看来,LM258系列的性能就显得很一般了,怪不得大家戏称它叫“垃圾运放”。不过像电压环这种速度本来就很慢的场景,应该也是够用的,电流环对速度要求比较高,应该选个好点的,比如CA3140,不过它是单通道,而且价格贵好多,所以还是要综合考虑一下性能和成本。而且,带宽太大也不见得一定是好事,因为对高频噪声同样敏感。

带宽是个什么玩意儿

前置知识:波特图是个什么玩意儿

带宽在开环和闭环下概念不同。

带宽 = 闭环截止频率(-3dB处) ≈ 开环穿越频率(0dB处)

这两者并非严格等价,只是正相关,带宽越大,响应越快,不管哪种带宽都是这样。
顺便一提,穿越频率和截止频率相等的情况只发生在开环传递函数的相位裕度为90°时。欠阻尼系统的闭环带宽约为开环穿越频率的1.5倍。[22]

 为什么带宽越大响应速度越快?
带宽大的意思就是对高频信号还有很大的增益呗,高频高频,频率越高的信号不就是变化速度越快的信号嘛,幅频特性曲线的横轴都是正弦信号的频率,也就是说,随便给个输入信号,都能分解到横轴上各种频率分量的叠加,输入变化越快,对应的高频分量就越多,如果带宽大,对高频信号响应好,就是对输入变化很快的信号捕捉复现的能力好。可惜啊,高频噪声也被放大了。

轨到轨

所谓“轨”指的就是供电电压上下限,也就是满摆幅的意思。

从电源线的最大电压(VCC)到其最小电压(GND或最小负电压VEE)的整个范围称为轨到轨(Rail-to-Rail)。普通的运放输入电位通常要求高于负电源某一数值,而低于正电源某一数值。 经过特殊设计的运放可以允许输入电位在从负电源到正电源的整个区间变化,甚至稍微高于正电源或稍微低于负电源也被允许。 这种运放称为轨到轨输入。此外还有轨到轨输出、轨到轨输入和输出。

阻抗匹配

先说怎么匹配:从正负输入端分别往回看,使两条回路上的总阻值一致。(输入信号看做短路接地)

 为什么要阻抗匹配?
理想运放的输入端没有电流,但实际上有输入偏置电流。在运放内部,前级一般是像右图这样的差分放大电路,Ra和Rb上实际上流的是两个三极管的基极电流,如果Ra不等于Rb,则在Ra和Rb上的压降就不相等,这样就会导致输入信号没有被差分放大电路等比例放大,从而影响放大电路的精度。[23][24]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往运算放大器&比较器应用指南

PTC Mathcad 8.0 setup.exe 打不开/无反应解决办法

作者鸦鸦
2022年12月13日 22:29

2023年1月31日更新

光速解决办法——鼠标点中这个软件,Alt+空格,最大化。

后面的都可以不看了,除非你想重装到8.0版本的话。

事情的起因

Mathcad 7.0 本来一直好好的,直到有一天突然打开无反应,窗口不显示,预览窗口也是一片黑或一片白,搜寻问题无果,遂打算卸载重装。

发现最新版已经更新到Mathcad 8.0,反正都卸了,当然要尝鲜一下啦。

下载的安装包是iso文件,装载光盘映像后,问题又来了,不论是直接双击还是以管理员运行都毫无反应,小圈圈转几下后什么都没有发生。

打开任务管理器,进程下面是找不到的,但是详细信息下面会短暂出现两个setup.exe然后消失不见,或者剩下一个,如果点得频繁可能会出现“请先退出正在运行的安装程序成卸载程序”提示。这个进程权限似乎很高,手动是结束不了的。除非重启,但是重启后还是一样的问题。

于是到处搜解决方案,全是白扯。尝试过的方案包括以下几种:

全英文路径,无效。

先生成许可证后安装,无效。

不装载iso,以解压的方式运行,无效。

关闭火绒、联想电脑管家等杀毒软件,无效。

控制面板>启用或关闭Windows功能,关闭Hyper-V,无效。

……

到底怎么解决的

最后的解决方案竟然是——

使用子目录下的msi文件安装!一下就成功了!

如图所示:ptcsh0>PrimeWixlnstaller 64bit.msi

估计是PTC又在安装包的外面套了一层壳,以展示花俏的安装界面,然而它套的那层壳各种问题,还不如直接用核心安装包!PTC的很多其他软件也有这个通病,比如Creo,搜索的时候有类似的贴子。但是没有一个提到Mathcad!侥幸试了下,居然也可以。

顺便把其他文件的作用也摸索了下:

第一个很有迷惑性的文件夹install里面是诊断工具的安装包,没啥用,可以不装。

第二个pim里面是各种零件,不用管。

第三个ptcsh0里面还有个exe文件需要注意,ndp48-x86-x64-allos-enu.exe,这个是.NET Framework框架,以前安装过的就不用装。不确定的可以装一下,反正它是先检测后安装。

小声嘀咕

真是气死本王了,这么简单的解决方案浪费了半天,PTC应该杀个程序员来祭天。

哦对了,它现在还多了个出口协议。建议大家写论文的时候不要提用什么软件做的了……

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往PTC Mathcad 8.0 setup.exe 打不开/无反应解决办法

❌