CaptDam's Blog

Top of page

DIY一个ROV——通信系统——物理层

这里主要介绍ROV的通讯系统的物理层。首先会介绍一下电路设计,然后会介绍实际上如何自作这个系统。 ROV上面所搭载的ATmega328P和操作台上面所搭载的STC89C52RC将会使用串口(UART)进行全双工通信。通过串口连接这两个系统,他们就可以相互传输数据。另外,为了方便操作者看清ROV周围的环境,这套通讯系统还会包含一路视频信号。 ROV作为一个遥控的水下探测器,当然是浅得越深越好。但是,深度增加的同时,通讯距离也增加了。 因为水对于无线电的频闭性能非常好,所以只能使用线控的方法。但是,有线控制也有很多问题。首先,电缆其实也是一条天线。在使用的过程中,电缆会收集环境中的噪音,对传输的信号造成干扰。电缆越长,干扰也越强。并且,电缆内部的信号自己也会产生EMI,干扰其它信号。 另外,在物理层,这套系统应该提供较小的延迟,因为这套系统将需要搭载实时信号。当然,成本也需要考虑,系统越简单越好。

Description: 这里主要介绍ROV的通讯系统的物理层。首先会介绍一下电路设计,然后会介绍实际上如何自作这个系统。 ROV上面所搭载的ATmega328P和操作台上面所搭载的STC89C52RC将会使用串口(UART)进行全双工通信。通过串口连接这两个系统,他们就可以相互传输数据。另外,为了方便操作者看清ROV周围的环境,这套通讯系统还会包含一路视频信号。 ROV作为一个遥控的水下探测器,当然是浅得越深越好。但是,深度增加的同时,通讯距离也增加了。 因为水对于无线电的频闭性能非常好,所以只能使用线控的方法。但是,有线控制也有很多问题。首先,电缆其实也是一条天线。在使用的过程中,电缆会收集环境中的噪音,对传输的信号造成干扰。电缆越长,干扰也越强。并且,电缆内部的信号自己也会产生EMI,干扰其它信号。 另外,在物理层,这套系统应该提供较小的延迟,因为这套系统将需要搭载实时信号。当然,成本也需要考虑,系统越简单越好。

Last Modify: 2019-06-10 07:14:47

First publish: 2019-05-28 13:08:42

🌍zh

关于

这里主要介绍ROV的通讯系统的物理层。首先会介绍一下电路设计,然后会介绍实际上如何自作这个系统。

ROV上面所搭载的ATmega328P和操作台上面所搭载的STC89C52RC将会使用串口(UART)进行全双工通信。通过串口连接这两个系统,他们就可以相互传输数据。另外,为了方便操作者看清ROV周围的环境,这套通讯系统还会包含一路视频信号。

在这篇文档里面,下列名词将会被使用:

- 控制信号:操作台发送给ROV的数字控制信号,包含对ROV的直接控制与自动驾驶程序的配置。

- 数据信号:ROV返回给控制台的数字数据信号,包括ROV的各种姿态参数。

- 视频信号:ROV携带的摄像头发送给操作台的显示器的模拟视频信号。

对于一个数据信号来说,它能产生的最高的方波频率是0.5*BAUD(一个逻辑高比特+一个逻辑低比特构成一个完整的循环)。但是为了保险起见,使用“1*BAUD”的算法。

设计要求

ROV作为一个遥控的水下探测器,当然是浅得越深越好。但是,深度增加的同时,通讯距离也增加了。

因为水对于无线电的频闭性能非常好,所以只能使用线控的方法。但是,有线控制也有很多问题。首先,电缆其实也是一条天线。在使用的过程中,电缆会收集环境中的噪音,对传输的信号造成干扰。电缆越长,干扰也越强。并且,电缆内部的信号自己也会产生EMI,干扰其它信号。

另外,在物理层,这套系统应该提供较小的延迟,因为这套系统将需要搭载实时信号。当然,成本也需要考虑,系统越简单越好。

设计

通信速率

通信速度越高,通信质量也就越差。所以,这里的通信速度应该略高于实际需求的通信速度。

通过分析软件:

