fszhang 发表于 2021-2-5 21:03:16

最近给自己的树莓派4做了一个UPS

本帖最后由 fszhang 于 2021-2-5 21:06 编辑

最近公司项目需要我制作一个测试系统,但大家反映又不想带电脑,于是我使用自己的树莓派4制作了一个UI,使用4节18650供电。
制作这个UPS一个是原因是不想直接断电来关机,二是树莓派是没有RTC的。如果做测试,需要准确的时间来储存数据的。
底板使用了一个锂电池充电芯片,充电电流800mA左右,MCU使用MSP430,采集电池电压,提供时钟。关机电流60uA左右。
工作时升压模块将电池电压升为5V给树莓派和测试板供电。
开机后,树莓派会从430读取时间和其他电池信息。


关机时充电也会唤醒MCU,显示充电指示灯。


开机后把树莓派的一个引脚置高,关机后这个引脚会变低电平,MCU会通过这个来判断是否关机,延时一段时间后再关闭电源。
当然不会直接引脚判断这么简单,树莓派也会向MCU写入关机数据的。

现在使用3D Builder来做前期工作方便很多。

B站视频







tim 发表于 2021-2-5 21:11:32

能让树莓派开机工作多久?

fszhang 发表于 2021-2-5 21:16:21

tim 发表于 2021-2-5 21:11
能让树莓派开机工作多久?

只带派8个小时,基本上上班一天。带测试板的话时间会短一点,测试板5V100mA, 派在700左右。

fszhang 发表于 2021-2-5 21:46:30

本帖最后由 fszhang 于 2021-2-5 21:47 编辑

MSP430做从机有一个坑。就是一个通常的读操作需要先写入一个地址,再读取数据。官方例程只有单独写与单独读的。
树莓派QT的库里面只有写REG, 8/16bit,读REG, 8/16bit, 我需要MCU里面在第二个起始信号时由接收切换为发送数据。
我使用的F5342这个芯片读与写操作是由MCU内部自己处理的,100K的速度下,读写切换速度不够,数据经常错误。

我的解决办法是,正常写REG数据时,地址在0x80以内,如果地址是大于0x80,下一次I2C操作是读, 读的地址是写入的数据。

树莓派上写数据是: WriteReg8bit(fd, Reg, Data)
读数据:WriteReg8bit(fd, 0x80, Reg), Delay(), Read(fd) 最后一次读数据不带任何地址。




饭桶 发表于 2021-2-5 22:02:28

买个交流充电的充电宝就行了,多简单点事儿。

fszhang 发表于 2021-2-5 22:07:19

饭桶 发表于 2021-2-5 22:02
买个交流充电的充电宝就行了,多简单点事儿。

RTC怎么解决?充电宝不还是拖线?

lwy86 发表于 2021-2-5 23:11:07

fszhang 发表于 2021-2-5 22:07
RTC怎么解决?充电宝不还是拖线?

不可以加个RTC芯片在I2C总线吗?开机就可以自动更新时间了。

wye11083 发表于 2021-2-5 23:33:24

fszhang 发表于 2021-2-5 21:46
MSP430做从机有一个坑。就是一个通常的读操作需要先写入一个地址,再读取数据。官方例程只有单独写与单独读 ...

不明白你到底在说什么。iic协议规定读操作就是要先写寄存器地址,然后重启,读数据啊。很多设备都是这样的啊。这不是坑,这是时序要求严格。

fszhang 发表于 2021-2-5 23:47:46

wye11083 发表于 2021-2-5 23:33
不明白你到底在说什么。iic协议规定读操作就是要先写寄存器地址,然后重启,读数据啊。很多设备都是这样 ...

你调试过430的从机I2C吗?我也没怪正常的读操作协议啊,只是说430在重启时由接收到发送状态转换不够

fszhang 发表于 2021-2-5 23:51:33

lwy86 发表于 2021-2-5 23:11
不可以加个RTC芯片在I2C总线吗?开机就可以自动更新时间了。

那不还是要加板子了?

lwy86 发表于 2021-2-6 00:07:06

