
#第八届立创电赛#基于瑞萨单片机的电池内阻测试仪
简介
高耐压的电池內阻测试仪
简介:高耐压的电池內阻测试仪开源协议
:GPL 3.0
描述
* 1、项目功能介绍
电动汽车越来越多,维修保养生产需要测试电池的內阻,而高耐压的电池內阻测试仪价格较高,于是自己设计一个,可以测试400V的高压电池,借助瑞萨R7FA2E1A7单片机的高性能ADC,內阻最大可显示40000字,最小分辨率0.01毫欧,两个量程分别是4欧和0.4欧,4欧档位最小分辨0.1毫欧,0.4欧档位最小分辨0.01毫欧,整机功耗20毫安以下,可测电池內阻和开关电源市电整流后的大滤波电容的ESR,并且不用放电。
*2、项目属性
原创首次开源
* 3、开源协议
GPL 3.0
*4、硬件部分
电源:
电源采用单节18650电池供电,电源部分包含锂电池充电和保护电路
主控
瑞萨R7FA2E1A7单片机
显示:
采用COG12864显示
pwm滤波电路:
单片机P400口输出一路1KHZ 方波,进入RC滤波器过滤成正弦波,注R15、R16未焊接,设想用来扩展量程用的冗余设计。
恒流和保护电路部分:
1KHZ经过PWM滤波后的正弦波通过C7、R3、R13抬高到VCC的一半进入R10.1跟随器,接着进入恒流电路,R4、R5、R12是电流采样电阻,设置为恒流12毫安。Q1和Q2代替二极管保护运放,C100、C101为隔直电容采用的是安规电容,L1-L10限制电流变化速度增加保护电路可靠性,R11采用线绕电阻防止烧毁,D1 TVS将电压限制在一定范围,整个保护电路可耐压400V,尽管没有火花减小电路但是火花不是太明显。
调试:开尔文夹子夹住1欧电阻,用万用表交流毫伏档测1欧电阻两端,电压应为12毫伏左右,波形为标准正弦波。
测试夹部分
采用四线测量排除导线电阻影响,H1、H2一个夹子,H3、H4一个夹子,H1、H3电流回路最好两根线互相缠绕,H2、H4通过C16、C31隔离电池直流并且把正弦波信号抬高1.65V,R18、R38为限流电阻,Q3、Q4、Q5、Q6用三极管代替二级管。
放大电路
三运放仪表放大器,放大21倍
采用先衰减后放大,U4模拟开关控制衰减10倍或直通,U12.2十倍放大电路,最后进入单片机ADC口。
*5、软件部分
程序采用纯汇编编写,编译器ARM-NONE-EABI,可以直接到ARM官方网站下载,也可以自己下载GNU BINUTILS自己编译
编译命令
- ../configure --target=arm-none-eabi --prefix=/home/yjmwxwx/220g/ruanjian/chengxu/arm/bianyiqi/bintuils/
- make
- make install
开发工具:
附件里面的1.s是源代码,1.bin是固件
EMACS编辑器
编译器,输入make就可以了
JLINK 命令行调试工具,我用的是JLINK V9 的SWD模式,需要连接四根线到板子,分别是GND、SWDIO、SWCLK、VCC。
型号输入R7FA2E1A7,模式选择SWD
烧写命令
loadbin /home/yjmwxwx/1.bin 0
软件涉及单片机部分的有IO、GPT、ADC、DTC、DATA FLASH、SCI_SPI几个部分,涉及信号处理的主要是DFT和滑动滤波器。单片机定时器输出一路1KHZ PWM,另外一个定时器设置25K频率触发ADC采样,采集的数据通过DTC传输250点到RAM,SYSTICK定时器设置0.01秒中断一次,进入中断先算250点的DFT,得到实部虚部各进入300点滑动滤波器,得到的数据还需要旋转相位用来只显示阻抗的电阻部分。
信号处理核心部分程序:
GPT定时器设置25K频率用来触发ADC,SYSTICK定时器设置0.01秒中断一次处理ADC采集的数据。
定时器输出1KHZ PWM
ADC设置,通过定时器触发ADC采样
用来触发ADC采样的定时器设置25K频率,另外设置SYSTICK定时器0.01秒中断一次处理ADC采样数据
设置DTC传输ADC采集到的数据,一共传输250个32位循环模式,25K采样频率采集250点保证采集到的数据相位锁定方便后面处理采集到的数据。
进入SYSTICK中断后先算DFT得到实部虚部,再把这两个数据各自放到300点滑动滤波器
滑动滤波器
DFT计算一部分程序
DFT计算用COS和SIN查询表生成程序,格式为Q15定点数,N=500是数据点数,M=10是算第10个点。采样率25000HZ除250点=100HZ,每个点100HZ,第10个点就是我们需要的1KHZ
#include
#include
#include
void main() {
float m,pi,sr,si;
int rr,ii, n,i;
n=500;
m=10;
pi=3.141592653;
for(i=0;i sr=cos(2*pi*i*m/n);
si=-sin(2*pi*i*m/n);
rr=sr*0x8000;
ii=si*0x8000;
printf("0x%04X,0x%04X,",rr,ii);
}
printf("\n");
}
通过DTC传输到内存的数据通过OCTAVE显示出来,注意显示是512点,DTC传输最大256个32位,就算设置传输250点也会占用内存256个32位,前面6个32位是无用数据。
上面数据用OCTAVE FFT功能计算后,可以看到第10个点幅度最高就是我们需要的1KHZ
ADC采集到的数据
a=[02046 02046 02045 02046 02045 02045 02042 02042
02039 02039 02032 02033 02451 02452 02405 02407
02339 02342 02257 02260 02165 02168 02065 02070
01962 01966 01860 01863 01765 01769 01689 01691
01638 01640 01618 01619 01627 01626 01661 01660
01718 01715 01793 01790 01881 01877 01977 01973
02079 02076 02182 02178 02283 02279 02369 02366
02432 02429 02468 02467 02473 02473 02450 02452
02405 02407 02338 02341 02257 02259 02165 02168
02065 02069 01962 01966 01860 01863 01765 01769
01689 01691 01639 01640 01619 01619 01627 01626
01661 01661 01719 01715 01793 01789 01880 01876
01978 01973 02079 02076 02182 02179 02282 02278
02369 02367 02432 02430 02467 02466 02473 02473
02451 02453 02404 02406 02339 02341 02257 02260
02164 02168 02065 02069 01962 01966 01860 01863
01765 01769 01689 01690 01639 01640 01618 01617
01627 01627 01662 01659 01719 01716 01793 01790
01881 01877 01977 01974 02079 02075 02182 02179
02282 02279 02369 02366 02432 02430 02468 02467
02474 02474 02451 02452 02405 02406 02339 02342
02257 02260 02165 02168 02066 02069 01962 01966
01860 01864 01766 01768 01688 01690 01639 01639
01618 01618 01627 01627 01662 01660 01718 01716
01793 01790 01881 01877 01977 01973 02078 02075
02182 02179 02282 02279 02368 02365 02431 02429
02468 02467 02473 02473 02450 02452 02405 02408
02339 02341 02257 02260 02164 02168 02066 02069
01962 01966 01859 01863 01764 01768 01689 01691
01638 01640 01617 01618 01627 01626 01661 01660
01717 01716 01794 01790 01880 01877 01976 01973
02080 02076 02182 02178 02282 02278 02368 02366
02433 02430 02467 02466 02473 02473 02451 02451
02405 02406 02338 02341 02257 02260 02165 02169
02065 02068 01963 01966 01860 01863 01765 01768
01688 01691 01639 01640 01618 01618 01626 01625
01661 01660 01718 01716 01793 01790 01880 01878
01977 01973 02079 02075 02182 02179 02282 02279
02369 02365 02432 02430 02467 02466 02474 02474
02451 02452 02405 02406 02338 02341 02257 02260
02165 02168 02065 02069 01963 01966 01861 01864
01765 01768 01689 01691 01639 01641 01619 01619
01626 01626 01661 01659 01718 01716 01793 01790
01880 01876 01977 01974 02080 02076 02184 02174
02288 02284 02369 02365 02433 02430 02479 02466
02472 02473 02451 02452 02406 02407 02339 02341
02259 02260 02164 02167 02065 02069 01962 01966
01860 01864 01765 01767 01688 01691 01638 01636
01617 01618 01624 01628 01661 01659 01717 01715
01790 01788 01879 01876 01975 01972 02082 02074
02180 02177 02281 02277 02367 02364 02431 02430
02465 02457 02471 02470 02453 02450 02402 02404
02338 02340 02255 02253 02163 02166 02064 02068
01963 01964 01858 01862 01764 01766 01687 01689
01637 01640 01615 01616 01624 01619 01659 01659
01728 01714 01790 01787 01879 01875 01975 01971
02077 02073 02180 02176 02278 02276 02366 02364
02429 02427 02465 02464 02471 02471 02449 02449
02402 02404 02339 02339 02255 02258 02162 02166
02062 02067 01960 01964 01859 01861 01763 01765
01685 01688 01637 01637 01618 01616 01624 01623
01659 01658 01717 01714 01791 01787 01878 01875
01975 01971 02073 02073 02179 02178 02280 02289
02367 02363 02430 02427 02466 02468 02472 02472]
b = reshape(a',1,512)
b = b-2048
c = 0:511
plot (c,b)
滤波后的实部和虚部还需要旋转下相位,因为测电池內阻只显示阻抗的电阻部分
程序里面计算COS和SIN还有ATAN2的程序采用的是CORDIC算法,CORDIC算法详细介绍见附件。
校准方法
三个校准菜单,显示P-00是短路清零、显示P-01是相位校准、显示P-02是标准电阻校准。
按住切换档位的按键再同时按住另一个进入校准模式,数码管显示P-00,按档位加的按键会在P-00、P-01、P-02之间切换,两个按键一块按退出校准菜单显示END,按另外一个按键进入显示的菜单。
P-00 夹子短路,两个按键加减调到0,先调欧档,两个按键一块按进入毫欧档,调好后再两个按键一块按保存到FLASH 显示END
P-01 夹住1欧电阻,调到这个电阻真实相位,我也不知道就调到0了,调好后两个按键一块按保存到FLASH 显示END
P-02 夹住标准电阻把读数调到和电阻一样,也是先调欧档,两个按键一块按进入毫欧档,调好后再两个按键一块按保存到FLASH 显示END
*6、BOM清单
No. | Quantity | Comment | Designator | Footprint | Value | Manufacturer Part | Manufacturer | Supplier Part | Supplier |
1 | 18 | 10uF | C1,C2,C12,C13,C15,C17,C21,C22,C23,C25,C28,C32,C34,C35,C39,C41,C45,C46 | C0603 | 10uF | CL10A106KP8NNNC | SAMSUNG(三星) | C19702 | LCSC |
2 | 11 | 1nF | C3,C4,C5,C6,C8,C9,C10,C11,C26,C27,C33 | C0603 | 1nF | CC0603JRNPO9BN102 | YAGEO(国巨) | C106246 | LCSC |
3 | 8 | 100nF | C7,C24,C29,C36,C37,C38,C40,C42 | C0603 | 100nF | CC0603KRX7R9BB104 | YAGEO(国巨) | C14663 | LCSC |
4 | 2 | 100nF | C16,C31 | CAP-TH_L13.0-W6.0-P10.00-D1.0 | 100nF | MP2104K27C3X6LC | SRD(圣融达) | C105759 | LCSC |
5 | 2 | 10pF | C18,C19 | C0603 | 10pF | CC0603JRNPO9BN100 | YAGEO(国巨) | C106245 | LCSC |
6 | 1 | 470uF | C43 | CAP-TH_BD8.0-P3.50-D0.6-FD | 470uF | KM477M016F12RR0VH2FP0 | CX(承兴) | C28067 | LCSC |
7 | 2 | 1uF | C100,C101 | CAP-TH_L18.0-W11.0-P15.00-D0.8 | 1uF | PX105K2C1503 | KYET(科雅) | C2693799 | LCSC |
8 | 1 | SMBJ5.0A | D1 | SMB_L4.3-W3.6-LS5.3-RD | SMBJ5.0A | FTR(乔光电子) | C693503 | LCSC | |
9 | 1 | AFA01-S10FCA-00 | FPC1 | FPC-SMD_10P-P1.0_FGS-XJ-H2.0 | AFA01-S10FCA-00 | JS(钜硕电子) | C262756 | LCSC | |
10 | 8 | H1,H2,H3,H4,H5,H6,H7,H8 | HDR-TH_1P-V-M_XKB_X4611WV-01I-C28D40 | C81276 | |||||
11 | 10 | 47uH | L1,L2,L3,L4,L5,L6,L7,L8,L9,L10 | IND-SMD_L4.5-W4.0_SLF0403 | 47uH | SLF0403-470KTT | Sunltech(韩国顺磁) | C182152 | LCSC |
12 | 2 | 204-10SURD/S530-A3-L | LED1,LED2 | LED-TH_BD3.0-P2.54-FD | 204-10SURD/S530-A3-L | EVERLIGHT(亿光) | C99771 | LCSC | |
13 | 6 | SS8050 | Q1,Q2,Q3,Q4,Q5,Q6 | SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR | SS8050 | ElecSuper(静芯微) | C5249676 | LCSC | |
14 | 9 | 100kΩ | R1,R6,R7,R8,R9,R10,R14,R26,R39 | R0603 | 100kΩ | RC0603FR-07100KL | YAGEO(国巨) | C14675 | LCSC |
15 | 21 | 10kΩ | R2,R15,R16,R17,R18,R20,R21,R22,R23,R24,R25,R27,R30,R31,R32,R33,R34,R38,R41,R44,R47 | R0603 | 10kΩ | RC0603FR-0710KL | YAGEO(国巨) | C98220 | LCSC |
16 | 6 | 1MΩ | R3,R13,R19,R35,R36,R37 | R0603 | 1MΩ | 0603WAF1004T5E | UNI-ROYAL(厚声) | C22935 | LCSC |
17 | 3 | 100Ω | R4,R5,R12 | R2512 | 100Ω | CRH2512J100RE04Z | EVEROHMS(天二科技) | C175441 | LCSC |
18 | 1 | 5.1Ω | R11 | RES-TH_BD3.5-L9.0-P13.00-D0.8 | 5.1Ω | KNP1WS-5Ω1±5%-2T52 | VO(翔胜) | C601740 | LCSC |
19 | 11 | 1kΩ | R28,R29,R40,R42,R43,R45,R46,R48,R51,R52,R54 | R0603 | 1kΩ | RC0603FR-071KL | YAGEO(国巨) | C22548 | LCSC |
20 | 1 | 100Ω | R49 | R0603 | 100Ω | RC0603FR-07100RL | YAGEO(国巨) | C105588 | LCSC |
21 | 2 | 10Ω | R50,R53 | R0603 | 10Ω | 0603WAF100JT5E | UNI-ROYAL(厚声) | C22859 | LCSC |
22 | 2 | 1TS005A-2500-5001 | SW1,SW2 | SW-TH_4P-L6.0-W6.0-P3.90-LS6.5 | 1TS005A-2500-5001 | HYP(鸿源精密) | C255811 | LCSC | |
23 | 1 | SS-12F20-G070 | SW3 | SW-TH_G-SWITCH_SS-12F20-G070 | SS-12F20-G070 | G-Switch(品赞) | C2848914 | LCSC | |
24 | 4 | TP1,TP2,TP3,TP4 | M2螺丝 | ||||||
25 | 1 | R7FA2E1A72DFL#AA0 | U3 | LQFP-48_L7.0-W7.0-P0.50-LS9.0-BL | R7FA2E1A72DFL#AA0 | RENESAS(瑞萨)/IDT | C2932201 | LCSC | |
26 | 1 | SGM3157 | U4 | SC-70-6_L2.2-W1.3-P0.65-LS2.1-BL | SGM3157 | UMW(广东友台半导体) | C394901 | LCSC | |
27 | 1 | WSP4056 | U5 | SOP-8_L5.1-W3.9-P1.27-LS6.0-BL | WSP4056 | WINSOK(微硕) | C2985892 | LCSC | |
28 | 1 | 662K. | U6 | SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR | 662K. | FM(富满) | C841298 | LCSC | |
29 | 1 | WSTDW01 | U7 | SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BR | WSTDW01 | WINSOK(微硕) | C86873 | LCSC | |
30 | 2 | AO3400A | U8,U9 | SOT-23-3_L3.0-W1.6-P1.90-LS2.8-BR | AO3400A | ElecSuper(静芯微) | C5224194 | LCSC | |
31 | 3 | LMV358ARZ | U10,U11,U12 | SOP-8_L4.9-W3.9-P1.27-LS6.0-BL | LMV358ARZ | HTCSEMI(海天芯) | C2928823 | LCSC | |
32 | 1 | TYPE-C16PIN2MD(073) | USB1 | USB-C-SMD_TYPE-C-6PIN-2MD-073 | TYPE-C16PIN2MD(073) | SHOU HAN(首韩) | C2765186 | LCSC | |
33 | 1 | - | X1 | OSC-SMD_4P-L3.2-W2.5-BL | - | 7325-3200A0910-00 | XTY(新天源) | C389917 | LCSC |
*7、大赛LOGO验证
请上传包含大赛logo的项目图片,logo以丝印形式印刷在PCB上面。
点击zip下载大赛logo标识! (大赛标识).zip
* 8、演示您的项目并录制成视频上传
B站高清视频
更多详情:https://diy.szlcsc.com/posts/15a52db9fd7d40c492eb505280278e45
设计图

BOM


评论