1. ROV每0.25秒和操作台交换一次数据。

2. 假设交换数据前后需要0.1秒处理数据(准备数据,封包,拆包)。那么,每一次交换数据将会有150毫秒的窗口。

3. ROV与操作台每次交换10到20个byte,假定为20byte。

4. 每个byte包含1个起始位,8个数据位,1个停止位。

那么,(8 + 1 + 1) * 20 * (1/0.15) = 1333.33 BAUD

向上约到最接近的标准BAUD率,也就是2400。

高压差分信号传输(类RS-485)

ROV与操作台所搭载的的MCU(单片机/微控制器)都带有UART接口。一个典型的TTL电平UART将使用一根总线(单向)连接主机与一个或多个从机。主机将驱动该总线,从机为高阻抗,并监听该总线。当逻辑1时,主机拉高总线到5V;逻辑0时,主机拉低总线到0V。

但是,因为电缆的长度,噪音很有可能会强到可以改变电缆内部携带的信号的电平。举一个例子,当主机拉高总线时,一个-5V的噪音可以将电平改写为0;反之亦然。

Source: Wikipedia user upload image (by: Linear77, CC BY 3.0)

为了解决这个问题,可以使用差分信号。因为噪音会同时干扰电缆内部所有导线,所以该差分信号的正向与反向都会被干扰,但其差值却会保持不变。在接收端,接收器不关心正向与反向的实际电平,而是正向与反向的差。

举一个例子,主机目前为逻辑高。那么A线将会是5V,B线0V。在接收端,因为A线电压比B线高,所以接收端收到逻辑高:

Tx = 1;
A = 5V; B = 0V;
Rx = (A-B>0) ? 1 : 0 = 1

如果施加一个XV的噪音,X可以是一个任意正负数:

Tx = 1;
A' = 5V + X; B' = 0V + X;
A' - B' = (5V + X) - (0V + X) = 5V - 0V = A - B;

综上,使用差分信号可以消除噪音干扰。

因为电缆在传输信号的同时也会对ROV使用12V进行供电。所以,与其使用5V的TTL电压,这里可以将差分信号的电压提高到12V以增强抗干扰能力。

电路设计

差分电路系统设计分为3个部分:

- 正向放大器(Tx+):输入逻辑1(5V)时输出12V;输入逻辑0(0V)时输出0V。

- 反向放大器(Tx-):输入逻辑1(5V)时输出0V;输入逻辑0(0V)时输出12V。

- 接收端:如果Rx+比Rx-大,输出逻辑1(5V);反之,逻辑0(0V)。

因为通讯系统需要全双工工作,所以这套差分系统将会被制作两份。一份从ROV发送数据到操作台,一份从操作台发送数据到ROV。

设计这套系统有两种方法,可以用运放,也可以用NMOS。下面展示了两种设计与LTSpice的模拟结果。因为电缆非常长,所以使用50ohms的电阻和1nC的电容用于模拟电缆的阻抗。

方案1 - 集成运算放大器

在发送端,使用OP27与OP37分别作为反向与正向放大器;在接收端,使用OP27作为比较器。模拟结果显示,这个电路的延迟时5微秒。

方案二 - NMOS

和方法一相同,接收端使用一个运放作为比较器。但是在发送端,使用一个2N7002组成反向放大器;使用两个2N7002作为正向放大器。

根据模拟结果显示,使用NMOS的方案二拥有更低的延迟(1.5微秒)。另外,方案二需要跟少的电路元件。但是,使用方案二将会始终由一个MOS呈打开状态,也就是说这个电路将会一直消耗电能。提高电阻的阻值可以降低电能消耗,但是会降低响应速度。通过反复比较,方案二被采取了。

其实可以用CMOS的方式,但是我不太熟悉PMOS……

电路搭建

上图展示了如何测试这个通讯系统。首先,使用一个可调方波发生器作为信号源,将信号输出至发射器电路,用于模拟操作台发送控制信号给ROV。在另一端,短接控制信号线与数据信号线,这样同样的信号将会被直接送回(不经过ROV的接收器与发射器)操作台的接收器,这样就模拟出来了ROV发送数据信号给控制台。ROV到操作台的单向距离时10米。

