1、采用tps61175 dc-dc升压芯片取代了传统的体积庞大的开关电源,这样mbus接口就没有负电源了,整个系统也没有负电源,只要一个参考地,方便了系统调试,并且极大的简化了Mbus通道控制电路。
2、增加了lora无线模块。
3、tps61175启动电流太大,导致arm板不能启动,在ldo输出3.3v处加了1.5F的超级电容可以启动arm板,但是用电脑usb接口供电的时候仍然不能启动,用电源适配器的时候可以启动。
4、在电路设计上进一步改进,使用一个npn三级管+p沟道mos管来控制tps61175的5v输入,这样在上电的时候tps61175是不工作的,经过测试时可行的,而且在ldo的3.3v输出地方也不用加超级电容。
5、超级电容1.5F容量在测试其两个引脚的时候表现出短路,刚开始怀疑是电容坏了,这其实是超级电容的特性,焊接到板子上就没有这种现象,而且能正常使用。对于电池供电设备而言,最关心电容的指标是其漏电流。
6、PCB布线的时候,地线不用向以前那样全部连接起来,可以在后面铺铜的时候用各种过孔来将地全部连接起来。
7、在调试第4步的电路过程中发现mos管5v的输出没有完全控制住,在上电的时候总有电压输出,经过分析发现时三极管的b级没完全控制住,按照电路设计在上电启动的时候b级应该被下拉电阻拉到0v,但实际测试的时候发现b级电压在跳变,因此导致mos管有电压输出,从而使tps61175处于工作状态。我将10k的下拉电阻换为200欧姆就可以了,看来下拉电阻的选择还是很重要的。
8、最终找到了电路设计上的错误,两个地方做修改:tps611zuo75的en引脚用10k电阻下拉;升压后18v接mbus总线要用1n4007二极管做隔离。
参考电路:
9、关于短路保护部分电路,由于采用了tps61175作为mbus电源,根据其输出电流和转换效率图,可以看出输出电压越高,转换效率越低,输出电流能力越小。所以以前的500ma的短路保护电路不能起作用,这里设定300ma的短路电流,因此将短路电阻由之前的3.3欧1w修改为10欧1w,这样短路保护电路能够正常工作。
10、比较器lm2903在比较端在Mbus总线电压由18V跳变到30V的过程中,比较输出端会发生电压跳变,也就是原本应该输出为高,现在输出为低电平,这个问题一直困扰了我好几天的时间,最后在唐工的帮助下解决了问题,原因可能是输入电压高于了lm2903的电源电压,需要用分压电路将mbus总线上的电压进行分压后在输入到lm2903中进行电压比较。最开始的时候我用10k和20K的电阻串联进行分压,将20K电阻上的电压输入lm2903中进行比较发现返回的数据经常报crc错误,这说明lm2903的识别误差较大,然后我用5K和20K电阻串联进行分压后将20K电阻上的电压输入lm2903中进行比较,这个配置就没有报crc错误了,主要是加大了lm2903的输入电压。
11、在进行读水量的时候发现用0XFF广播地址能够读出水量,但用序列号读水量不能读取,觉得很奇怪,就用示波器抓取了波形,发现在通过电压调试下发数据的时候数据并没有发送全,有几个bit没有发送出去,是因为进入了mbus总线接收模式后将mbus电压调制模式关闭了。通过修改程序在由mbus发送模式转换到mbus接收模式的时候加了几个毫秒的延时就可以了。
这张图就是电压调制被提前关闭,可以看到第二行最后几个的波形变化没有影响到第一行。
这张图就是正常的电压调制
11、由于在增加了tps61175后上电瞬间电流较大,对ldo输出的3.3v电源有一个下拉,还是存在影响核心板,导致核心板复位的情况;后续的测试中我将tps61175的en端用10k的上拉电阻连接到5v输入电压上,后端再通gpio管脚来进行mbus通道的电源打开和切换。并且在ldo的输入和输出端加了100uf的电容。后续有时间可以好好考虑下电源的设计,准备用12v输入电源。
12、在进行测试的过程中发现都回来的数据如果是0比较多的情况,比如都水量数据,数据包中的许多数据都是0,在电流调制的时候通过比较器读出来的数据存在错误,就是将0识别为其他数据;通过分析,是建立基准比较点的电容放电后得不得补充从而在电流调制的时候如果多个连续的0就会导致比较器的同向输入端电压大于反向输入端,导致比较器输出高电平,也就是将原本为0比特识别为1比特。后面将基准比较电容并联的放电电阻加大到20M就可以了,之前是10M,我直接用两个10M串联为20M。