单刀八掷开关测试程序

网友投稿 2019-06-19 15:44

      前两天帮同事编了一个双刀双掷开关的测试系统,测试了一下,还有点问题,数据是抓取出来了,但是最终提取需要的数据时逻辑上还是有点问题,逻辑搞对了,同事也没有用上,看来要等下次了……。

      于是,我按照前面编写的程序套路,对着HMC321ALP4E的手册编写了一个单刀八掷开关的测试程序,想来有点空对空,但是从仪器上读取的数据不过有错,而抓取数据有很简单,只是单纯抓取损耗和隔离,逻辑很简单,想来不会有错的。

HMC321ALP4E的电性能参数见下表:

https://cdn.china-scratch.com/timg/190621/15443B354-0.jpg

其真值表如下:

https://cdn.china-scratch.com/timg/190621/15443B406-1.jpg

该程序使用的仪器是N5230A PNA-L系列的网络分析仪,控制则采用前面文章中讲过的ARDUINO单片机,作用是提供工作电压和输出电压。程序框图如下:

https://cdn.china-scratch.com/timg/190621/15443B109-2.jpg

两部分放大图如下:

https://cdn.china-scratch.com/timg/190621/1544362239-3.jpg

https://cdn.china-scratch.com/timg/190621/15443J195-4.jpg

      设置网络分析仪的测试参数,注意,在首次测试时,S21_1等测试名称不再系统中,需要将MODE设置为(0:create),完成设置后,后续测试将其改为(2:SELECT)即可顺利测试。测试四个项目,输入输出驻波,分别选择(S11、S22)并将其格式改为SWR,最终数据也将存为驻波格式,S12、S21的格式为默认dB格式,不需要设置。设置arduino端口打开,将13#IO连接开关的工作电压端,13口打开后HMC321A工作电压为+5v,HMC321A开始工作。将2#、3#、4#分别对应HMC321A的A、B、C控制端。

然后开始循环,每个端口测试八次,2,3,4端口的数值从二进制的000变为111,对应于RFC-RF1,……RFC-RF8导通,其他端口关断,由于N5230A只有两个端口,因此测试完一个端口的八个状态后需要手动切换输出端口,这里我们使用了一个WHILE循环,若不按下“下一步”按钮,则WHILE循环一直执行,端口切换完成后,按下“下一步”按钮,程序重新从000开始运行,当八个端口全部测试完成后,按下“下一步”按钮,测试结束,关闭arduino的2、3、4、5、13端口,并关闭arduino的串口占用,进入数据处理 步骤。

https://cdn.china-scratch.com/timg/190621/15443J195-4.jpg

数据处理驻波可以直接从数组中取最大值,没有太多难度,程序里面就没有写,主要是损耗和隔离,由于分别取得是S21的最小值和最大值,且每次取得位置均不同,这里说明一下。

将S21的每个状态的全部测试数据取最大值和最小值(0列和1列),然后组成一个数组,测试完成后索引数组中的数据。

测试RFC-RF1时,arduino输出000时,RFC-RF1导通,其余关断,此时,数组第0页第0行即为此态的最大值最小值,由于是测损耗,因此读取第1列的数值,其余为隔离,需要读取最大值,则读取对应行的第0列数值。

测试RFC-RF2时,arduino输出001时,RFC-RF2导通,其余关断,损耗读取第1页第1行第1列。其余读取对应行第0列。

测试RFC-RF3时,arduino输出010时,RFC-RF3导通,其余关断,损耗读取第2页第2行第1列。其余读取对应行第0列。

依次类推,可以得到所需要的全部数据,至此,测试程序结束。

如需要源程序,可以加我微信:wenyanbing80,当然代价是有的,就是替我发发朋友圈,吸引一下人气。https://cdn.china-scratch.com/Public/Home/images/grey.gifhttps://cdn.china-scratch.com/Public/Home/images/grey.gifhttps://cdn.china-scratch.com/Public/Home/images/grey.gif

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com