Tira 发表于 2017-9-5 18:15

明天有空我会扒一下风扇控制电路。这个比较简单,随便看了下,好像使用了PMos来控制的

Tira 发表于 2017-9-7 12:10

这两天打算做一块PCB板子,用mega328P做mcu。 用来调试这块光耦选择采集电压电流的电路。看看读取电压电流是否正常。

yjy4420 发表于 2017-11-6 00:27

关于光耦,工作在是否饱和状态下,翻转的时间是不同的,这点会影响放电的精度。我有个帖子专门讨论过这个问题,可惜不在这个坛子里http://www.shoudian.org//mobcent//app/data/phiz/default/00.png

Tira 发表于 2017-11-17 12:09

yjy4420 发表于 2017-11-6 00:27
关于光耦,工作在是否饱和状态下,翻转的时间是不同的,这点会影响放电的精度。我有个帖子专门讨论过这个问 ...

辛苦大神了。我是看您的帖子才有所头绪的。要不我都不知道该怎么搞

Tira 发表于 2017-11-17 12:17

消失了几个月。
这几个月给捉去做其他项目了。今天才有空重新搞A6充电器。

LM358电流电压检测的部分电路发现了很多问题。电路图也是经过修改了的。
话不多说,切入正题。
来说说LM358放大电路的新发现。

Tira 发表于 2017-11-17 12:29

先来看看新的电路图和电路板:
1.新的采样部分电路图(光耦及采样电阻部分)



2.LM358采样放大电路板


3.合体电路板(LM358电路板 + Discharge电路板)

两个板子之间是通过串口来通信的。


Tira 发表于 2017-11-17 14:40

我们首先来分析一下他的光耦部分。

BAT+ 为一组电池中,电势位最高的地方。
1.如果要检测 BAT+ 与 BAT1 之间电芯的电压:
    a.打开U_L3光耦(把电芯中低电势的一方与检测电路的地相连接)
    b.打开U_L2光耦(把电芯中高电势的一方与LM358的电压检测电路相连接)
    这样就可以检测到 BAT+ 与 BAT1 之间电芯的电压了(红色点 1)。同理,后面的电芯也可以用相同的方式,打开对应的光耦进行电压的检测

2.如果要检测流过 BAT+ 与 BAT1 之间电芯的电流大小。
    a.打开U_L3光耦(把电芯中低电势的一方与检测电路的地相连接)
    b.打开U_L4光耦(R_C1采样电阻的电压与LM358的电压检测电路相连接)

    这样就可以检测到流经 BAT+ 与 BAT1 之间电芯的电流了(红色点 2)。同理,后面的电芯也可以用相同的方式,打开对应的光耦进行电流的检测
    注意:
    a.R_C1右边不仅仅和U_L2光耦相连接,它其实还经过一个MOS管连接充电电路。这颗采样电阻是串联在充电电路中的。所以我们可以采集到充电电流
    b.由于放电电路与这颗采样电路是处于一个并联的状态。所以,其实A6并不能检测到电池的放电电流到底是有多大。

Tira 发表于 2017-11-20 10:36


上图是LM358的其中一个放大器,主要作用就是用于电流检测。
电路分析:
   ∵虚短
   ∴V- = V+
又∵R_L4电阻仅仅做限流电阻的作用。
   ∴V+ = Vin
又∵虚断
   ∴放大器的正负输入端几乎没有电流的流入或者流出。
   ∴电流走向从放大器的输出端口流过R_L6再流过R_L7
   ∴i = V- / (R_L7)
   ∴Va1 = i * (R_L7 + R_L6) = Vin + 20Vin = 21Vin

所以可以看到,这个部分的电路将输入电压放大了21倍。
但是由于供电(12V给LM358供电)限制,最大电压也是不可能超过12V的。
实测最大也就在5.7V左右就上不去了(庆幸没有烧了单片机),这里我也是有点迷惑的,实测的数据和仿真的数据相差甚远。

