久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19288|回復: 36
打印 上一主題 下一主題
收起左側

STM32單片機智能電表交流電壓電流程序設計(電流 電壓互感器TV1005M+TA1005M)

  [復制鏈接]
跳轉到指定樓層
樓主
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線_大頭    /
導線(只萬用板有)    /
焊錫    /

單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "lcd.h"
  6. #include "adc.h"
  7. #include <stdio.h>
  8. #include "timer.h"

  9. //char tabDataV[5];//打印電壓數組
  10. //char tabDataA[7];//打印電流數組
  11. //char tabDataP[9];//打印功率數組
  12. //char tabDataQ[12];//打印電量數組
  13. //char tabDataT[6];//打印時間數組
  14. char tabData[42];//打印時間數組

  15. unsigned int ACcurrent;                //市電電流
  16. unsigned int ACvolt;                //市電電壓
  17. unsigned long PowerWt=0;//功率
  18. float PowerQd=0;//功率
  19. unsigned char relayFlag=1;
  20. int main(void)
  21. {
  22.         u16 adcx;
  23.         float temp;
  24.         delay_init();                     //延時函數初始化         
  25.         uart_init(9600);                 //串口初始化為115200
  26.   TIM3_Int_Init(499,7199);//50ms           
  27.         LED_Init();                                  //初始化與LED連接的硬件接口
  28.   LED0=0;
  29.          Adc_Init();                                  //ADC初始化            

  30.         RELAY=1; //繼電器打開
  31.         relayFlag=1;        //繼電器狀態標識
  32.         delay_ms(4000);
  33.         
  34.         printf("AT+CIPMUX=1\r\n");                   //允許鏈接
  35.         delay_ms(1000);
  36.         printf("AT+CIPSERVER=1,8080\r\n");           //創建端口號8080
  37.         delay_ms(1000);
  38.         while(1)
  39.         {
  40.                 adcx=Get_Adc_Average(ADC_Channel_1,10);// PA1 交流電壓檢測口 ad轉換10次求平均值
  41.                 temp=(float)adcx*(3.3/4096);
  42.                 ACvolt=(unsigned int)(temp*303);//*303 互感器計算獲取 以及1K電阻 用示波器檢測校準得到
  43.                 if(ACvolt<15) ACvolt=0;
  44.                
  45.                 adcx=Get_Adc_Average(ADC_Channel_2,10);        // PA2                                                       求平均值
  46.                 temp=(float)adcx*(3.3/4096);
  47.                 if(temp>0.02)
  48.                 {
  49.                         ACcurrent=(unsigned int)((temp-0.02)*3100);//*3950 互感器計算獲取擴大1000倍 以及1K電阻 用示波器檢測校準得到 0.02去除波動 防止誤判斷
  50.                 }
  51.                 else
  52.                 {
  53.                                 ACcurrent=0;
  54.                 }
  55.                 if(ACcurrent<50)ACcurrent=0;//濾除電流
  56.                 PowerWt=ACvolt*ACcurrent;                 //功率
  57.                
  58.                 if(dealFlag==1)//處理標志
  59.                 {
  60.                         dealFlag=0;
  61.                         PowerQd=(float)PowerWt*1/60.0/60.0+PowerQd;        //累計電量 1表示1s 因為電流擴大了1000倍 因此該處也擴大了1000倍 且此處功率單位為W 除以1000為千瓦 結果為度 1度=1千瓦時
  62.                 }
  63.                
  64.                 if(times>=9999)
  65.                 {times=0;}
  66.                
  67.                 if(PowerWt/1000>200)
  68.                 {        
  69.                         RELAY=0;                        //關閉繼電器
  70.                         relayFlag=0;
  71.                 }               

  72.                 sprintf(tabData,"V:%03dA:%05dP:%07luQ:%010.2fT:%04dR:1",ACvolt,ACcurrent,PowerWt,PowerQd,times);               
  73. //                sprintf(tabDataA,"A:%05d",ACcurrent);//電流
  74. //                sprintf(tabDataP,"P:%07lu",PowerWt);//功率
  75. //                sprintf(tabDataQ,"Q:%010.2f",PowerQd);//電量                        
  76. //                sprintf(tabDataT,"T:%04d",times);//時間
  77.                 if(relayFlag==1)
  78.                 {sprintf(tabData,"V:%03dA:%05dP:%07luQ:%010.2fT:%04dR:1",ACvolt,ACcurrent,PowerWt,PowerQd,times);                }//打印數據
  79.                 else
  80.                 {sprintf(tabData,"V:%03dA:%05dP:%07luQ:%010.2fT:%04dR:0",ACvolt,ACcurrent,PowerWt,PowerQd,times);                }//打印數據
  81.         
  82.                
  83.                 printf("AT+CIPSEND=0,42\r\n");                //發送固定字節數據的at命令
  84.                 delay_ms(200);
  85.                 printf(tabData);                                        //發送數據
  86.                 delay_ms(200);

  87.                 LED0=!LED0;                //數據發送        
  88.                 delay_ms(200);                //延時
  89.         }                                                                                            
  90. }        
