手电大家谈-手电筒爱好者之家

 找回密码
 注册成为会员,享受更多功能。

QQ登录

只需一步,快速开始

只需一步,快速开始

搜索
查看: 2775|回复: 9

[工具] 【原创】做个隔离ADC采集器监视铁锂充电

[复制链接]
  • TA的每日心情
    无聊
    2014-6-15 08:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-3-24 20:10 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有账号?注册成为会员,享受更多功能。

    x
    我在之前的一片帖子中,折腾过磷酸铁锂的均衡器(被动式充电末端均衡):
    http://www.shoudian.org/forum.php?mod=viewthread&tid=1506689

    但是充电过程究竟怎样心里还是没底。索性用 Arduino 做一套电压采样器,这样就可以知道充电曲线了。
    由于充电电源、监视电脑之间可能存在 GND 电位差异,这干脆做成隔离式采集,共模电压随便搞。
    实际可采集差模电压范围就是78M05工作范围:7~40V,带反接保护。

    整个隔离 ADC 采集器做成 Arduino 扩展板的形态,直接用 Proteus 画的 PCB,原理图都懒得搞:
    IMG0.PNG

    JLC 五块打样,选个红色代表高功率警示:
    IMG1.JPG

    焊接过程从低到高,使用 ATTINY13 作ADC+主控,两片 817 光耦用作数据链路隔离:
    IMG2.JPG

    IMG3.JPG

    最后灌入 T13 的程序,就可以配合 UNO 基板工作了:
    IMG4.JPG


    至此获得了一块隔离ADC采集器,直接挂在 6S 充电回路上(装有之前设计的均衡器):
    IMG5.JPG

    最后终于获得了 1P6S 磷酸铁锂的充电曲线(我的均衡器设定 3.5V 截止),
    电池充满前电压-时间曲线出现了若干阶梯台,说明末端均衡器逐个通道开启,工作正常。
    IMGX.PNG

    -----------------------------------------------------------------------------------------------------------

    最后附上核心的通信代码(光耦隔离通信),是 URX/UTX 两根线的同步通信。

    ATTINY13端(Slave):
    1. void OptSlaveSend(WORD dat)
    2. {
    3.     // 执行隔离通信从机发送: MSB, ..., LSB, P, N (, H, H,...)
    4.     BYTE i, chk=0x2;        // chk.b1/b0= N/P
    5.     OPTO_URX(CLR);
    6.     OPTO_URX(DRO);
    7.    
    8.     // 依次发送数据
    9.     for(i=0; i<16; i++)
    10.     {
    11.         if(!OptWaitClock())
    12.         {
    13.             OPTO_URX(SET);
    14.             return;
    15.         }
    16.         if(dat&BIT(15))
    17.         {
    18.             OPTO_URX(SET);
    19.             chk= ~chk;      // EOR Operate
    20.         }
    21.         else
    22.         {
    23.             OPTO_URX(CLR);
    24.             NOP();          // to balance EOR
    25.         }
    26.         dat<<= 1;
    27.     }
    28.    
    29.     // 发送校验位
    30.     for(i=0; i<2; i++)
    31.     {
    32.         if(!OptWaitClock())
    33.         {
    34.             OPTO_URX(SET);
    35.             return;
    36.         }
    37.         if(chk&BIT(0))
    38.         {
    39.             OPTO_URX(SET);
    40.         }
    41.         else
    42.         {
    43.             OPTO_URX(CLR);
    44.         }
    45.         chk>>=1;
    46.     }
    47.    
    48.     // 等待最终超时复位
    49.     while(OptWaitClock())
    50.     {
    51.         OPTO_URX(SET);      // 多余数据为补H
    52.     }
    53.     OPTO_URX(SET);
    54. }
    复制代码


    UNO端(Master):
    1. uint16_t OptoSample(bool *pOK= NULL)
    2. {
    3.     // Query OptoADC Shield, Read 16bit Data
    4.     // pOK: Receive Checksum if not NULL
    5.     uint16_t dat= 0;
    6.     uint8_t  chk= 0x2, tmp= 0;
    7.     // #1: Query & Wait
    8.     PULSE_UTX();                        // Query
    9.     uint32_t tov= millis()+1000;        // Overflow Time
    10.     while(digitalRead(URX))
    11.     {
    12.         if(millis()>=tov)
    13.         {
    14.             // Time overflow: Error
    15.             if(pOK) *pOK= 0;
    16.             return 0;
    17.         }
    18.     }
    19.     delay(3);                           // to fit Low-Speed T13
    20.     // #2: Read Data & Checksum
    21.     for(uint8_t i=0; i<16; i++)
    22.     {
    23.         PULSE_UTX();                    // Clock
    24.         dat<<= 1;
    25.         if(digitalRead(URX))
    26.         {
    27.             dat|= 0x1;
    28.             chk^= 0x3;                  // P,N: Toggle
    29.         }
    30.     }
    31.     PULSE_UTX();
    32.     tmp|= digitalRead(URX)? 0x1:0x0;    // Chk-P
    33.     PULSE_UTX();
    34.     tmp|= digitalRead(URX)? 0x2:0x0;    // Chk-N
    35.     // #3: Do Checksum if necessary
    36.     if(pOK)
    37.     {
    38.         *pOK= chk==tmp? 1:0;
    39.     }
    40.     return dat;
    41. }
    复制代码


    PC上位机我就不贴了,接收个串口存数据(比助手多个电压换算+显示)。

    -----------------------------------------------------------------------------------------------------------

    所谓生命在于折腾,本来这事用我的带 USB 万用表也行,做个扩展板验证下 T13 隔离采样的可行性。

    最后祝大家身体健康,折腾愉快!


    回复 dsu_marcocopyright:copyright

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-26 08:47
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2020-3-24 20:16 | 显示全部楼层
    还以为是6节都独立测量呢

    点评

    78M05 拆掉,板子多焊几块堆叠起来就可以独立测量了。 板子设计时就是堆叠结构,单个UNO底座可以插N层,不过软件得更复杂些,要加入通道寻址。  详情 回复 发表于 2020-3-24 20:23
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2014-6-15 08:04
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-3-24 20:23 | 显示全部楼层
    L555T_007 发表于 2020-3-24 20:16
    还以为是6节都独立测量呢

    78M05 拆掉,板子多焊几块堆叠起来就可以独立测量了。

    板子设计时就是堆叠结构,单个UNO底座可以插N层,不过软件得更复杂些,要加入通道寻址。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-10-10 03:09
  • 签到天数: 1283 天

    [LV.10]以坛为家III

    发表于 2020-3-24 20:43 来自手机 | 显示全部楼层
    厉害厉害厉害厉害
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-2-12 18:07
  • 签到天数: 395 天

    [LV.9]以坛为家II

    发表于 2020-3-24 22:18 | 显示全部楼层
    佩服大佬超强的技艺~
    回复

    使用道具 举报

    该用户从未签到

    发表于 2020-3-25 09:09 | 显示全部楼层
    顶技术贴!
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-6-17 14:53
  • 签到天数: 96 天

    [LV.6]常住居民II

    发表于 2020-3-25 10:11 | 显示全部楼层
    给你看下这个老外也在开发的你可以参考国外正在众筹的,每节的温度电流容量都能实时显示在软件上
    101153wtbzwphhhw47bqyv.jpg
    101153cs7z9tcn8s6ccu9y.jpg

    点评

    目测也是每路一套隔离 ADC,有好方案推荐不?  详情 回复 发表于 2020-3-25 10:23
    来自安卓客户端来自安卓客户端
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2014-6-15 08:04
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-3-25 10:23 | 显示全部楼层
    wang737 发表于 2020-3-25 10:11
    给你看下这个老外也在开发的你可以参考国外正在众筹的,每节的温度电流容量都能实时显示在软件上

    目测也是每路一套隔离 ADC,有好方案推荐不?
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2021-12-16 17:40
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2020-3-25 12:06 | 显示全部楼层
    BQ7693003DBTR不香吗

    点评

    香,产品必备  详情 回复 发表于 2020-3-26 12:42
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2014-6-15 08:04
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-3-26 12:42 | 显示全部楼层
    modelmy 发表于 2020-3-25 12:06
    BQ7693003DBTR不香吗

    香,产品必备
    回复

    使用道具 举报

    本版积分规则

    小黑屋|手机版|Archiver|论坛自带搜索|下载论坛app|手电大家谈-手电筒爱好者之家 ( 备案序号:鲁ICP备05002565号 )
    以上言论纯属个人观点,与手电大家谈立场无关。
    最佳浏览模式:1920*1080


    GMT+8, 2024-10-11 15:18 , Processed in 0.210668 second(s), 47 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表