Tira 发表于 2017-11-20 10:50


上图是LM358的其中一个放大器,主要作用就是用于电压检测。
电路分析:
   ∵虚短
   ∴V- = V+
又∵V+ = Vin
   ∴V- = Vin
又∵虚断
   ∴放大器的正负输入端几乎没有电流的流入或者流出。
   ∴电流走向从放大器的输出端口流过R_L2再流过R_L3
   ∴i = V- / (R_L2 + R_L3)
   ∴Va1 = i * R_L3 = 1/3 (Vin)



此部分电路将输入电压降低了3倍,具体原因我还是不太了解为啥。
但是开关光耦出现问题的话,就非常有可能将单片机烧了。这点要非常的小心。
毕竟25.4V取1/3也有8.688V。单片机的IO口很有可能没法承受那么高的电压。

Tira 发表于 2017-11-20 12:11

这里需要注意的是,我使用的单片机是 mega328p (arm)主要是贪图方便才使用的(因为stm32忘的差不多了)。
以后新的电压电流检测板最好还是要使用 stm32 单片机。
从以下几组数据就知道为什么了!

4.02V输入电压实测得数据:


3.92V电压实测得数据:


问题总结:
1.电流检测部分已经爆表了,超过5V了。
2.电压检测数据漂移太大。

an.问题1在上面电路分析中已经阐述过原因了。

an.问题2主要问题有2点。
1.mega328p ADC采样精度仅仅只有10位,一般的stm32单片机都是 12位。多两位的精度,可以使数据漂移减少不少。
2.单片机将5V分成了1024份。那么每份应该对应的是 0.00488V。看起来是挺精准的,但是由于电压在经过放大器后缩小了3倍。在此基础上乘上个3得到 0.0146484。这个精度明显不符合需求。而12位的stm32 则可以达到 0.0036621。所以最少都要选取一个12位ADC采样的单片机来进行ADC采样。

Tira 发表于 2018-2-28 16:16

首先我先纠正一下我在50楼的一个错误。
STM32的供电电压以及ADC采样的基准电压为3.3V。所以在之前楼层所给出的采样进度不对。正确的采样精度计算应该为3.3V / 4096 * 3 = 0.00241699

各位论坛的朋友们好。消失了3个月。期间做了很多其他的产品。但是并充的实验我没有停下来。
初始的单通道测试板子已近打样完成到手进行了测试。效果还行。
接下来的几天我会和论坛的朋友们,详细的解释和探讨A6充电器的充电部分的电路以及他的原理。

Tira 发表于 2018-2-28 16:26


上图是这次测试使用的板子。

阿甲 发表于 2018-2-28 20:38

俺跟踪下这贴

Tira 发表于 2018-3-2 10:26

这次测试使用的板子包含4大部分,我会抽出其中的几个来详细的讲解。
1.Power_Protect   (电源防反接保护电路)
2.TL494C                (它激推挽逆变电路)
3.LM358_Detection(LM358电压电流检测电路)
4.STM32C8T6          (STM32单片机最小系统电路)

Tira 发表于 2018-3-2 10:44

1.Power_Protect
首先从最简单的电源保护电路说起。主要器件:
a.TPCA8030-H (N沟道Mos管)

如上图电路,为A6充电器方案中使用的防反接的电路方案。
a.当正常连接电源的时候(+Vin -- +12V , -Vin --GND),Mos管导通,电路的GND能与电源的GND连接。则形成了通路。
b.当反接电源的时候(+Vin -- GND , -Vin --+12V),Mos管无法被导通,则无法形成通路。
其中的Mos的详细参数就不详细的说了,大家在很多datasheet网站可以找到并且下载来看。

Tira 发表于 2018-3-2 13:20

3.LM358_Detection
我们这里先跳过TL494的电路,先讲稍微简单点的 电压电流测试电路。
LM358_Detection电路的工作原理在之前的楼层中已经给出过详细的工作原理了。
这层楼主要对细节处进行处理,对这个电路的理解有很大的帮助,算是一次查漏补缺。
主要器件:
a.CT817C
b.LM358DR2G


