STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005M+TA1005M)

资料下载地址:STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005M+TA1005M)

1、摘要

5、基于STM32F103单片机智能电表交流电压电流设计
本设计由STM32单片机核心板电路+交流电压电流检测模块电路+WIFI模块电路+指示灯电路组成。
1、通过电压互感器TV1005M和电流互感器TA1005M分别检测交流电压和交流电流值,
2、手机APP和WiFi模块互联后,可以实时显示交流电压、交流电流、功率和电量实时显示在手机上。
3、当功率超过200W时,继电器自动断开。功率不超过200W时,可以手动控制继电器的开关。
4、手机和WiFi模块连接后,手机上显示计时时间。

 

名称:AUAISOUT000
IP及端口号:10.10.10.11:8080

接受内容:
V:123A:12345P:1234567Q:1234567.89T:123R:1

说明:(只增加R部分命令及发送内容,其他未变动)   
V:123        表示123V交流电压    字符5个长度不变 如12V 表示V:012
A:12345        表示12.345A交流电流     
P:1234567    表示1234.567W 瞬时功率 即缩小1000倍   
Q:1234567.89    表示1.23456789    度 缩小1000000倍 因为度的单位比较大kwh
T:1234        表示1234S 单片机设备运行时间
R:1        表示继电器接通 供电中 0表示断开即过载

发送内容:*或者#     #断开供电    *接通供电

元件清单:
极性电容    10uF
电阻    1K
STM32核心板    STM32_CORE
交流电压电流检测模块    交流电压电流检测
ESP8266/WIFI模块    WIFI_ESP8266
220V公头线    2芯公头
220V母头线    2芯母头
2.54单排座    3pin
2.54单排座    4pin
2.54单排座    5pin
2.54单排座    20pin
覆铜板或万用板    /
普通USB线_大头    /
导线(只万用板有)    /
焊锡    / 

2、代码

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "adc.h"
#include <stdio.h>
#include "timer.h"

//char tabDataV[5];//打印电压数组
//char tabDataA[7];//打印电流数组
//char tabDataP[9];//打印功率数组
//char tabDataQ[12];//打印电量数组
//char tabDataT[6];//打印时间数组
char tabData[42];//打印时间数组

unsigned int ACcurrent;                //市电电流
unsigned int ACvolt;                //市电电压
unsigned long PowerWt=0;//功率
float PowerQd=0;//功率
unsigned char relayFlag=1;
int main(void)
 { 
        u16 adcx;
        float temp;
        delay_init();                     //延时函数初始化          
        uart_init(9600);                 //串口初始化为115200
  TIM3_Int_Init(499,7199);//50ms           
        LED_Init();                                  //初始化与LED连接的硬件接口
  LED0=0;
         Adc_Init();                                  //ADC初始化            

        RELAY=1; //继电器打开
        relayFlag=1;        //继电器状态标识
        delay_ms(4000); 
        
        printf("AT+CIPMUX=1\r\n");                   //允许链接
        delay_ms(1000);
        printf("AT+CIPSERVER=1,8080\r\n");           //创建端口号8080
        delay_ms(1000); 
        while(1)
        {
                adcx=Get_Adc_Average(ADC_Channel_1,10);// PA1 交流电压检测口 ad转换10次求平均值
                temp=(float)adcx*(3.3/4096);
                ACvolt=(unsigned int)(temp*303);//*303 互感器计算获取 以及1K电阻 用示波器检测校准得到
                if(ACvolt<15) ACvolt=0;
                
                adcx=Get_Adc_Average(ADC_Channel_2,10);        // PA2                                                       求平均值
                temp=(float)adcx*(3.3/4096);
                if(temp>0.02)
                {
                        ACcurrent=(unsigned int)((temp-0.02)*3100);//*3950 互感器计算获取扩大1000倍 以及1K电阻 用示波器检测校准得到 0.02去除波动 防止误判断
                }
                else
                {
                                ACcurrent=0;
                }
                if(ACcurrent<50)ACcurrent=0;//滤除电流
                PowerWt=ACvolt*ACcurrent;                 //功率
                
                if(dealFlag==1)//处理标志
                {
                        dealFlag=0;
                        PowerQd=(float)PowerWt*1/60.0/60.0+PowerQd;        //累计电量 1表示1s 因为电流扩大了1000倍 因此该处也扩大了1000倍 且此处功率单位为W 除以1000为千瓦 结果为度 1度=1千瓦时
                }
                
                if(times>=9999)
                {times=0;}
                
                if(PowerWt/1000>200)
                {        
                        RELAY=0;                        //关闭继电器
                        relayFlag=0;
                }                

                sprintf(tabData,"V:%03dA:%05dP:%07luQ:%010.2fT:%04dR:1",ACvolt,ACcurrent,PowerWt,PowerQd,times);                
//                sprintf(tabDataA,"A:%05d",ACcurrent);//电流
//                sprintf(tabDataP,"P:%07lu",PowerWt);//功率
//                sprintf(tabDataQ,"Q:%010.2f",PowerQd);//电量                        
//                sprintf(tabDataT,"T:%04d",times);//时间
                if(relayFlag==1)
                {sprintf(tabData,"V:%03dA:%05dP:%07luQ:%010.2fT:%04dR:1",ACvolt,ACcurrent,PowerWt,PowerQd,times);                }//打印数据
                else 
                {sprintf(tabData,"V:%03dA:%05dP:%07luQ:%010.2fT:%04dR:0",ACvolt,ACcurrent,PowerWt,PowerQd,times);                }//打印数据
        
                
                printf("AT+CIPSEND=0,42\r\n");                //发送固定字节数据的at命令
                delay_ms(200);
                printf(tabData);                                        //发送数据
                delay_ms(200);

                LED0=!LED0;                //数据发送        
                delay_ms(200);                //延时
        }                                                                                            
}        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/515344.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++模板实参推断