不是引了I2C总线到你的UPS吗,没有一起加上去吗?

wye11083 发表于 2021-2-6 00:13:36

fszhang 发表于 2021-2-5 23:47
你调试过430的从机I2C吗?我也没怪正常的读操作协议啊,只是说430在重启时由接收到发送状态转换不够 ...

没用过430,搞过fpga模拟iic device,调信号滤波器花了不少时间,反复了几次。一般从机应该在发完最后一个ack时进入输出模式,难道430还要等一会儿才会出数据?看看scl是不是被拉低了,虽说大多数外设都不支持scl stretch,但是我碰到过一款tdk的超声测距芯片,我的固件做不了scl stretch,不兼容。。

lwy86 发表于 2021-2-6 10:26:59

电池供电的PI 不现实

rei1984 发表于 2021-2-6 10:47:37

lzqt5 在pi直接开发吗?还是在 pc上 开发后,在放到pi上跑?希望lz 指点一二

fszhang 发表于 2021-2-6 11:20:09

rei1984 发表于 2021-2-6 10:47
lzqt5 在pi直接开发吗?还是在 pc上 开发后,在放到pi上跑?希望lz 指点一二 ...

直接安装开发,调试,生成的应用直接运行

fszhang 发表于 2021-2-6 11:24:03

wye11083 发表于 2021-2-6 00:13
没用过430,搞过fpga模拟iic device,调信号滤波器花了不少时间,反复了几次。一般从机应该在发完最后一 ...

这款型号的MCU的应答都是自动完成的,树莓派在第二次启动时非常快,430有时候来不及切换模式,发不了数据,导致派收不到数据

fszhang 发表于 2021-2-6 11:28:21

rei1984 发表于 2021-2-6 10:47
lzqt5 在pi直接开发吗?还是在 pc上 开发后,在放到pi上跑?希望lz 指点一二 ...

我用QT是因为找不到在派上运行的VS chart,C++也算是和C#最像的语言了,之前用Python做过一次界面,实在受不了那个语言。QT上面的Chart也挺漂亮的。

rei1984 发表于 2021-2-6 11:40:19

fszhang 发表于 2021-2-6 11:28
我用QT是因为找不到在派上运行的VS chart,C++也算是和C#最像的语言了,之前用Python做过一次界面,实在 ...

树莓派做 qt 开发。 是用 pyqt还是qt c++ 版本?有没有什么入门的资料。之前我也是用tk 来做界面,太没有美感了

fszhang 发表于 2021-2-6 12:10:50

rei1984 发表于 2021-2-6 11:40
树莓派做 qt 开发。 是用 pyqt还是qt c++ 版本?有没有什么入门的资料。之前我也是用tk 来做界 ...

听说有很多方法,我是直接安装的QT creator,没有教程,界面是直接拉出来的,和C#不同的是,QT有个信号和槽的概念,然后调到哪里不会的就去网上找,改一改。可以先看看正点和微雪的教程,熟悉一下基本的

rei1984 发表于 2021-2-6 12:31:46

fszhang 发表于 2021-2-6 12:10
听说有很多方法,我是直接安装的QT creator,没有教程,界面是直接拉出来的,和C#不同的是,QT有个信号和 ...

好的,谢谢

solojimes 发表于 2021-2-7 01:42:00

能不能开源个原理图参考一下??

fszhang 发表于 2021-2-7 11:50:54

solojimes 发表于 2021-2-7 01:42
能不能开源个原理图参考一下??

这个是公司项目,开源不行。其实这个东西重点是软件,硬件很简单。关键点: 430使用一个32768晶振接到XT1,不断电跑RTC,主时钟使用内部的,一路I2C从机, ADC采电池,5V电压,几路管子开关供电。难点是很多状态机处理。还有就是树莓派断电时,MCU进入LPM3模式。要处理好单片机复位时各端口的状态会不会引起其他电路的耗电。我这个电路里还使用了淘宝买的一个升压模块,5V3A。
页: [1]
查看完整版本: 最近给自己的树莓派4做了一个UPS