復制代碼
  1. #include "adc.h"
  2. #include "delay.h"
  3.    
  4.                   
  5. //初始化ADC
  6. //這里我們僅以規則通道為例
  7. //我們默認將開啟通道0~3                                                                                                                                          
  8. void  Adc_Init(void)
  9. {         
  10.         ADC_InitTypeDef ADC_InitStructure;
  11.         GPIO_InitTypeDef GPIO_InitStructure;

  12.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1        , ENABLE );          //使能ADC1通道時鐘


  13.         RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //設置ADC分頻因子6 72M/6=12,ADC最大時間不能超過14M

  14.         //PA1 作為模擬通道輸入引腳                        
  15.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;
  16.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                //模擬輸入引腳
  17.         GPIO_Init(GPIOA, &GPIO_InitStructure);        

  18.         ADC_DeInit(ADC1);  //復位ADC1,將外設 ADC1 的全部寄存器重設為缺省值

  19.         ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;        //ADC工作模式:ADC1和ADC2工作在獨立模式
  20.         ADC_InitStructure.ADC_ScanConvMode = DISABLE;        //模數轉換工作在單通道模式
  21.         ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;        //模數轉換工作在單次轉換模式
  22.         ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;        //轉換由軟件而不是外部觸發啟動
  23.         ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;        //ADC數據右對齊
  24.         ADC_InitStructure.ADC_NbrOfChannel = 1;        //順序進行規則轉換的ADC通道的數目
  25.         ADC_Init(ADC1, &ADC_InitStructure);        //根據ADC_InitStruct中指定的參數初始化外設ADCx的寄存器   

  26.   
  27.         ADC_Cmd(ADC1, ENABLE);        //使能指定的ADC1
  28.         
  29.         ADC_ResetCalibration(ADC1);        //使能復位校準  
  30.          
  31.         while(ADC_GetResetCalibrationStatus(ADC1));        //等待復位校準結束
  32.         
  33.         ADC_StartCalibration(ADC1);         //開啟AD校準

  34.         while(ADC_GetCalibrationStatus(ADC1));         //等待校準結束

  35. //        ADC_SoftwareStartConvCmd(ADC1, ENABLE);                //使能指定的ADC1的軟件轉換啟動功能

  36. }                                 
  37. //獲得ADC值
  38. //ch:通道值 0~3
  39. u16 Get_Adc(u8 ch)   
  40. {
  41.           //設置指定ADC的規則組通道,一個序列,采樣時間
  42.         ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );        //ADC1,ADC通道,采樣時間為239.5周期                                      
  43.   
  44.         ADC_SoftwareStartConvCmd(ADC1, ENABLE);                //使能指定的ADC1的軟件轉換啟動功能        
  45.          
  46.         while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待轉換結束

  47.         return ADC_GetConversionValue(ADC1);        //返回最近一次ADC1規則組的轉換結果
  48. }

  49. u16 Get_Adc_Average(u8 ch,u8 times)
  50. ……………………

  51. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