模板实参推断 我们已经看到&#xff0c;对于函数模板&#xff0c;编译器利用调用中的函数实参来确定其模板参数。 从函数实参来确定模板实参的过程被称为模板实参推断。 也就是说&#xff0c;只有函数参数才配有模板实参推断&#xff0c;函数返回类型是不配有的 在模板实参…

DNS搭建

DNS搭建 一、DNS简介 1、概念 DNS&#xff08;Domain Name System&#xff09;是一种分布式的命名系统&#xff0c;用于将域名与其对应的IP地址相互映射。简单来说&#xff0c;DNS充当了互联网上的“电话簿”&#xff0c;帮助用户通过易于记忆的域名查找到相应的网络资源&am…

调用飞书获取用户Id接口成功,但是没有返回相应数据

原因&#xff1a; 该自建应用没有开放相应的数据权限。 解决办法&#xff1a; 在此处配置即可。

Python打包exe文件——pyinstaller模块

Python打包exe文件——pyinstaller模块 目录 Python打包exe文件——pyinstaller模块介绍安装打包文件夹模式打包单文件模式方式SPEC打包(推荐) 介绍 当要在没有python环境的设备上运行python文件时就可以将环境变量全部封装成exe文件发送给对方&#xff0c;此时就可以使用打包…

使用Python实现基本的线性回归模型

线性回归是一种简单而强大的统计学方法&#xff0c;用于预测一个因变量与一个或多个自变量之间的关系。在本文中&#xff0c;我们将使用Python来实现一个基本的线性回归模型&#xff0c;并介绍其原理和实现过程。加粗样式 什么是线性回归&#xff1f; 线性回归是一种用于建立…

upload-labs训练平台

GitHub&#xff1a;GitHub - Tj1ngwe1/upload-labs: 一个帮你总结所有类型的上传漏洞的靶场 把下好的文件夹之间拖入到小皮的WWW目录下就可以之间访问网址使用了 目录 Pass-01(前端JS的绕过) (1)抓包绕过 (2)在前端绕过 Pass-02&#xff08;content-type绕过&#xff09;…

kettle快速入门教程

探索数据的深邃奥秘&#xff0c;引领你踏入数据处理的殿堂&#xff01;Kettle&#xff08;Pentaho Data Integration&#xff09;的神奇魔力&#xff0c;将为你解锁数据世界的无限可能。本人基于公司业务实战整理的50篇精华Kettle系列文章&#xff0c;是你的密钥&#xff0c;让…

【大模型应用篇2】提示词实践-短剧文案

