Peacefair PZEM 004模块测量交流电参数十分方便,可以应用于开发智能电表等,可惜商家只提供了windows上位机,没有提供单片机的使用例程,虽然编程也不复杂,但还是需要好些时间调试的,网上关于这个模块的资料非常少,因此我将我写的驱动贡献出来以供大家参考,以便节约大家宝贵的时间。本程序基于stm32的HAL库编写,因此移植到其他stm32上十分方便。限于本人水平有限,程序中难免有bug,请大家依据实际应用修改。
本驱动程序用到了stm32的USART2串口,其串口接收中断在usart.c中实现。
调用说明:
1.包含文件: #include "PZEM004T.h"
2.调用PZEM004T_init();初始化USART2串口。
3.调用PZEM004T_ReadMeasValue();读取测量结果,结果会保存在PZEM004T结构体中。
4.读取PZEM004T结构体中的测量参数,其参数都是整数,是实际值的10或100倍,需要自己转换成最终的结果,请参考模块的说明书转换。
调用PZEM004T_EnergyClear(void); //清零电能
PZEM004T显示效果
PZEM004T实物图1
PZEM004T实物图1
单片机源程序如下:
- /*!
- * COPYRIGHT NOTICE
- * Copyright (c) 2019,CQ
- * All rights reserved.
- *
- *
- *
- *
- * @file main.c
- * @brief
- * @author CQ
- * @version V1.0
- */
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "PZEM004T.h"
- int main(void)
- {
-
- Cache_Enable(); //打开L1-Cache
- HAL_Init(); //初始化HAL库
- Stm32_Clock_Init(160,5,2,4); //设置时钟,400Mhz
- delay_init(400); //延时初始化
- uart_init(115200); //串口初始化
- LED_Init(); //初始化LED
- LCD_Init(); //初始化LCD
- PZEM004T_init();
- POINT_COLOR=RED;
- LCD_Clear(WHITE);
- LCD_ShowString(10,40,300,32,32,"PZEM-004T Test");
- LCD_ShowString(10,80,240,24,24,"U=");
- LCD_ShowString(10,120,240,24,24,"I=");
- LCD_ShowString(10,160,240,24,24,"P=");
- LCD_ShowString(10,200,240,24,24,"PF=");
- LCD_ShowString(10,240,240,24,24,"F=");
- LCD_ShowString(10,280,240,24,24,"EN=");
- while(1)
- {
- printf("V=%d \n",PZEM004T.AC_Voltage);
- printf("I=%d \n",PZEM004T.AC_Current);
- printf("P=%d \n",PZEM004T.AC_Power);
- printf("PF=%d \n",PZEM004T.AC_PowerFactor);
- printf("Energy=%d \n",PZEM004T.AC_Energy);
- printf("F=%dHZ \n",PZEM004T.AC_Freq);
-
- LCD_ShowNum(40,80,PZEM004T.AC_Voltage,4,24);
- LCD_ShowNum(40,120,PZEM004T.AC_Current,4,24);
- LCD_ShowNum(40,160,PZEM004T.AC_Power,4,24);
- LCD_ShowNum(40,200,PZEM004T.AC_PowerFactor,4,24);
- LCD_ShowNum(40,240,PZEM004T.AC_Freq,4,24);
- LCD_ShowNum(40,280,PZEM004T.AC_Energy,4,24);
-
- LED0_Toggle;
- PZEM004T_ReadMeasValue();
- delay_ms(1000);
- }
- }
复制代码
所有资料51hei提供下载:
Stm32_PZEM004TTestDemo.7z
(920.62 KB, 下载次数: 135)
|