基于STM32F103C8T6的充电桩计费系统

基于STM32F103C8T6的充电桩计费系统

本设计包含程序代码+原理图+PCB,仅供学习参考

📚开发环境

原理图:Altium Designer

程序编译器:keil 5

编程语言:C语言

设计编号:C0019

📚设计介绍

本设计采用单相互感式计量模块检测交流用电量,利用 RC522 射频模块完 成刷卡计费系统设计。STM32F103C8T6 通过 Modbus 串行传输通信协议与计量 模块进行通信,获得实时电压,实时电流和累计用电量。整个电量检测模块使用电流互感器和光耦隔离,对使用者和控制电路板进行保护。利用 RC522 射频 模块对不同 IC 卡进行读写操作,完成充值,查询和扣费操作,HMI 串口触摸 屏同步显示操作步骤信息。IC 卡号可以储存在 EEPROM 中,保留用户信息。 电参数信息可通过蓝牙发送到其他蓝牙设备上,通过跳线选择 RS232 通信将信 息传输到串行设备上。系统完成硬件电路和程序设计,适合在汽车充电桩上作 为计费系统使用。

STM32F103C8T6 作为中央控制芯片,其它模块包括:AMS1117- 3.3V 稳压电源、、HMI 串口显示屏、晶振与复位电路、RS232 通信模块、RFID-RC522 射频模块、LED 显示、EEPROM 模块和隔离模块。

📚原理图

📚PCB

📚部分程序代码

c 复制代码
int main(void)
 { 
	char showBuff[80];
	 GPIO_InitTypeDef  GPIO_InitStructure;
	 
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// ÉèÖÃÖжÏÓÅÏȼ¶·Ö×é2
	delay_init();	    	 //ÑÓʱº¯Êý³õʼ>>¯	  
	uart1_init(9600);	
	uart2_init(9600);
	uart3_init(4800);
	LED_Init();		  		//³õʼ>>¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú	
	KEY_Init();				//°´¼ü³õʼ>>¯
//	TIM2_Int_Init(4999,71);    //(1000*72/72(Mhz))us=1ms
//	TIM3_Int_Init(999,71);
	AT24CXX_Init();			//IIC³õʼ>>¯ 
	InitRc522();
	power_ClearValue();
	 

	while(1)
	{		
		Charge_GetValue();
		memset(showBuff,0,sizeof(showBuff));
		snprintf(showBuff,sizeof(showBuff),"V:%.2fV,I:%.2fA,E:%.2fkW-h\r\n", control.V,control.I,control.E);
		UsartPrintf(USART2,showBuff);
		
		switch(TFT_Command)
		{
			case TFT_CommandMain:
				memset(showBuff,0,sizeof(showBuff));
				snprintf(showBuff,sizeof(showBuff),"main.t0.txt=\"µçѹ:%.2fV\"", control.V);
				UsartPrintf(USART1,showBuff);
				UsartPrintf(USART1,sendEnd);
			
				memset(showBuff,0,sizeof(showBuff));
				snprintf(showBuff,sizeof(showBuff),"main.t1.txt=\"µçÁ÷:%.2fA\"", control.I);
				UsartPrintf(USART1,showBuff);
				UsartPrintf(USART1,sendEnd);
			
				getRFID=0;
				break;
			case TFT_CommandStart:
				memset(showBuff,0,sizeof(showBuff));
				snprintf(showBuff,sizeof(showBuff),"start.t0.txt=\"µçѹ:%.2fV\"", control.V);
				UsartPrintf(USART1,showBuff);
				UsartPrintf(USART1,sendEnd);
			
				memset(showBuff,0,sizeof(showBuff));
				snprintf(showBuff,sizeof(showBuff),"start.t1.txt=\"µçÁ÷:%.2fA\"", control.I);
				UsartPrintf(USART1,showBuff);
				UsartPrintf(USART1,sendEnd);
			
				memset(showBuff,0,sizeof(showBuff));
				snprintf(showBuff,sizeof(showBuff),"start.t2.txt=\"µçÁ¿:%.2fkW-h\"", control.E);
				UsartPrintf(USART1,showBuff);
				UsartPrintf(USART1,sendEnd);
			
				memset(showBuff,0,sizeof(showBuff));
				snprintf(showBuff,sizeof(showBuff),"start.t3.txt=\"½ð¶î:%.1fÔª\"", control.E*Unit_price);
				UsartPrintf(USART1,showBuff);
				UsartPrintf(USART1,sendEnd);
				break;
			case TFT_CommandQuery:
				if(!RFID_find())
				{						
					UsartPrintf(USART1,"vis g0,0");//¹Ø±Õ¹ö¶¯Îı¾
					UsartPrintf(USART1,sendEnd);
					
					temp_money=Read_overage();
					memset(showBuff,0,sizeof(showBuff));
					snprintf(showBuff,sizeof(showBuff),"query.t0.txt=\"Óà¶î:%.1lfÔª\"", temp_money);
					UsartPrintf(USART1,showBuff);
					UsartPrintf(USART1,sendEnd);
				}
				break;
			case TFT_CommandRecharge:
				if(!RFID_find() && getRFID==0)
				{
					UsartPrintf(USART1,"page recharge");
					UsartPrintf(USART1,sendEnd);
					getRFID=1;
				}
				if(alterInfo.rev_idle)
				{
					temp_money=alterInfo.alterBuf[4]+Read_overage();
					RFID_find();
					write_overage(temp_money);
					
					UsartPrintf(USART1,"page main");
					UsartPrintf(USART1,sendEnd);
					TFT_Command=TFT_CommandMain;
					alterInfo.rev_idle=0;
				}
				break;
			case TFT_CommandConsume:
				if(!RFID_find())
				{
					UsartPrintf(USART1,"vis g0,0");//¹Ø±Õ¹ö¶¯Îı¾
					UsartPrintf(USART1,sendEnd);
					
//µ÷ÊÔ				temp_money=Read_overage()-control.E*Unit_price;
					test=(Read_overage()-control.E*Unit_price)*10;
					temp_money=(double)test/10;
					memset(showBuff,0,sizeof(showBuff));
					snprintf(showBuff,sizeof(showBuff),"consume.t0.txt=\"Óà¶î:%.1lfÔª\"", temp_money-10);
					UsartPrintf(USART1,showBuff);
					UsartPrintf(USART1,sendEnd);
					delay_ms(1000);
					
					RFID_find();
					write_overage(temp_money-10);
					power_ClearValue();//	Çå³ýµçÁ¿
					TFT_Command=TFT_CommandMain;//±ÜÃâÖØ¸´¿Û·Ñ
				}
				break;
			default:break;
		}
	}
}

