历史上的今天
返回首页

历史上的今天

今天是:2024年10月25日(星期五)

正在发生

2019年10月25日 | 利用双通道示波器展示传输线行为的方法

2019-10-25 来源:eefocus

  摘要:本文采用创新方法,通过双通道示波器测量出传输线上的驻波,从而利用受控的移动图像展现信号在传输线中的真实情况。


  引言

  过去,采用一种称为“勒谢尔线”的真实物理传输线装置展示驻波现象,需要费很大的劲才能测量出相应的波形。尤其是,这种测量方法本身会干扰波形的形状,而且不可能获得瞬间的可视波形。


  如今有一种创新的方法,可利用双通道示波器测量出传输线上的驻波。众所周知,示波器的特性之一是:当扫描与显示波形不同步但接近其频率或它的分频频率,波形表现为在屏幕上移动。如果扫描频率高于波形频率或它的分频频率,波形则向右侧移动;如果扫描频率低于波形频率或它的分频频率,波形向左侧移动。如果将一个频率低于扫描频率的波形加至双通道示波器的某个通道,再将一个频率高于扫描频率的波形加至另一个通道,两个波形将表现为相互反方向移动。实际上,这两个波形可表示传输线上的正向波和反射波。如果,将示波器切换至Add模式,示波器上将显示单个波形,这个波形就代表了驻波。


  产生一个有意义的波形显示需要一些频率精确的正弦波,精确频率的正弦波利用直接数字合成(DDS)技术很容易实现。我们采用频率大约为400Hz来演示,因为为了视觉效果以及便于截取屏幕。产生三个波形:399Hz、401Hz正弦波和一个400Hz阶梯波,用于示波器的同步(触发)。每个正弦波波的频率和示波器扫描触发频率差1Hz,这样能清晰模拟出传输线上1Hz频率的信号。尽管示波器触发频率为400Hz,但扫描速度可设定为400Hz的分频,所以可观察到每个波形的多个周期。


  1 显示

  图1所示为两个正弦波在示波器双跟踪模式下的显示。


  箭头表示波形在屏幕上的运动方向。这个演示最好是在一个老式模拟示波器上效果更好。数字示波器的显示可能会“跳动”地很厉害,取决于其刷新频率。然而,有一种方法数字示波器在这类演示中要比模拟示波器有优势,我们将在下文讨论。


  图2所示为将示波器切换至Add模式后得到的驻波。

  同样,在静态图片中很难看出效果。图中可看到5个节点(始终为0电压的点)。在节点之间,波形从其负值(极限)振荡至正极限。本例中,正向和反射波相等,所以传输线必定为开路或短路。如果左边是端接,那它必定短路了,因为有一个节点在哪。VSWR是驻波的最大幅度与最小幅度之比。由于最小幅值为零,所以VSWR为无穷大。


  通过改变示波器其中一个通道的增益,可模拟出其它端接情况。图3中,将回波幅值(上方通道)减小一半,与之对应的端接情况既非开路亦非短路,也不是传输线的特征阻抗。

  形成的驻波图案如图4所示。


  波形中无节点(零电压点)。如箭头所示,最大和最小波形幅值的比值为2比1,即VSWR为2:1。


  2 直接数字合成


  为获得稳定的显示,就必须产生准确的频率。这里的“稳定”表示节点的水平位置或者驻波图案的最大或最小位置在屏幕上不移动。一种实现办法,采用具有数控振荡器(NCO)2的DDS。NCO采用一个16位计数器,称之为相位累加器,来实现。FCLOCK(图5)为一个固定的时钟频率递增量,Fcw为调制量或频率控制量。FCLOCK远远高于波形频率。


  将相位累加器的高8位的值和正弦查找表(LUT)对应,然后将查找值发送至DAC。相位累加器中的值可认为对应的是一个圆上的某一个点;调制量定义为绕圆周的“步长”。调制量越大,绕圆周旋转的越快,因此输出的频率也越高。产生的频率由下式给出:

  FOUT = FCW × FCLOCK/216

  输出频率与FCW成正比。本例中,FCLOCK为31.25kHz。FCW值采用841、839和837,计算得到三个频率为:

  F1=841×31250/65536= 401.02Hz
  F2=839×31250/65536= 400.06Hz
  F3=837×31250/65536= 399.11Hz

  这里的频率表示采用保留两位小数,但实际上(F1 – F2和(F2 – F3)是完全相等的。频率差精确到9位小数时为0.953674316Hz。


  3 实现

  本演示使用Maxim® MAX5715 4通道12位数/模转换器(DAC)的三个通道来实现,由Arduino® Uno板上的Atmel® AVR处理器驱动。Arduino是一个开放的软硬件平台,对于基于AVR系统开发环境,非常方便。Maxim DAC通过SPI(串行外设接口)很容易和Arduino相连,AVR硬件支持SPI接口,Arduino软件库自带SPI驱动。运行Arduino 库中的SPI程序初始化AVR SPI硬件。也提供现存的SPI数据传输的程序,但速度太慢,未使用。


  三个相位累加器采用16的位计数器,计数器递增是通过一个中断程序来实现,中断程序由处理器中的一个定时器来触发。每32µs (1/31.25kHz)中断一次。利用LUT将两个相位累加器值(生成F1和F3)转换为正弦值并然后送给DAC的两个通道。将第三个相位累加器(生成F2)的两个最高有效位发送至第三个DAC通道,产生一个4节拍的示波器触发信号。通过改变触发电平,可选择想要驻波的相位去进行开路或短路端接仿真。


  Arduino SPI库中的数据传输程序太慢,导致中断程序的运行时间超过了中断周期。因此,改用直接写至AVR SPI硬件的代码。

  中断程序代码:

  //******************************************************************
  // Timer2 Interrupt Service at 31372.550 Hz = 32uSec
  // this is the timebase REFCLOCK for the DDS generator
  // FOUT = (M (REFCLK)) / (2 exp 32)
  ISR(TIMER2_OVF_vect) {
  // set the SS line low
  PORTB &= (0xFF ^ 4);
  // send in the address and value via SPI:
  SPDR = CODEA;
  // update phase accumulators while waiting
  phaccu_a += tword_a;
  phaccu_b += tword_b;
  phaccu_c += tword_c;
  while (!(SPSR & _BV(SPIF)))
  ;
  // do the table lookup based on accum 'a' high-order byte
  SPDR = pgm_read_byte_near(sine256 + highByte(phaccu_a));
  while (!(SPSR & _BV(SPIF)))
  ;
  SPDR = 0;
  while (!(SPSR & _BV(SPIF)))
  ;
  // set the SS line high
  PORTB |= 4;
  // set the sS line low for the second SPI transfer
  PORTB &= (0xFF ^ 4);
  // do the second SPI transfer
  //SPDR = CODEB_LOADALL;
  SPDR = CODEB;
  while (!(SPSR & _BV(SPIF)))
  ;
  // do table lookup based on accum 'b'
  SPDR = pgm_read_byte_near(sine256 + highByte(phaccu_b));
  while (!(SPSR & _BV(SPIF)))
  ;
  SPDR = 0;
  while (!(SPSR & _BV(SPIF)))
  ;

  // take the SS pin high to de-select the chip:
  PORTB |= 4;
  // set the sS line low for the third SPI transfer
  PORTB &= (0xFF ^ 4);
  SPDR = CODEC_LOADALL;
  while (!(SPSR & _BV(SPIF)))
  ;
  // Four stairsteps on output C
  SPDR = highByte(phaccu_c) & 0xC0;
  while (!(SPSR & _BV(SPIF)))
  ;
  SPDR = 0;
  while (!(SPSR & _BV(SPIF)))
  ;
  // take the SS pin high to de-select the chip:
  PORTB |= 4;
  }

  Arduino和MAX5715之间的连接如图6所示。


  MAX5715焊接在适配器电路板上,然后连接至Arduino Uno 样板“shield”(图7)(“Shields”是为Arduino系统提供各种附加功能的电路板)。


  4 数字示波器上的显示

  如上所述,该演示在模拟示波器上效果最佳,因为根据数字示波器的刷新率不同,显示可能发生跳动。但数字示波器模拟长余辉显示的能力能够非常好地显示驻波图案,如图8所示。

  5 总结

  通常使用示波器的目的是获得不移动的显示,而本文利用受控的移动图像展现信号在传输线中的真实情况。


推荐阅读

史海拾趣

AOS公司的发展小趣事

进入20世纪,AOS公司开始将目光投向热水领域。1936年,公司研发出了著名的“金圭特护内胆”技术,这一创新在热水器行业中引起了革命性的变化。金圭内胆不仅提高了热水器的耐用性和安全性,也大幅提升了产品的能效。这一技术的推出使AOS公司迅速成为热水领域的领先者,并奠定了其在全球热水器市场的领导地位。

ACCUTEK公司的发展小趣事

随着产品质量的不断提升和市场份额的逐步扩大,ACCUTEK公司开始将目光投向国际市场。公司积极参加国际电子展会和技术交流活动,与全球多家知名企业建立了合作关系。同时,公司还在海外设立了多个分支机构,以便更好地服务当地客户。这些举措不仅提升了公司的国际影响力,也为公司的长远发展注入了新的活力。

Advanced Detector Corp公司的发展小趣事

随着全球市场的不断开放和经济的全球化,ADC开始将业务拓展至全球范围。公司在全球各地设立了分支机构,并建立了完善的销售和服务网络。通过全球化布局,ADC成功打开了新的市场,提升了品牌影响力,实现了业务的快速增长。

Alliance Memory公司的发展小趣事

随着全球市场的不断开放和经济的全球化,ADC开始将业务拓展至全球范围。公司在全球各地设立了分支机构,并建立了完善的销售和服务网络。通过全球化布局,ADC成功打开了新的市场,提升了品牌影响力,实现了业务的快速增长。

EMC Component Group公司的发展小趣事

随着全球市场的不断开放和经济的全球化,ADC开始将业务拓展至全球范围。公司在全球各地设立了分支机构,并建立了完善的销售和服务网络。通过全球化布局,ADC成功打开了新的市场,提升了品牌影响力,实现了业务的快速增长。

Fenfa Electronics Ltd公司的发展小趣事

Fenfa Electronics Ltd公司自创立之初,就深知技术创新的重要性。在公司成立初期,面对市场上激烈的竞争,Fenfa团队决定投入大量资源于研发领域。经过数年的不懈努力,公司成功研发出一款具有革命性的电子产品,该产品以其高效能、低能耗和出色的用户体验迅速在市场上崭露头角。这一技术创新的突破,为Fenfa Electronics Ltd公司赢得了市场的认可,也为公司后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

单脉冲序列对双激式开关电源变压器铁心的磁化开关电源原理与设计(连载53)

2-1-1-4.脉冲序列对双激式开关电源变压器铁心的磁化 双激式变压器与单激式变压器的区别主要是两者输入电压的参数不一样。单激式变压器输入的电压是单极性直流脉冲,而双激式变压器输入的电压是双极性交流脉冲。为了简单起见,我们把双激式变压器 ...…

查看全部问答>

数字视频监控硬件设计经验谈

数字视频监控系统主要包括DVR、DVS、IP-Camera等,涉及到嵌入式系统技术、视频编解码技术、音频编解码技术、联网及域名处理技术等。硬件对于系统而言,相当于建筑的地基,地基牢,建筑才可靠,才能够经历风风雨雨的考验。     概述 & ...…

查看全部问答>

LED结构、发光原理、光源特点及应用

replyreload += \',\' + 384127;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

IOCTL CODE DeviceIoControl

我做摄像头的数据采集,用CreateFile打开设备,然后调用DeviceIoControl函数,第二个参数需要的是控制CODE,这个CODE需要驱动来提供?不是标准调用吧。如果驱动没有提供读数据的控制CODE,那我是不是就没有办法用DeviceIoControl得到数据了?…

查看全部问答>

vhdl, 怎么实现让输出维持一段时间后撤销

vhdl, 怎么实现让输出维持一段时间后撤销~~~~~ 请大侠,帮忙~…

查看全部问答>

PCI 接口 IO读写 驱动

driverStudio 生成的驱动程序 实现 IO读写功能 驱动程序代码中两个操作如下: NTSTATUS RW6070Device::RW6070_IOCTL_800_Handler(KIrp I) {         NTSTATUS status = STATUS_SUCCESS;         //t …

查看全部问答>

stm32sd卡咨询

                                 各位大侠请问,stm32有没有通过spi读取sd卡的例程,或者哪位大哥自己做过这一块可以指点一下小弟,我刚开始做这一 ...…

查看全部问答>

ST中国微控制器中文下载怎么都挂了?

                                 RT…

查看全部问答>

RT-Thread开源实时操作系统/STM32F103VB0.3.0b3版本

这个版本更新有些多,RT-Thread/STM32F103VB 0.3.0 beta3更改记录:- 内核,添加IAR EWARM 5.x工程,在内核定义中做相应的平台定义;- 添加文件系统组件DFS,DFS是一套虚拟文件系统(类似Linux的VFS,但几乎不占 ...…

查看全部问答>

有关2812的资料其寄存器都没有地址,谁那有?

有关2812的资料其寄存器都没有地址,所见的都是C语言的头文件,用了结构体和共用体,找不出起物理地址了,想用一段汇编,找不到外设和寄存器的地址,没法编那.谁有这方面的资料?或给指点一下…

查看全部问答>