所有資料51hei提供下載:
12、器件清單(針對本設計,1對1,直接用).zip (7.67 KB, 下載次數: 489)
源程序(C語言含詳細備注).7z (927.4 KB, 下載次數: 519)
5、基于STM32F103單片機智能電表交流電壓電流設計PCB.pdf (85.86 KB, 下載次數: 775)


   
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏26 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:150611 發表于 2019-5-4 19:41 | 只看該作者
好資料,來仔細研究研究
回復

使用道具 舉報

板凳
ID:476217 發表于 2019-5-6 07:45 | 只看該作者
好資料。很需要。我能檢測到電壓就是不準,不知道怎么校準,是不是還需要一個校準電源?研究中。
回復

使用道具 舉報

地板
ID:437641 發表于 2019-5-29 22:14 來自手機 | 只看該作者
你好,可以問你一些問題嗎?
回復

使用道具 舉報

5#
ID:375265 發表于 2019-6-18 08:49 | 只看該作者
好資料,來仔細研究研究
回復

使用道具 舉報

6#
ID:582900 發表于 2019-7-15 19:50 | 只看該作者
你好, 這個是怎么測試電壓有效值的呢?
回復

使用道具 舉報

7#
ID:265454 發表于 2019-10-18 15:24 | 只看該作者
很需要呀
回復

使用道具 舉報

8#
ID:412814 發表于 2019-10-21 08:47 | 只看該作者
正需要這個資料呢,謝謝樓主
回復

使用道具 舉報

9#
ID:76408 發表于 2019-11-16 09:35 | 只看該作者
樓主辛苦,收藏了,,,,。
回復

使用道具 舉報

10#
ID:500009 發表于 2019-11-23 13:16 來自手機 | 只看該作者
正好需要,多謝分享
回復

使用道具 舉報

11#
ID:76408 發表于 2019-11-27 13:58 | 只看該作者
謝謝樓主,我下載了試試看行不行。
回復

使用道具 舉報

12#
ID:700642 發表于 2020-3-1 15:11 | 只看該作者
學習一下,不知道直接用esp8266行不行
回復

使用道具 舉報

13#
ID:75468 發表于 2020-3-5 16:37 | 只看該作者
非常好的資料,謝謝樓主的分享。
回復

使用道具 舉報

14#
ID:696302 發表于 2020-3-11 17:39 | 只看該作者
正需要這個呢 感謝分享
回復

使用道具 舉報

15#
ID:729780 發表于 2020-4-15 15:17 | 只看該作者
謝謝樓主,研究一下
回復

使用道具 舉報

16#
ID:730711 發表于 2020-4-17 16:27 | 只看該作者
謝謝分享!
回復

使用道具 舉報

17#
ID:730711 發表于 2020-4-17 16:29 | 只看該作者
謝謝分享!
回復

使用道具 舉報

18#
ID:806637 發表于 2020-7-22 11:02 | 只看該作者
只有3個資料是嗎
回復

使用道具 舉報

19#
ID:295874 發表于 2020-8-2 09:55 | 只看該作者
這程序大致看了一下,測試交流電壓,能這樣子用嗎?這樣子測試直流電可以,交流電還是需要DFT比較準確。
回復

使用道具 舉報

20#
ID:410617 發表于 2020-8-16 22:22 | 只看該作者
特別好的的資料,剛好要做這樣的項目
回復

使用道具 舉報

21#
ID:792111 發表于 2020-8-25 13:06 | 只看該作者
電流檢測模塊是什么型號的呢?有沒有原理圖?
回復

使用道具 舉報

22#
ID:87000 發表于 2020-8-26 15:32 | 只看該作者
先下載看看怎么樣。要是一個壓縮包就好了。
回復

