找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3979|回復: 1
收起左側

基于stm32的智能插座程序設計,hlw8012和DHT11和iaq等傳感器設計代碼

[復制鏈接]
ID:486397 發(fā)表于 2019-3-7 17:18 | 顯示全部樓層 |閱讀模式
基于stm32的智能插座設計,其中包含hlw8012和DHT11和iaq等傳感器設計代碼,用于測量電流電壓功率和溫度濕度和空氣中的TVOC值。同時也用到了i2c。

單片機源程序如下:
  1. #include "pbdata.h"


  2. extern u8 P_mode_flag;
  3. extern u8 I_mode_flag;
  4. extern u8 V_mode_flag;
  5. extern u8 close_IT_flag;

  6. u8 select_mode(u8 Mode)//默認為電流模式,返回值為當前的模式
  7. {

  8.    if(Mode ==1)
  9.          {
  10.             HLW8012_SEL_L;
  11.          }
  12.          else
  13.    {
  14.             HLW8012_SEL_H;
  15.          }
  16.          return Mode ;
  17.                  
  18. }
  19. float HLW_avg(float *PULSE_T)
  20. {
  21.           u16 k;
  22.           float  avg_8012=0;
  23.     for(k=0;k<10;k++)
  24.         {
  25.                  avg_8012= avg_8012+*(PULSE_T+k);
  26.            
  27.         }
  28.         avg_8012=avg_8012/10;
  29.         return avg_8012 ;
  30. }

  31. float HLW_V_DATA_CAL(float mea_V,float avg_8012)
  32. {
  33.   mea_V=(cal_V*cal_V_T)/avg_8012;
  34.         return mea_V;
  35. }
  36. float HLW_I_DATA_CAL(float mea_I,float avg_8012)
  37. {
  38.   mea_I=(cal_I*cal_I_T)/avg_8012;
  39.         return mea_I;
  40. }

  41. float HLW_P_DATA_CAL(float mea_P,float avg_8012)
  42. {
  43.   mea_P=(cal_P*cal_P_T)/avg_8012;
  44.         return mea_P;
  45. }

  46. void HLW_close_IT(void)
  47. {
  48.                                  TIM3->CR1 &= ~(0x01);
  49.                EXTI->IMR&=~(1<<1);//屏蔽line11上的中斷
  50.                      EXTI->IMR&=~(1<<2);//屏蔽line11上的中斷
  51.                                         P_mode_flag=0;
  52.                                         I_mode_flag=0;
  53.                                         V_mode_flag=0;
  54. }
  55. float HLW_P_factor(float mea_P,float mea_V,float mea_I)
  56. {
  57.     float P_factor;
  58.           P_factor=mea_P/(mea_V *mea_I );
  59.           return P_factor;
  60. }
  61. void HLW_8012_data(float mea_P,float mea_V,float mea_I,float P_factor)
  62. {
  63.                                                     printf("有效電壓為: %.3f  V\r\n",mea_V);        
  64.                                                                 printf("有效電流為: %.3f  A\r\n",mea_I);
  65.                                                                 printf("有功功率為: %.3f  W\r\n",mea_P);
  66.                                                                 P_factor =HLW_P_factor(mea_P,mea_V,mea_I);
  67.                                                                 printf("功率因數(shù)為: %3f  \r\n",        P_factor);
  68. }
復制代碼
  1. #include "pbdata.h"




  2. float mea_P;              //測量的有效功率
  3. float mea_apparent_P_;    //測量的視在功率
  4. float P_factor ;          //測量的功率因數(shù)
  5. float mea_V;              //測量的電壓
  6. float mea_I;              //測量的電流


  7. u8 shift_Mode=0;

  8. u8 P_mode_flag=0;
  9. u8 I_mode_flag=0;
  10. u8 V_mode_flag=0;
  11. u8 close_IT_flag=0;


  12. u8 DHT11_sd;       
  13. u8 DHT11_wd;       




  14. u8 iaq_Read_buf[9];       //讀取的數(shù)據(jù)存放的數(shù)組
  15. u16 iaq_pred;
  16. u8 iaq_status;
  17. s32 iaq_res;
  18. u16 iaq_tvoc;

  19. u32 ad=0; //存放ADC1讀取的數(shù)值
  20. u32 ad1=0;//存放ADC2讀取的數(shù)值
  21. u8 i=0;
  22. u8 j=0;

  23. double gl=0.5;
  24. double dy=1,dl=0.3;       




  25. int main(void)
  26. {

  27.    RCC_Configuration();        //系統(tǒng)時鐘初始化
  28.    GPIO_Configuration();//端口初始化
  29.    USART_Configuration();//串口配置
  30.    NVIC_Configuration(); //中斷優(yōu)先級配置
  31.    ADC_Configuration();        //ADC
  32.          ADC2_Configuration();
  33.          I2C_Self_Init();//軟件模擬I2C
  34.    EXTI_Configuration();
  35.         // TIM3_Configuration();//定時中斷配置
  36.          LCD_Init();           //液晶屏初始化
  37.          LCD_Show();
  38.        
  39.   while(1)
  40.    {

  41.    }
  42. }
復制代碼


所有資料51hei提供下載:
程序.zip (3.26 KB, 下載次數(shù): 78)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:202803 發(fā)表于 2020-4-1 10:18 | 顯示全部樓層
您好,,請教一下,hlw8012這個芯片怎么通過頻率算出功率和電流啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表