📚设计报告

📚资料清单

📚下载链接

https://pan.baidu.com/s/1Qf5yNJYeWXnGkOye08DCLw?pwd=2d52

相关推荐
深圳市尚想信息技术有限公司6 分钟前
HITENX海速芯TM52F1363-SSOP24 8KB Flash存储+EEPROM,国产8位MCU单片机
单片机·mcu·flask·芯片·控制器·海速芯
mitugaoyang199321 分钟前
Marvell88Q5152交换机开发(5)-烧录和调试
网络·嵌入式硬件·网络通信
zhangzhangkeji29 分钟前
stm32, 4-1 : OLED 调试工具。 4-2: keil 调试
stm32
m0_7527531235 分钟前
51单片机中的定时器和中断等
单片机·51单片机
AAA代码批发商40 分钟前
DAYS41 UART 串口通信 + DS18B20 单总线温度传感器
嵌入式硬件·51单片机
充哥单片机设计1 小时前
【STM32开源项目】智能窗户控制器
stm32·单片机·嵌入式硬件·毕业设计·智能窗户
Jlzn88881 小时前
钢带折弯±0.1°怎么来?伺服闭环补偿回弹拆解
大数据·嵌入式硬件·制造
威嵌神州1 小时前
便携式加固产品方案:加固平板、手持终端、巡检仪、管理柜
嵌入式硬件·智能手机·电脑
安河桥。1 小时前
PCIe 是什么?为什么这么快?从差分线到 Gen6 的硬核解析与场景全览
嵌入式硬件·车载系统
Zw-awa12 小时前
标准输入输出与 MicroLIB:C 语言的终端去了哪里
stm32