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

在这篇文章中,我们将设计并构建一个基于ATmega328P微控制器的12V电池自动断电充电控制器。该系统集成了LCD显示屏、继电器以及基础电子元件,有效

图片


监控和控制电池充电。接下来我们将介绍电路设计、所需组件以及Arduino编程代码。

这个项目需要的硬件:

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,该系统简单而可靠,能够实现精确的电压监测和控制。

欢迎根据您的电池类型,在代码中调整电压阈值!

本作品由Jhuman Khan原创!