在之前的楼层,我们做过详细的测试。
a.在不给锂电池充电的时候,检测锂电池的电压是十分的准确的。主要的误差影响是因为当初选用的单片机ADC采样精度不够造成的(仅仅只有10位)。
b.如果使用比较大的电流给锂电池充电的时候就需要注意了。在充电的时候是无法直接测量到准确的锂电池电芯电压的。

如上图所示,如果锂电池处于充电状态的时候,将U_L2以及U_L3光耦导通进行电压采样的时候,电流走向如图。
因为,如果要给锂电池充电,那么充电电路输出的电压必定要比锂电池电芯的电压高。两者压差除以通路的总电阻即是当前状态下的充电电流。
U压差 = U充电 - U锂电池
I充电 = U压差 / R总

由采样电路可知,充电状态下采样所得电压数据为充电电压(U充电),电流采样所得数据为(I充电)。
那么我们需要实时获得锂电池电芯的电压有以下两种做法。
b1.在固定的时间内断开充电,再进行锂电池电压的采样。
b2.通过计算,得出当前锂电池电芯电压。
我们需要计算得到的最重要的参数为 锂电池电芯的内阻(R电池)。
    在给锂电池充电之前需要首先测量当前锂电池的电压(U锂电池)。
    接着使用一个固定电流(I充电)给锂电池充电,测量恒流充电状态下的电压(U充电)
    由于CT817C的导通电阻很小,基本可以忽略不计所以可以得出以下公式
    R电池 = (U充电 - R采样*I充电 - U锂电池)/I充电
    则,在充电状态下,锂电池的电芯电压为:
    U锂电池 = U充电 - I充电*R电池 - I充电*R采样

还有一点需要注意的是,在使用单片机驱动光耦的时候,需要给些许延迟输送到LM358放大器的电压值才准确。因为开关器件是有阈值的,必须给一段时间电压才能稳定下来。这个时候读取的电压才是准确的。

Tira 发表于 2018-3-2 15:16

4.STM32C8T6
年前我说过 arduino 单片机的精度以及引脚个数不足以控制整个电路,所以必须更换单片机。
A6原始方案使用的是STM32030C8T6,这是由于此单片机便宜。但是,由于我没有用过030系列的STM32,所以我选用了我较为熟悉的STM32103C8T6来作为这个板子的控制芯片。
最小系统板的电路图直接在STM32官网上就可以直接找到。这里我就不再进行多余的描述了。
我的最小系统板原理图如下:

这里稍微提一下。
SWD口预留SWCLK,SWDIO。在芯片通电的情况下就可以通过ST-Link烧写程序了。
其他默认被J-TAG占用的引脚可以在映射中解除占用,这样就可以多几个引脚供我们使用了。

参考电压连接的3.3V电压可以使用专门的芯片。这样测得的电压会更加的精准。我自己的电路就直接使用MP2451DT来做降压供电以及参考电压的供电了。
如下图。考虑到长时间工作以及稳定性。我并没有使用LDO类型的线性稳压芯片来驱动单片机。但是,如果给参考电压供电,使用LDO也是可以的。

jzdapple 发表于 2019-1-14 20:42

Tira 发表于 2018-3-2 15:16
4.STM32C8T6
年前我说过 arduino 单片机的精度以及引脚个数不足以控制整个电路,所以必须更换单片机。
A6 ...

充电器做的怎么样了?有兴趣玩哈

cyradg 发表于 2019-1-17 09:41

楼主有最新版UNA6+的固件吗?

ymhdgh 发表于 2019-2-19 10:16

楼主做的很不错 属于干事情的人
加油
定期发下进度 我们过过瘾
页: 1 2 [3] 4
查看完整版本: 尝试自制独立平衡充记录帖