FastBond智能穿戴之电量检测
FastBond智能穿戴之电量检测,对电池电压和电流进行实时检测,并通过oled屏来显示电压,电流,电量参数
标签
嵌入式系统
huihui
更新2021-11-17
984

内容介绍

简介

在智能穿戴中,电池是必须的,本文主要介绍如何实时检测电池的电量,加上无线模块的话,就可以通过APP来实时检测了,只要是锂电池的产品上,这个小模块都可以使用,并且还有OLED屏显示, 结合按键控制可以做其他的二次开发,但是主要应用于智能穿戴上。

硬件介绍:

主控芯片:stm32f103c8T6                      厂家:意法半导体

基准电压芯片:ADR5044                            厂家:ADI     

运放:MAX40110                                     厂家:美信     

充电芯片:TP4056                                厂家:南京拓微

软件介绍:主控芯片的编程软件是KEIL5,支持编程、下载硬件仿真功能,界面友好。

 PCB及原理图由Altium Designer绘制,免费、稳定;且自带大量元件库。

              

原理图简介

供电:采用micro usb供电,电源电压为5V,给单片机最小系统板供电,和TP4056模块充电,并提供高达500 mA的输出电流。

FskAqEXz-bTYOFiF4vWHSz-eRZY7

AD电压基准:采用ADI公司的ADR5044芯片,高精度分流基准电压源,针对空间受限的应用而设计,采用超小型SC70和SOT-23封装,具有多用途、易于使用的特点,适合众多应用领域。此外还具有低温度漂移、优于0.1%的初始精度和快速建立时间特性。采用了sot-23的封装。

Fo0zBP0Jp8h_qLHMd00F_djyfVF2

电流检测采用0.01欧的电阻作为采样电阻,经过美信运放max40110,基本介绍

Fn66eDSgQI8HePFxmMPqL5ptpA5U

经过R50和R51同向放大后给单片机的12位AD检测。

代码这块简单计算

int main(void)
{
	static float batv,bativ;
    uint8_t t=0;  
	static int8_t batpercent=0;
	static int8_t socshi=0;
	static int8_t socge=0;
	
	static int16_t batvv=0;
	static int8_t vbai=0;
	static int8_t vshi=0;
	static int8_t vge=0;
	
	static int16_t bativv=0;
	static int8_t ibai=0;
	static int8_t ishi=0;
	static int8_t ige=0;
	int error;
	
	/* 硬件初始化 */
	bsp_Init();	
	ledinit();
    oledInit(); 
	adc1.init();	
		
	mcu_systick_delay(100);
	OLED_ShowCHinese( t,0,30);//电
	OLED_ShowCHinese(16 + t,0,33);//量
	OLED_ShowCHinese(32 + t,0, 25);//冒号
	OLED_ShowChar(80 + t,0, '%');
	
	OLED_ShowCHinese( t,2,30);//电
	OLED_ShowCHinese( t+16,2,31);//压
	OLED_ShowCHinese(32 + t,2, 25);//冒号
	
	OLED_ShowCHinese( t,5,30);//电
	OLED_ShowCHinese( t+16,5,32);//流
	OLED_ShowCHinese(32 + t,5, 25);//冒号
//	OLED_ShowChar(0 , 4 , 'W');
	
//	  OLED_ShowChar(50 + t,2, '0');//
//	  OLED_ShowCHinese(48 + t+16,0, 34);//
//	OLED_ShowCHinese(48 + t+16+16,1, 2);//
//	OLED_ShowCHinese(48 + t+16+16+16,1, 3);//
//	OLED_ShowCHinese(48 + t+16+16+16+16,1,4);//
	
	

	/* 超级循环 */
	while (1)
	{
		if(timecnt>=1000)//1000ms上传电流
		{
			timecnt=0;
            adc1.loop();
//			adc_scan();
			batv=((float)s_filter_value[1]/4095.0)*3.3*2;//电池电压
			
			bativ=((float)s_filter_value[0]/4095.0)*3.3;//运放输出电压
			bativ=bativ*100/58;//算电流
			bativv = bativ*100;
			
//			batv=(batv-LOW_POWER)/(FULL_POWER-LOW_POWER);
			batvv= batv*100*2;
			batpercent =(batv-LOW_POWER)/(FULL_POWER-LOW_POWER)*100;
			
			socshi=batpercent/10;
			socge=batpercent%10;
			
			switch(socshi)//显示电量高位
		    {
 
				case 0:OLED_ShowChar(50 + t,0, '0'); break;	
				
				case 1:OLED_ShowChar(50 + t,0, '1');break;
				case 2:OLED_ShowChar(50 + t,0, '2');break;
				case 3:OLED_ShowChar(50 + t,0, '3');break;
				case 4:OLED_ShowChar(50 + t,0, '4');break;
				case 5:OLED_ShowChar(50 + t,0, '5');break;
				case 6:OLED_ShowChar(50 + t,0, '6');break;
				case 7:OLED_ShowChar(50 + t,0, '7');break;
				
				case 8:OLED_ShowChar(50+ t,0, '8');break;
				case 9:OLED_ShowChar(50+ t,0, '9');break;
				default:break;
			
		   }
			

最后电路板这块

FrzOW8I3i3ke7TPab6SBHVudQmd3

项目简单总结

通过对这次的智能穿戴的电量检测,也发现了关键问题,虽然运放和基准芯片的精度高,但是光靠电压和电流检测电量的多少,精度远远不够,最好用电量计来检测

项目最终结果图

Fn5nfuXKvcPJl3fkn8BMDHcWWbKx

 

电路图如下

Fn0_po2GL-8zaelGMHiJw80qUSPs

 

附件下载

下位机1.py
Sheet1.pdf

团队介绍

个人

评论

0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号