数字信号(控制与数据信号)

上图展示了一个典型的通讯系统。图中,黄线表示发送的信号(Tx),绿线表示另一端接收到的信号(Rx)。

因为单片机的内阻,一块5V(TTL电平)单片机的输出电压不一定是0V和5V。在进行模拟时,使用实际电压(或是比实际电压更偏差的电压)非常重要。举一个例子,一张TTL电平单片机,在逻辑1时输出4.5V。如果一个MOS在4.8V时能够被打开,使用5V的测试电压将可以打开该MOS,但单片机实际产生的4.5V却无法打开。

在理想的情况下,通讯系统的输入(发射端Tx)与输出(接收端Rx)是不该有延迟的。但是,“理想的情况”就是“绝对不可能的环境”。实际上,因为电子元件的物理特性,肯定是会由延迟的。延迟是可以接受的,但是前提是,延迟在一定范围内。

因为供应的问题,2N7002和OP27都没找到,只能用2N7000和LM386代替。另外,电缆的实际阻抗和模拟时的阻抗也有不同,所以发射端的上拉电阻需要重新取值。实际上,测量电缆的阻抗并不容易,参考IC的参数与电路参数进行计算也并不是简单的工作。所以,这里将会使用枚举其实就是一个一个数的试,毫无技术可言的方式取得所需要的电阻阻值。

所幸找到的是LM386-N4,也就是耐压最高的那个版本。LM386正常耐压15V,N-4耐压22V。估计是学校实验室给做实验用的LM386经常被接错电源烧坏,于是干脆买了高压版。

首先,假设需要6k欧姆的电阻:

上图中,黄色表示输入的测试信号,绿色表示在probe1处测量到的信号。很明显,发射器的输出有延迟,并且这个延迟只出现在上升沿。这是因为电缆很长,可以被想象为一个电容。当拉高电缆时,因为有上拉电阻的存在,电阻将会对电容充电起到一个限流减速的作用。在拉低电缆是,因为没有电容只有一个MOS,而MOS导通时电阻可以忽略不计,所以下降沿就没有什么延迟。

观察这个波形,使用6k的上拉电阻会造成输入信号与电缆电压之间约5微秒延迟:

降低上拉电阻的阻值可以降低延迟。如果使用2k的上拉电阻,信号与电缆电压之间的延迟将降低到3.8微秒:

继续降低上拉电阻到1k,延迟降低到了3.1微秒。和2k的情况相比,1k的上拉电阻斌不能有效降低延迟,还会提高电路耗电量:

通过分析以上测量结果,决定使用2k作为上拉电阻阻值。下图显示了发送端(TestSignal)与接收端(probe3)的信号延迟.因为运算放大器的增益,所以在运算的输出上的信号的延迟会比电缆的延迟低一些:

使用这样的设计,该数字通讯电路电路将可以提供低于5us延迟的通讯条件,单向消耗电流约120mA。考虑其延迟与耗电量,这是一个不错的商榷。线图展示的是最终电路图:

该电路的延迟是5微秒(电缆处),看起来是个比较长的延迟。但是,考虑通讯使用的是2400BAUD。假设是一个2400Hz的方波,那么其波长将会达到417微秒,是电路延迟的80多倍。

视频信号

上面的实验展现了这个通讯系统传输数字信号的能力,下面的实验将会验证这个系统能够同时传输数值信号与模拟视频信号。

视频信号是模拟信号,会造成EMI干扰控制信号与数据信号这两个数字信号。但是,因为有差分信号系统,所以受到干扰的问题不大。同时,数字信号也会造成EMI干扰视频信号。视频信号没有进过差分传输,所以搜到的干扰会比较明显。

只要稍加分析,就能知道,视频信号的质量肯定会被两个数字信号严重干扰。但是,即使视频信号有严重干扰,操作员(人类的大脑可以主动排除干扰老司机甚至可以做到眼中有码心中无码,甚至还可以主动提高清晰度)还是可以在干扰下工作。实际上,在水下,因为周围环境比较昏暗,操作员将不会意识到视频质量的损失。再者,ROV所搭载的摄像头是用于辅助操控而不是用于拍摄引人入胜的热带珊瑚礁电影所用,因此对视频质量并没有要求。所以所,视频质量降低不会对这个ROV的使用造成太大影响。

