你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】基于STM32单片机的WIFI智能电表设计

[复制链接]
STMCU小助手 发布时间:2022-5-12 11:26
一.硬件方案
本设计由STM32单片机核心板电路、交流电压电流检测模块电路、WIFI模块电路组成。通过电压互感器TV1005M和电流互感器TA1005M分别检测交流电压和交流电流值,手机APP和WiFi模块互联后,可以实时显示交流电压、交流电流、功率和电量实时显示在手机上。当功率超过200W时,继电器自动断开。功率不超过200W时,可以手动控制继电器的开关。手机和WiFi模块连接后,手机上显示计时时间。
主要由STM32单片机核心板、交流电压电流检测模块、WIFI模块、指示灯组成;如图:

P{D7NN)F4}W65UP0]7T9$YY.png

二.设计功能
(1)220V市电经过互感器后产生微弱交流电,经过整流滤波后变为直流,然后通过单片机AD转换,然后换算出实际值。电压电流采集分别使用电压互感器TV1005M和电流互感器TA1005M。
(2)220V市电经过互感器后产生微弱交流电,经过整流滤波后变为直流,然后通过单片机AD转换,然后换算出实际值。电压电流采集分别使用电压互感器TV1005M和电流互感器TA1005M。
(3)当功率超过200W时,继电器自动断开。功率不超过200W时,可以手动控制继电器的开关。
(4)手机APP和设备WiFi模块连接后,手机上显示计时时间。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:

YXF@O5JNLT)$`}]M{O$G5EW.png

四.软件设计
(1)程序流程图

9}HTZGL6IJ(RK4NG)3}83NN.png

(2)主程序源码

  1. int main(void)
  2. {
  3.         u16 adcx;
  4.         float temp;
  5.         delay_init();                     //延时函数初始化         
  6.         uart_init(9600);                 //串口初始化为115200
  7.   TIM3_Int_Init(499,7199);//50ms           
  8.         LED_Init();                                  //初始化与LED连接的硬件接口
  9.   LED0=0;
  10.          Adc_Init();                                  //ADC初始化            

  11.         RELAY=1; //继电器打开
  12.         relayFlag=1;        //继电器状态标识
  13.         delay_ms(4000);
  14.         
  15.         printf("AT+CIPMUX=1\r\n");                   //允许链接
  16.         delay_ms(1000);
  17.         printf("AT+CIPSERVER=1,8080\r\n");           //创建端口号8080
  18.         delay_ms(1000);
  19.         while(1)
  20.         {
  21.                 adcx=Get_Adc_Average(ADC_Channel_1,10);// PA1 交流电压检测口 ad转换10次求平均值
  22.                 temp=(float)adcx*(3.3/4096);
  23.                 ACvolt=(unsigned int)(temp*303);//*303 互感器计算获取 以及1K电阻 用示波器检测校准得到
  24.                 if(ACvolt<15) ACvolt=0;
  25.                
  26.                 adcx=Get_Adc_Average(ADC_Channel_2,10);        // PA2                                                       求平均值
  27.                 temp=(float)adcx*(3.3/4096);
  28.                 if(temp>0.02)
  29.                 {
  30.                         ACcurrent=(unsigned int)((temp-0.02)*3100);//*3950 互感器计算获取扩大1000倍 以及1K电阻 用示波器检测校准得到 0.02去除波动 防止误判断
  31.                 }
  32.                 else
  33.                 {
  34.                                 ACcurrent=0;
  35.                 }
  36.                 if(ACcurrent<50)ACcurrent=0;//滤除电流
  37.                 PowerWt=ACvolt*ACcurrent;                 //功率
  38.                
  39.                 if(dealFlag==1)//处理标志
  40.                 {
  41.                         dealFlag=0;
  42.                         PowerQd=(float)PowerWt*1/60.0/60.0+PowerQd;        //累计电量 1表示1s 因为电流扩大了1000倍 因此该处也扩大了1000倍 且此处功率单位为W 除以1000为千瓦 结果为度 1度=1千瓦时
  43.                 }
  44.                
  45.                 if(times>=9999)
  46.                 {times=0;}
  47.                
  48.                 if(PowerWt/1000>200)
  49.                 {        
  50.                         RELAY=0;                        //关闭继电器
  51.                         relayFlag=0;
  52.                 }               

  53.                 sprintf(tabData,"V:%03dA:%05dP:%07luQ:%010.2fT:%04dR:1",ACvolt,ACcurrent,PowerWt,PowerQd,times);               
  54.                 if(relayFlag==1)
  55.                 {sprintf(tabData,"V:%03dA:%05dP:%07luQ:%010.2fT:%04dR:1",ACvolt,ACcurrent,PowerWt,PowerQd,times);                }//打印数据
  56.                 else
  57.                 {sprintf(tabData,"V:%03dA:%05dP:%07luQ:%010.2fT:%04dR:0",ACvolt,ACcurrent,PowerWt,PowerQd,times);                }//打印数据
  58.         
  59.                
  60.                 printf("AT+CIPSEND=0,42\r\n");                //发送固定字节数据的at命令
  61.                 delay_ms(200);
  62.                 printf(tabData);                                        //发送数据
  63.                 delay_ms(200);

  64.                 LED0=!LED0;                //数据发送        
  65.                 delay_ms(200);                //延时
  66.         }                                                                                            
  67. }        


复制代码

收藏 评论0 发布时间:2022-5-12 11:26

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版