公司最近要设计一款节能型水表,之所以称之为节能是因为水表的供电是通过采集器端的电池供电,这就需要在终端水表上的设计要简单明了,一款新产品的设计完成往往要牵扯的多个方面,特别是电子产品的设计上,在需求明白的情况下,除了研发上的软硬件设计外,还需要考虑到生产和维护方面的问题,需要跟各个部门的人员交流沟通,因此在充分的了解生产和维护的各个环节后,对目前的水表做了如下改进以配合节能:
1、电源部分,去掉TSS721通信芯片,由外部直接提供5V电源,表具上通过LDO稳压到3.3V提供给单片机,当然还是需要一个桥堆来提供无极性保护和二极管来防止回流。
(图1)
2、传输部分:做了最大化的精减,表具一上电就主动上报水量,数据的传输仅仅通过电源线采用电流调制的方式进行传输,采用要发送的数据来控制恒流源的打开和关闭,为了起到节能和电流调制的作用,在不传输数据的时候恒流源应该关闭,这就要求数据在传输上采用其反码来传输,即将要发送的数据按位取反,然后去控制恒流源的打开和关闭。考虑到编程的方便,恒流源的控制用串口的发送引脚来控制,而串口发送脚平时输出高电平,因此设计了一个三极管用于将Txd引脚信号反向,这样就起到节能和控制作用。
(图2)
(图3)
如果采用GPIO+定时器的方式来实现串口发送,则可以在硬件上节约一个三极管和几个电阻,如上图所示。
上面的电路在调试的过程中发现的问题是在采集器端取样电阻上用示波器抓取波形,发现不是方波,在电压上升的过程中是缓慢的上升的,表现为电容充电的特性,如图4所示,为了解决这个问题,做了多种调试方案,首先想到的是修改恒流源,先做了一个最基本的调试,就是只用一个NPN型的三极管,B极通过10K电阻连接到控制端,C极通过470欧电阻连接到5V,E极接地,通过测试波形发现是方波,这就说明应该是恒流源设计上存在问题。
(图4)
分析图3的恒流源,怀疑可能是由于控制端引起的,由于P0.2在不停的开关,相当于恒流源在不停的建立动态平衡,因此应该做修改,对图3的电路做了修改,如图5所示,3.3v的上拉可以采用gpio管脚控制,这样只有在传输数据的时候才打开恒流源,可以省电和增加传输的精度(也可以用图6的方式)。
(图5)
(图6)
图5的电路,在波形上有一定改善,但没有根本改变,因此又做了一定分析后觉得可能是在关闭恒流源的时候仍然有总线电流消耗,决定尝试在总线上加一个稳压管,也就是5v后接一个电阻,电阻后接一个3.9v的稳压管,稳压管一段接地,这样的连接方式后虽然波形变为方波了,但是光电管的采样电流没有了,显然是受到了稳压管的影响,把稳压管去掉后(串联的电阻没有去掉)再测试发现变为方波了,而且有采样电流了,最终电路修改为如下图7形式: (图7) 477欧电阻的选择是在调试的过程中发现,如果选择200欧左右传输波形变形比较严重,不是方波,而如果选择电阻过大,就会对后端3.3v的单片机电源有影响,在传输消耗大电流的时候单片机电源被拉夸,而采用两个并联的二极管也是考虑到对单片机电源的影响。因为前面的整流桥加上一个二极管相当于3个二极管,就消耗了接近1.8v的电压。最终修改电路如图8所示,上面的通道是传输波形,下面的通道测试单片机电源,可以看到单片机电源基本可以在3v以上。
(图8)
3、为了方便生产和维护,将单片机的串口留出来,同时在设计上预设计了一个晶振用于提供精确的时钟,这样在传输的时候在软件设计上可以通过串口来控制数据的传输,使传输的波特率更准确以及简化编程。
(图9)
4、调试过程中遇到的问题
调试过程中遇到的主要问题是恒流源的大小,究竟多大比较合适,这就需要调试R602电阻的阻值来控制,并且要参考采集器端电流采集电阻的值,目前系统中R602电阻阻值为51欧姆的时候测试结果比较理想。另外还发现一个问题,是在发送数据的时候,如果漏发了结尾字节0x16,采集器端由于没有收到0x16就会在串口中断程序中一直接收数据,直到接收的数据超过一定长度才退出中断。这就可能导致采集器看门狗复位,在示波器上可以看到12V电压在瞬间被拉低,然后恢复,表现为一个尖的脉冲。
5、对上面问题后续深入理解
虽然现在采用图7的电路没有什么问题,但总感觉图1和图3的电路也应该没有什么问题,对在图7中的电阻R101的作用也没有弄清楚。现在通过multisim对上面的电路进行仔细分析,分析如下:
(图10)
R7上的电流消耗仿真结果如下,可以看到波形很好,电容C1上的电压变化较小,比较平稳。
(图11)
将R1阻值修改为1欧,这时电路设计接近(图1),仿真波形如下:
(图12)
这个波形跟图4仿真器抓取的波形比较类似,分析原因可能是由于在电流调制的时候采集器端采样电阻生产生压降,电容C1上的电压高于总线电源进行放电,由于电容的容值(10uf)较大,而R1阻值较小,因此放电很快,波形表现为比较陡峭,而将R1的阻值取到330欧,C1放电就很慢,采样电阻上的波形就表现为方波。
理解了这个原理后,可以将电容的容值取0.1uf,而去掉R1电阻,完全为(图1)的电路,这时仿真波形如下:
(图13)
通过这个波形可以看出,采集器端采样电阻上的波形还是比较好的,C1上电压的变化跟采样电阻上一致,不像图11那么平滑,这是由于电容变小了的原因。
将恒流源修改为(图3)所示的电路,仿真电路如下:
(图14)
仿真波形如下:
(图15)
跟图11的波形差不多,这说明图3的恒流源设计没有问题。
6、进一步理解
图7的电路可以从RC滤波电路的原理上进行解释,当以2400的波特率进行电流调制传输数据时,从抓取的波形上看,在总线上产生2400频率小幅度变化的电压,R1和C1组成一个低频滤波器,放电时间常数=R1*C1=3.3ms,大于脉冲电压宽度2400/1000/2=1.2ms,即RC电路放电时间大于充电时间,但由于R1和C1中间加了BAT54C进行隔离,在总线电压下降的时候C1并不对R1进行放电。根据RC滤波电路原理,C1固定的时候,R1越大,R1与C1组成的分压电路中R1上的交流压降就越大,滤波效果越好,但R1不能太大,否则R1上的直流分压很大,后端的负载分得的电压就比较小,对整个电路就有影响。反之,R1的阻值太小,比如1欧姆,那么RC电路的时间常数就很小,在C1较大的情况下充电时间很短,不能充分的充电,表现为图12的波形。
也可以从RC积分电路的角度来分析,参见我的博客文章积分和微分电路分析及仿真--->一个可以举一反三的分析方法 。BAT54C的作用还是很大的,防止了电容在总线电压下降的时候通过R1电阻对总线放电而干扰正常发送的数据。