|
Peacefair PZEM 004模塊測(cè)量交流電參數(shù)十分方便,可以應(yīng)用于開(kāi)發(fā)智能電表等,可惜商家只提供了windows上位機(jī),沒(méi)有提供單片機(jī)的使用例程,雖然編程也不復(fù)雜,但還是需要好些時(shí)間調(diào)試的,網(wǎng)上關(guān)于這個(gè)模塊的資料非常少,因此我將我寫(xiě)的驅(qū)動(dòng)貢獻(xiàn)出來(lái)以供大家參考,以便節(jié)約大家寶貴的時(shí)間。本程序基于stm32的HAL庫(kù)編寫(xiě),因此移植到其他stm32上十分方便。限于本人水平有限,程序中難免有bug,請(qǐng)大家依據(jù)實(shí)際應(yīng)用修改。
本驅(qū)動(dòng)程序用到了stm32的USART2串口,其串口接收中斷在usart.c中實(shí)現(xiàn)。
調(diào)用說(shuō)明:
1.包含文件: #include "PZEM004T.h"
2.調(diào)用PZEM004T_init();初始化USART2串口。
3.調(diào)用PZEM004T_ReadMeasValue();讀取測(cè)量結(jié)果,結(jié)果會(huì)保存在PZEM004T結(jié)構(gòu)體中。
4.讀取PZEM004T結(jié)構(gòu)體中的測(cè)量參數(shù),其參數(shù)都是整數(shù),是實(shí)際值的10或100倍,需要自己轉(zhuǎn)換成最終的結(jié)果,請(qǐng)參考模塊的說(shuō)明書(shū)轉(zhuǎn)換。
調(diào)用PZEM004T_EnergyClear(void); //清零電能
PZEM004T顯示效果
PZEM004T實(shí)物圖1
PZEM004T實(shí)物圖1
單片機(jī)源程序如下:
- /*!
- * 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(); //打開(kāi)L1-Cache
- HAL_Init(); //初始化HAL庫(kù)
- Stm32_Clock_Init(160,5,2,4); //設(shè)置時(shí)鐘,400Mhz
- delay_init(400); //延時(shí)初始化
- 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);
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
Stm32_PZEM004TTestDemo.7z
(920.62 KB, 下載次數(shù): 135)
2019-5-15 20:51 上傳
點(diǎn)擊文件名下載附件
工程文件
|
評(píng)分
-
查看全部評(píng)分
|