问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

手把手教你做!12V电池智能充电器,自制防过充神器!

创作时间:
作者:
@小白创作中心

手把手教你做!12V电池智能充电器,自制防过充神器!

引用
腾讯
1.
https://new.qq.com/rain/a/20241229A03AAA00

在日常生活中,电池的过充问题一直困扰着许多人。为了解决这个问题,本文将带领大家制作一个基于ATmega328P微控制器的12V电池自动断电充电控制器。该系统集成了LCD显示屏、继电器以及基础电子元件,能够有效监控和控制电池充电状态,防止电池过充。

项目所需硬件

  1. Arduino UNO R3
  2. 双通道继电器

项目所需软件

Arduino IDE

项目概述

这个12V电池自动断电充电控制器能够在电池充满时自动切断充电电流,从而保护电池免受过充,提高安全性和效率。ATmega328P作为电路的核心,控制继电器并在16x2 LCD显示屏上实时显示电池状态。

所需组件

  • ATmega328P 微控制器 (28脚IC底座)
  • 16MHz 晶振
  • 10K 电阻(RESET引脚上拉)
  • 103 可调电阻(用于LCD对比度调整)
  • 电容器(1uF,10uF等)
  • L7805 电压稳压器(提供5V电源)
  • BC547 三极管
  • 1K 电阻
  • 1N4007 二极管(继电器的反向保护)
  • 继电器(5V)
  • 1602 LCD显示屏
  • 2针交流端子块(输入)
  • LED 指示灯
  • 排针
  • 12V电池
  • PCB

电路图解

电源部分

12V直流电源通过2针交流端子块连接到电路。L7805电压稳压器将输入电压降至5V,为ATmega328P和其他组件供电。电容器C1和C2稳定电源电压。

ATmega328P 微控制器部分

ATmega328P 配置了16MHz晶振,以确保精确的计时。引脚PC0(A0)通过分压电路读取电池电压。数字引脚控制继电器并向LCD发送数据。

继电器控制部分

BC547三极管驱动继电器,1N4007二极管提供反向电流保护。继电器切换充电电路,在电池电压达到阈值时切断电源。

LCD显示部分

1602 LCD 显示实时电压和充电状态。103可调电阻用于调整显示对比度。

电池电压监测部分

电池电压通过电阻分压电路缩放,并由ATmega328P的ADC引脚PC0读取。

Arduino代码(ATmega328P)

以下是Arduino编程代码,用于监控电池电压并相应切换继电器:

#include <LiquidCrystal.h>

// LCD引脚配置
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// 引脚定义
const int relayPin = 3;           // 继电器引脚
const int batteryPin = A0;        // 模拟引脚,用于检测电池电压
float batteryVoltage = 0.0;       // 电池电压变量

void setup() {
  pinMode(relayPin, OUTPUT);      // 将继电器引脚设置为输出模式
  digitalWrite(relayPin, LOW);    // 初始状态关闭继电器
  lcd.begin(16, 2);               // 初始化LCD屏幕,16x2字符
  lcd.print("Battery Monitor");   // 在LCD上显示“Battery Monitor”
  delay(2000);                    // 延迟2秒,保持显示
  lcd.clear();                    // 清除LCD屏幕
}

void loop() {
  // 读取电池电压(通过分压电路测量)
  int sensorValue = analogRead(batteryPin);
  batteryVoltage = (sensorValue * 5.0 / 1023) * (12.0 / 5.0);  // 根据分压电路调整计算实际电压

  // 在LCD上显示电压
  lcd.setCursor(0, 0);            // 将光标设置在第一行第一个位置
  lcd.print("Voltage: ");         // 显示“Voltage: ”
  lcd.print(batteryVoltage);      // 显示电压值
  lcd.print("V");                 // 显示单位“V”

  // 检查电压并控制继电器
  if (batteryVoltage >= 13.8) {   // 电压达到13.8V,电池充满
    digitalWrite(relayPin, LOW);  // 关闭继电器,停止充电
    lcd.setCursor(0, 1);          // 将光标移动到第二行
    lcd.print("Status: Full    "); // 显示“状态:已充满”
  } else if (batteryVoltage <= 12.0) {  // 电压低于12V,电池需要充电
    digitalWrite(relayPin, HIGH); // 打开继电器,开始充电
    lcd.setCursor(0, 1);          // 将光标移动到第二行
    lcd.print("Status: Charging"); // 显示“状态:充电中”
  }

  delay(1000);                    // 每秒更新一次
}

工作原理

电路通过ATmega328P的ADC引脚监测电池电压。当电压超过设定阈值(如13.8V)时,继电器关闭,停止充电过程。如果电压低于最低阈值(如12.0V),继电器开启,恢复充电。16x2 LCD显示当前电压和充电状态,为用户提供直观的界面。

结论

这个12V电池自动断充控制器是一种高效的方式,可以保护您的电池免受过充损害。通过使用ATmega328P,该系统简单而可靠,能够实现精确的电压监测和控制。欢迎根据您的电池类型,在代码中调整电压阈值!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号