代码改变世界

电源参数计算常用的Mathcad功能介绍

2023-06-17 13:52  斑鸠,一生。  阅读(7347)  评论(0编辑  收藏  举报

  mathcad作为一款常用的数学计算软件,在很多个领域都用应用。本文用于总结在电源参数计算常用的功能或者函数。

  工预善其事,必先利其器。有时候您比别人做得好不是因为您厉害,而是你比别人更会利用工具。


一、定义下标

  使用L+"."+n 定义的是变量Ln,使用L+"["+n 定义的是矩阵的下标Ln.

  变量Ln只能代表一个数据,矩阵Ln如果n是一个数列的话,Ln代表一维数据,变成了一个矢量。

 

 

 

 

二、分段函数

  在变量后面输入英文状态下的"]"键,就能出现分段函数的格式,将函数f(x)分为两段,再次按"]"键,将函数分为三段。

   不过分段函数一般是结合其他函数命令一起使用。比如:if、otherwise指令,这两个指令能在工具栏找到,手动输入无效。

三、求余函数mod(x,y)

   mod(x,y) 返回函数x%y的值,这个函数可以手动输入,也可以通过在菜单栏插入相应的函数。以四管Buck Boost电路为例,

  电感感量的大小直接关系着变换器的工作模式,因此,分别画出不同工作模式下的电感电流波形。使用mod函数的好处是,可以画多个周期的电流波形。

  当然使用otherwise指令和函数递归也能做到相同的效果。两种方式画出来的波形是一致的。

 

 

  下图是工作在CCM、CRM、DCM下的电感电流波形。

四、积分函数

  在电源领域,积分函数的作用主要有两种,一是求平均值,二是求有效值。积分函数的符号可以直接在工具栏里面找到。填写相应的参数即可。

五、傅里叶变换函数cfft(x)

  下面使用反激变换器原边电流波形来介绍mathcad软件在傅里叶变换中的应用。首先绘制原边电流波形如下图所示:

 

  Step one:将要变换的波形离散化

    下图使用2000个点将一个周期离散化,事实上离散点数越多,傅里叶变换的结果越准确。

  Step two:使用cfft(x)函数,将上述离散函数变为复数

    此时的x,y都是一维矩阵,数据长度为PointN,矩阵下标的表示方法见本文第一点。

    注意:对于某些函数曲线来说,经过cfft()变换后的y矩阵只有虚部,没有实部,


    那么在下一步的arg()函数的时候,将会出现异常。原因是零不能做分母,计算机处理不了无限大的数。

     为了解决上述问题,实际在使用cfft()函数进行变换的时候,常常人为叠加一个很小的实数。

  Step three:提取复函数的幅值与相位

    在这里需要注意的是,Harmonici 已经包含了Harmonic0的值,但是Harmonic0与Harmonici 的计算方式不一样,因此需要在Harmonici后重新计算Harmonic0来覆盖的上一步包含的Harmonic0数据。

    计算的Harmonic和Phase就是傅里叶变换后的结果。其中的序号为谐波的次数。

    绘制柱状图如下图所示:
    为了验证傅里叶变换的正确性,将频域数据在时域重新绘制,可得下图:
    如果谐波含量更丰富,波形还原的准确度也会更高。

六、导入Excel表格数据

  假设有大量的Excel数据需要导入到mathcad中,手动导入数据比较麻烦。因此,软件自带了数据插入功能,使用Matrix column可以取得导入的Excel数据。

  Step one:准备Excel数据文件

  Step two:使用mathcad菜单栏自带的数据导入,并为导入的数据取个变量名字。

    此时直接使用变量名得到的是导入的所有数据,需要单列数据的话需要单独提取。

  Step three:使用Matrix column 获取单列数据,并且提取的数据可以参与运算或者作图

七、矩阵向量化运算

  矩阵向量化是用于两个矩阵对应的行列单独相乘得到新的矩阵的运算。在电源设计中应用广泛,比如最大电压,正常电压,最低电压下的峰值电流等计算。使用矩阵可以让设计文档看着简介。

  两个矩阵进行运算的时候,选择矩阵向量化这个符号,代表矩阵每个元素对应另一个矩阵的元素间的运算,然后在组成矩阵。

  不选的话,就变成矩阵的点乘法运算

 八、使用命令求解多元方程

   mathcad 内部定义了Given - Find 关键字,用于求解多元方程组。需要注意以下几个注意事项:

  • 预定义求解变量
  • 求解方程组放在关键词Given 和 Find 之间
  • 关键字Given,find找不到的化,可在mathcad里面直接输入。
  • Find 函数里面的变量为局部变量,用于后续计算需要重新赋值