1. 系统总体设计
点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/91644953
1.1 设计背景
随着新能源交通工具的普及,电动车已成为城市出行的重要方式之一。与此同时,配套的充电基础设施需求迅速增长。传统电动车充电设备大多功能单一,仅提供基本充电功能,缺乏智能化管理与远程监控能力,难以满足现代智慧能源管理的需求。
基于单片机的智能充电桩系统能够实现多路充电控制、实时电压监测、人机交互以及与上位机通信等功能,具有结构简单、成本低、扩展性强等优点。因此,设计一种基于51单片机的智能电动车充电桩系统,对提高充电设备的智能化水平和用户体验具有重要意义。
1.2 系统功能设计
本系统基于51单片机实现双路电动车充电桩控制,主要功能如下:
- 通过LCD1602显示两个充电桩的实时充电电压;
- 通过按键控制两个充电桩的启动与关闭;
- 支持通过按键设置充电电压;
- 当充电完成后,通过蜂鸣器进行提示;
- 通过串口通信与上位机连接,实现电压数据实时上传;
- 上位机可远程控制两个充电桩的启动、关闭及电压设定;
- 系统支持双充电桩独立运行与控制,提高使用效率。
2. 系统电路设计
2.1 单片机最小系统电路设计
本系统采用AT89C51单片机作为核心控制单元,负责数据处理、控制逻辑与通信功能。
最小系统包括:
- 晶振电路:采用11.0592MHz晶振,保证串口通信精度;
- 复位电路:采用RC复位电路,实现系统可靠启动;
- 电源电路:通过稳压模块提供稳定5V电源。
该模块为系统稳定运行提供基础。
2.2 电压采样电路设计
电压采样用于获取充电桩输出电压。
设计方案:
- 采用电阻分压电路将高电压转换为0~5V范围;
- 每个充电桩独立采样;
- 加入滤波电容减少干扰;
- 输出信号输入ADC模块。
2.3 ADC模数转换电路设计
本系统采用ADC0808进行模数转换。
主要特点:
- 8位分辨率;
- 多通道输入,支持两个充电桩电压采集;
- 与单片机接口简单;
- 转换速度满足实时测量需求。
连接方式:
- 数据端口连接P0口;
- 控制信号连接单片机IO口;
- 时钟信号由外部电路提供。
2.4 LCD1602显示电路设计
LCD1602用于显示两个充电桩的电压信息。
设计要点:
-
采用4位数据模式;
-
控制引脚包括RS、RW、EN;
-
显示内容包括:
- 充电桩1电压;
- 充电桩2电压。
2.5 按键输入电路设计
系统设置多个按键用于控制:
- 充电桩1启动/停止;
- 充电桩2启动/停止;
- 电压调节(增加/减少)。
设计要点:
- 使用上拉电阻;
- 单片机IO口读取;
- 软件消抖处理。
2.6 充电控制电路设计
充电控制通过继电器实现。
设计方案:
- 单片机输出控制信号;
- 三极管驱动继电器;
- 控制充电回路通断;
- 每个充电桩独立控制。
2.7 串口通信电路设计
用于实现与上位机通信。
设计要点:
- 使用单片机UART接口;
- 通过MAX232实现电平转换;
- 支持RS232通信;
- 实现数据上传与远程控制。
2.8 蜂鸣器报警电路设计
用于充电完成提示。
设计方法:
- 单片机IO口控制;
- 三极管驱动蜂鸣器;
- 充电完成时触发。
3. 系统程序设计
3.1 程序总体结构设计
系统程序采用模块化设计,包括采样模块、显示模块、按键模块、控制模块及通信模块。
主程序如下:
c
void main()
{
System_Init();
while(1)
{
Key_Scan();
Voltage1 = Read_ADC(0);
Voltage2 = Read_ADC(1);
Control_Process();
LCD_Display();
UART_Send();
}
}
3.2 ADC采样程序设计
c
unsigned char Read_ADC(unsigned char ch)
{
channel = ch;
ALE = 1;
START = 1;
delay_us(5);
ALE = 0;
START = 0;
while(EOC == 0);
OE = 1;
return P0;
}
实现多通道采样。
3.3 电压计算程序设计
c
float Convert_Voltage(unsigned char adc)
{
return adc * 5.0 / 255.0 * SCALE;
}
将数字量转换为实际电压。
3.4 按键处理程序设计
c
void Key_Scan()
{
if(KEY1 == 0)
{
delay_ms(10);
if(KEY1 == 0)
charge1_flag = !charge1_flag;
}
if(KEY2 == 0)
{
delay_ms(10);
if(KEY2 == 0)
charge2_flag = !charge2_flag;
}
}
实现充电控制。
3.5 充电控制程序设计
c
void Control_Process()
{
if(charge1_flag)
Relay1_ON();
else
Relay1_OFF();
if(charge2_flag)
Relay2_ON();
else
Relay2_OFF();
}
实现充电桩控制。
3.6 LCD显示程序设计
c
void LCD_Display()
{
LCD_ShowString(0,0,"V1:");
LCD_ShowNum(3,0,Voltage1,2);
LCD_ShowString(0,1,"V2:");
LCD_ShowNum(3,1,Voltage2,2);
}
显示电压信息。
3.7 串口通信程序设计
c
void UART_Send()
{
printf("V1=%.2f,V2=%.2f\n",Voltage1,Voltage2);
}
实现数据上传。
3.8 上位机控制处理程序
c
void UART_Receive()
{
if(RI)
{
RI = 0;
cmd = SBUF;
if(cmd == 'A')
charge1_flag = 1;
if(cmd == 'B')
charge1_flag = 0;
}
}
实现远程控制。
3.9 蜂鸣器控制程序
c
void Beep()
{
Buzzer = 1;
delay_ms(500);
Buzzer = 0;
}
用于提示充电完成。
4. 系统总结
本系统基于51单片机实现了智能电动车充电桩控制,通过双路电压采样、继电器控制及串口通信,实现了充电过程的智能化管理。
在电路设计方面,各模块结构清晰,功能独立,具备良好的稳定性;在程序设计方面,采用模块化设计,使系统逻辑清晰、易于扩展。
系统不仅支持本地按键控制,还支持上位机远程控制,提高了系统灵活性与实用性,具有较高的应用价值。