FastBond智能建筑之传感器UPS电源
本设计实现了一个小型UPS,支持5v 2A及3.3v 150ma输出。采用3.7V锂电池电源输入,具有锂电池充电管理,电池电量输出监测,5v升压输出等功能。
标签
嵌入式系统
xushiju
更新2021-11-24
815

项目介绍

FiIK1z9ZPvARrCnShuPO06mraFrw

本设计实现了一个小型UPS,采用3.7V锂电池电源输入,具有锂电池充电管理,电池电量输出监测,5v 2A及3.3v 150ma输出功能。

项目硬件介绍

硬件 功能 公司
ADP150AUJZ-3.3 LDO ADI
MCP73831T 锂电池充电芯片 MICROCHIP
MAX17048G 电量计 MAX
LTC3402 2A升压芯片 ADI

ADP150AUJZ-3.3

FlOpERSm1JREAuDx4iTL6JDlw8pq

ADP150AUJZ-3.3是ADI的一颗超低噪声CMOS线性稳压器,可以提供150mA的电流输出能力,非常适合为外接传感器供电。

MCP73831T

FrzDSoj_rtPPBipAiP_iiZrTPayy

MCP73831T是一款高度先进的线性电荷管理控制器,适用于空间有限的应用。MCP73831T不仅体积小,且所需的外部组件数量少。对于通过USB端口充电的应用,MCP73831T遵守管理USB电源总线的所有规范。MCP73831T采用恒定电流/恒定电压充电算法以及可选的预充和充电终止功能。恒定电流值由一个外部电阻设置。在大功率或高环境条件下,MCP73831T-2ATI/OT会根据芯片温度限制充电电流。这种热调节可优化充电周期时间,同时保持器件的可靠性。

MAX17048G

FpOcajpdPA8ORBr5ySXYtyLePUwy

MAX17048G是一颗小尺寸、微功耗的电流电压计,适合用于手持机便携产品的锂离子电池组,且无需检流电阻。

LTC3402

Fq372Ju4LyOsNC7w4Rlv6-D-k9DK

LTC3402是ADI的同步升压型DC/DC转换器,同步整流效率可以达到97%,固定工作频率3MHz,具有宽输入范围:0.5V 至 5V 和非常低的静态电流:38µA ,输出电压调整范围:2.6V 至 5.5V。

功能演示:

Fplyvz79_fywneqlEbjGFoQBdxi_

FhFiAaNh3or6unA9Y5V2U3aG2SJu

总结:

本次项目是参考了adafruit的powerboost项目,能够实现对树莓派的ups供电,我在此基础上加了功率计,可以更好地做到电源的监控,项目的改进点在于充电芯片,虽然官方datasheet中说了是带有温度管理的,但实际使用中依然会感觉到温度非常高,未来会针对此进行优化。

电量检测代码:

#include <Wire.h> // Needed for I2C

#include <SparkFun_MAX1704x_Fuel_Gauge_Arduino_Library.h> // Click here to get the library: http://librarymanager/All#SparkFun_MAX1704x_Fuel_Gauge_Arduino_Library

SFE_MAX1704X lipo; // Defaults to the MAX17043

//SFE_MAX1704X lipo(MAX1704X_MAX17043); // Create a MAX17043
//SFE_MAX1704X lipo(MAX1704X_MAX17044); // Create a MAX17044
//SFE_MAX1704X lipo(MAX1704X_MAX17048); // Create a MAX17048
//SFE_MAX1704X lipo(MAX1704X_MAX17049); // Create a MAX17049

double voltage = 0; // Variable to keep track of LiPo voltage
double soc = 0; // Variable to keep track of LiPo state-of-charge (SOC)
bool alert; // Variable to keep track of whether alert has been triggered

void setup()
{
	Serial.begin(115200); // Start serial, to output debug data
  while (!Serial)
    ; //Wait for user to open terminal
  Serial.println(F("MAX17043 Example"));

  Wire.begin();

  lipo.enableDebugging(); // Uncomment this line to enable helpful debug messages on Serial

  // Set up the MAX17043 LiPo fuel gauge:
  if (lipo.begin() == false) // Connect to the MAX17043 using the default wire port
  {
    Serial.println(F("MAX17043 not detected. Please check wiring. Freezing."));
    while (1)
      ;
  }

	// Quick start restarts the MAX17043 in hopes of getting a more accurate
	// guess for the SOC.
	lipo.quickStart();

	// We can set an interrupt to alert when the battery SoC gets too low.
	// We can alert at anywhere between 1% - 32%:
	lipo.setThreshold(20); // Set alert threshold to 20%.
}

void loop()
{
  // lipo.getVoltage() returns a voltage value (e.g. 3.93)
  voltage = lipo.getVoltage();
  // lipo.getSOC() returns the estimated state of charge (e.g. 79%)
  soc = lipo.getSOC();
  // lipo.getAlert() returns a 0 or 1 (0=alert not triggered)
  alert = lipo.getAlert();

  // Print the variables:
  Serial.print("Voltage: ");
  Serial.print(voltage);  // Print the battery voltage
  Serial.println(" V");

  Serial.print("Percentage: ");
  Serial.print(soc); // Print the battery state of charge
  Serial.println(" %");

  Serial.print("Alert: ");
  Serial.println(alert);
  Serial.println();

  delay(500);
}
软硬件
电路图
附件下载
Example1_Simple.ino
团队介绍
个人开发者
团队成员
xushiju
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号