在上节课《【大模型应用篇1】学会对模型念咒语》带大家一起学习了提示词工程&#xff0c;我相信大部分朋友学完之后&#xff0c;还是有懵懂的&#xff0c;这节课带大家实操一下提示词的应用场景&#xff0c;现在短剧的创作很火&#xff0c;好看的短剧内容一定不会差&#xff0c…

java自动化测试-03-05java基础之字符串

1、字符串的定义 String是变量类型&#xff0c;表示字符串类型 name是给这个变量起的名字&#xff0c;这个是可以随意取的&#xff0c;只要不是java的关键字就可以了 表示赋值&#xff0c;右边的的内容表示 变量值&#xff0c;对字符串变量进行 赋值&#xff0c;需要用双引号…

idea建多级目录出现问题,报错找不到xml文件,如何解决?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

芯片工程系列(6)Chiplet封装

0 英语缩写 chiplet是一个合成词&#xff0c;由chip和let两个单词组合而成。它的意思是“小芯片”&#xff0c;通常指的是一种集成电路中的小型芯片系统级封装&#xff08;System in a Package&#xff0c;SiP&#xff09;系统级芯片&#xff08;System on a Chip&#xff0c;…

【并发编程】CountDownLatch

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳中求进&#xff0c;晒太阳 CountDownLatch 概念 CountDownLatch可以使一个获多个线程等待其他线程各自执行完毕后再执行。 CountDownLatch 定义了一个计数器&#xff0c;…

4.7 数组的读取和写入,type指令和一些杂项

4.7 数组的读取和写入&#xff0c;type指令和一些杂项 可以通过word ptr将db转为dw&#xff0c;然后按照dw的方式去存储数据 1. 段名也可以把其地址赋给变量 assume cs:codesg,ds:data,ss:stack data segmentdb 12,34dw 12,34db hello world data ends stack segmentdb 10 dup…

YOLOv5改进 | 低照度检测 | 2024最新改进CPA-Enhancer链式思考网络(适用低照度、图像去雾、雨天、雪天)

一、本文介绍 本文给大家带来的2024.3月份最新改进机制,由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations论文提出的CPA-Enhancer链式思考网络,CPA-Enhancer通过引入链式思考提示机制,实现了对未知退化条件下…

Shell GPT:直接安装使用的chatgpt应用软件

ShellGPT是一款基于预训练生成式Transformer模型&#xff08;如GPT系列&#xff09;构建的智能Shell工具。它将先进的自然语言处理能力集成到Shell环境中&#xff0c;使用户能够使用接近日常对话的语言来操作和控制操作系统。 官网&#xff1a;GitHub - akl7777777/ShellGPT: *…

OpenCV4.9开发之Window开发环境搭建

1.打开OpenCV所在github地址 2.点击opencv仓库,进入仓库详情,点击右下方的OpenCV 4.9.0进入下载页面 3.点击opencv-4.9.0-windows.exe下载 开始下载中... 下载完成 下载完成后,双击运行解压,默认解压路径,修改为c:/

企业家升维认知:引领企业持续发展的关键

一、引言 在快速变化的时代背景下&#xff0c;企业家面临着前所未有的挑战与机遇。新东方教育科技集团董事长俞敏洪曾深刻指出&#xff1a;“企业家本身要不断升维自己的认知&#xff0c;才能带领企业持续发展。”这句话不仅揭示了企业家认知升维的重要性&#xff0c;也为我们…

JRT简化开发环境

JRT是完全前后端分离的项目&#xff0c;实际工程是逻辑上完全前后端分离&#xff0c;代码层级和工程是不离的。这样就可以做到一键启动&#xff0c;同时又有分离的好处。开始页面后缀都沿用aspx&#xff0c;最开始考虑过修改后缀为html&#xff0c;当时觉得搞aspx也不错&#x…

Qt 的发展历史、现状与启示

Qt 最早在1991年由挪威的两位程序员 Eirik Chambe-Eng 和 Haavard Nord 开发&#xff0c;他们在1994年创立 Trolltech 公司&#xff08;奇趣科技&#xff09;正式经营软件业务。Qt 的第一个公众预览版于1995年面世&#xff0c;之后在2008年被诺基亚收购&#xff1b;2011年到201…

【Oracle篇】expdp/impdp高效完成全部生产用户的全库迁移(第四篇,总共四篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在扩展大数据方向的知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣️❣️…