使用道具 舉報

23#
ID:108573 發表于 2020-8-27 08:41 | 只看該作者
有傅立葉變換部分嗎,可以算功率因數和頻率等電參量不
回復

使用道具 舉報

24#
ID:214628 發表于 2020-9-17 10:13 | 只看該作者
這個兄弟,資料好像不全啊。原理圖沒有,資料簡介使用說明之類的也沒有,能全部提供一下嗎。
回復

使用道具 舉報

25#
ID:69829 發表于 2020-11-23 21:58 | 只看該作者
好資料,最近在做三相電的電流電壓檢測,應該可以參考參考
回復

使用道具 舉報

26#
ID:229137 發表于 2021-3-11 16:33 | 只看該作者
看看,正好用到
回復

使用道具 舉報

27#
ID:597820 發表于 2021-3-12 08:36 | 只看該作者
電壓檢測,應該可以參考
回復

使用道具 舉報

28#
ID:767852 發表于 2021-3-15 18:26 | 只看該作者
沒用啊,上面的采集模塊綠色板子買不到,也不知道型號,手機端的APP也沒有,怎么可能照著做出來
回復

使用道具 舉報

29#
ID:1014660 發表于 2022-3-31 23:09 | 只看該作者
想要組裝圖
回復

使用道具 舉報

30#
ID:818203 發表于 2022-4-28 18:48 來自手機 | 只看該作者
變壓器的名字
回復

使用道具 舉報

31#
ID:1054620 發表于 2022-11-29 13:54 | 只看該作者
好資料,借鑒研究一下
回復

使用道具 舉報

32#
ID:236020 發表于 2023-10-20 18:51 | 只看該作者
有一個項目要測交流電壓,這個下載了學習一下. 謝謝分享
回復

使用道具 舉報

33#
ID:598178 發表于 2023-10-30 16:17 | 只看該作者
好資料,MARK一下
回復

使用道具 舉報

34#
ID:1110374 發表于 2024-1-29 23:44 | 只看該作者
請問精度怎么樣
回復

使用道具 舉報

35#
ID:1110374 發表于 2024-1-31 17:41 | 只看該作者
這PCB文件也太水了吧,就一個背板圖,啥電路都沒有
回復

使用道具 舉報

36#
ID:1111205 發表于 2024-3-6 20:54 | 只看該作者
有人知道這個交流電壓電流檢測模塊電路(TA1005、TV005)電路是怎么設計的?
回復

使用道具 舉報

37#
ID:1111686 發表于 2024-5-8 17:28 | 只看該作者
為什么我互感器輸出的是負壓
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久免费看 | www.日韩| 成人av一区| 能免费看的av | 欧美操操操| 日韩福利在线 | 在线观看成人 | 熟女毛片| 自拍视频网 | 亚洲电影免费 | 精品国产一区一区二区三亚瑟 | 久久精品一区二区 | 成人超碰 | av天空| 亚洲精品第一国产综合野 | 欧美中文字幕一区二区 | 99久久精品一区二区毛片吞精 | 97色在线观看免费视频 | 一级片免费在线观看 | 国产精品欧美精品日韩精品 | 免费成人毛片 | 干干干日日日 | 久久99精品久久久久久国产越南 | 毛片av免费在线观看 | 欧美自拍一区 | 神马久久久久久久久久 | 亚洲一区国产 | 超碰人人在线 | 99久久亚洲 | 一区二区三区视频在线 | 亚洲一区二区三区在线播放 | 免费激情网站 | av午夜激情| 亚洲国产欧美国产综合一区 | 日韩成人免费视频 | 一本一道久久a久久精品蜜桃 | 羞羞视频免费观看 | 欧美激情a∨在线视频播放 成人免费共享视频 | 免费在线观看av网址 | 日韩欧美亚洲综合 | 51ⅴ精品国产91久久久久久 |