上图展示的视频信号的测试结果。左上图为测试所用的场景。

其实视频质量比这里展示的好。这里展示的图片是使用手机对操作台的显示器频幕进行拍摄的结果,受环境光线干扰。实际上的颜色准确度比这里展示的准确度好不少。

右上角展示的是从ROV的摄像头通过10米长的电缆传输到操作台的视频信号。此时,电缆中的并没有数据信号与控制信号(数据信号线与控制信号线连接到12V DC)。可以看出,图像因为环境噪音失去了一些色彩。

因为软件将会使用2400BAUD的速率进行通信,所以向数字信号电路施加12V 2400Hz的方波信号来模拟这个状况。可以看见,数字信号的开关造成的EMI在视频画面上留下了一些小点。但是,操作员还是能几乎不搜干扰地使用视频。

虽然软件不会使用更高的频率,但是为了测试这套系统的极限,继续提高干扰信号的频率。在10k BAUD(使用12V 10kHz方波进行模拟)的时候,画面开始出现严重干扰。在1MHz时,视频信号基本就瞎狗眼无法使用了。

总的来说,这套系统还是能满足设计需求的。

实际上,视频信号的表现比我预想的好不少。

电缆制作

因为ROV时水下操作的,电缆的第一考虑当然是防水,特别是接头的地方。千里之堤溃于蚁穴,电缆接头与ROV外壳上电缆的穿口就是这个蚁穴。

第二要考虑的是,ROV可能随时罢工。这种情况下,ROV失去了动力,只能由操作员通过电缆将其拉回来。极端情况下,ROV可能被水草缠住,这就需要电缆需要能承受不小的拉力。

另外,因为电缆搭载供电与多路信号,这就需要线缆能提供一对供电线与至少无根数据线(一对携带控制信号,一对携带数据信号,一根携带视频信号)。如果信号线是带屏蔽的,并且是双绞线(差分信号)的话,就更好了。

为了满足这些要求,接头选用的是IP68级别的防水航空接头。如下图所示,该接头有7个引脚,每一个可以支持最大15A电流流过:

按照ROV的设计需求,应该选用IP69级别的插头。但是,找不到,所以就只有使用IP68的了。之后会进行改造提高防水能力。

这里使用的电缆本来是为电梯设计的,是特别为高拉力的环境设计的。如下图所示,该电缆有三个部分。首先,是一对高强度钢缆,用于承载拉力;其次,是一堆1平方(毫米)的电缆,用于对设备进行供电;最后,是四对双屏蔽的不同长度的双绞线,用于携带信号。

这套通信系统将需要一堆电源线,两对双绞线用于携带数据信号与控制信号,外加一条数据线用作视频信号线。因为该电缆中橙色与棕色双绞线长度差最大,将提供最小的EMI,所以这两对双绞线被分别用作数据信号线与控制信号线。下图接线表展示了电缆颜色,电缆作用与插头pin脚分配:

然而,这里的问题是,航空插头只支持圆形导线,但电梯电缆是扁平电缆。为了解决这个问标题,使用如下方法:

1 - 去除外部保护层,使用电工胶带缠绕内部电缆,并尽量将其包裹成圆形。

2 - 使用热缩管锁紧电缆,这样防止电工胶老化失效,也能让电缆表面更平滑更接近圆形。

3 - 根据接线表焊接电缆中电线至各自分配的pin脚。

4 - 锁紧航空插头。插头尾部的橡胶圈将紧紧包裹住电缆防止渗水。此外,为了防止热缩管头部空隙进水,可以使用锡箔胶带封死空隙。

5 - 为了更好的防水性能,将航空插头内部用玻璃硅胶填满。虽然这样的弊端是彻底封死插头,以后将不可能打开插头修改接线;但是,估计以后也不会有修改接线的需求一节电缆只要能够满足稳定且正确的连接两头以外,还能玩出什么花样来