请选择 进入手机版 | 继续访问电脑版
查看: 1749|回复: 9

【我为STM32站台】基于STM32F103VB的功率因数表

[复制链接]

该用户从未签到

66

主题

2191

帖子

740

蝴蝶豆

社区小助手

最后登录
2018-10-22
发表于 2016-8-30 20:03:37 | 显示全部楼层 |阅读模式
本帖最后由 wenyangzeng 于 2017-4-26 20:16 编辑

方案功能:
    功率因数是衡量电气设备效率高低的一个重要参数。在交流电路中,电压与电流之间的相位差(Φ)的余弦叫做功率因数,用符号cosΦ表示,在数值上,功率因数是有功功率和视在功率的比值,即cosΦ=P/S。本方案使用STM32F10X-128K-EVAL开发板实现了功率因数表的功能。
关键词:功率因数,STM32F103。
工作原理介绍
    通过电压互感器和电流互感器从供电系统采样电压和电流信号,经过比较器转换成方波,连接STM32F103VB的一个定时器捕捉输入和一个外部中断输入。在定时器捕捉输入的第一个触发中断时读取TIM3的初值,并清零TIM2的计数器值,在第二个触发中断时获得交流电的周期值TIM3。外部中断获得TIM2电流与电压的相位差(Φ)。通过运算得到功率因数值在LCD屏幕上显示。
    利用STM32F系列丰富的资源实施本方案很简单。STM32F103VB有多达8个定时器,可以根据实际应用灵活选择其中2个定时器来完成数据采样任务。STM32F10X-128K-EVAL已经配备TFT-LCD模块,软件稍加修改即可用于显示运行结果。
软件运行过程:
1、初始化后启动TIM2、TIM3。
2、TIM3-CC2捕捉使能,进入第一次中断清零TIM2-CNT并保存当前CNT3值
开启EXTI中断;第二次中断保存另一次CNT3值。获得一个交流电电压周期值。
3、EXTI中断读取CNT2值,获得交流电电流与电压的相位差。
4、主函数负责LCD刷新和 cosΦ运算。

流程图.jpg
                              流程图

开发板.JPG

                      STM32F10X-128K-EVAL开发板
视频:

  1. void TIM3_IRQHandler(void)
  2. {
  3.         if(TIM_GetITStatus(TIM3, TIM_IT_CC2) == SET)
  4.   {
  5.     TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);

  6.                 if(Capture3Number == 0)
  7.                         {
  8.       IC3ReadValue1 = TIM_GetCapture2(TIM3);
  9.       Capture3Number = 1;
  10.                         TIM2->CNT=0x0000;        
  11.                         EXTI->IMR |=0X0002;        
  12.                         }
  13.     else if(Capture3Number == 1)
  14.                         {
  15.                                 IC3ReadValue2 = TIM_GetCapture2(TIM3);
  16.                                 if (IC3ReadValue2 > IC3ReadValue1)
  17.                                                 Cycle = (IC3ReadValue2 - IC3ReadValue1);
  18.                                 else
  19.                                                 Cycle = ((0xFFFF - IC3ReadValue1) + IC3ReadValue2);
  20.                                 
  21.                                 
  22.                                 
  23.                                 TIM_ITConfig(TIM3, TIM_IT_CC2, DISABLE);
  24.                                 Number_Swap();
  25.                                 Capture3Number = 0;
  26.                         }
  27.         }

  28. }


  29. void EXTI1_IRQHandler(void)
  30. {
  31. if(EXTI_GetITStatus(EXTI_Line1) != RESET)
  32. {        EXTI_ClearITPendingBit(EXTI_Line1);
  33.         EXTI->IMR &=~0X0002;
  34.         Capture= TIM2->CNT;
  35. }
  36. }

  37. void Number_Swap(void)
  38. {        uint8_t DispBuf[6];
  39.         static double temp=0;
  40.                 a=(double)Cycle/360.0;
  41.                 b=(double)Capture/a;
  42.                       if(b >=180) b -=181;
  43.                         if(b<=90.0)                                
  44.                                  DispBuf[0]=' ';
  45.                            else
  46.                                 DispBuf[1]='-';
  47.         a        =        (float)cos((b*3.1415)/180.0)*100.0;
  48.         if(a<0)
  49.                 {        
  50.                 a        = a-0.499;
  51.                 a=(float)a*(-1);
  52.                 }
  53.                 else
  54.                 {
  55.                         a        = a+0.499;
  56.                 }
  57.                 temp=temp+a;
  58.                 i++;
  59.                 if(i==10)
  60.                 {

  61.                 data =temp*10;
  62.                         temp=0;
  63.                         i=0;
  64.         DispBuf[0]=' ';
  65.         DispBuf[2]=data%100000/10000+0x30;;
  66.         DispBuf[3]='.';
  67.         DispBuf[4]=data%10000/1000+0x30;
  68.         DispBuf[5]=data%1000/100+0x30;        
  69.         refcolumn = 219;
  70.         LCD_DisplayStringLine(Line5,DispBuf);
  71.                 }
  72.         TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE);
  73. }

  74. int main(void)
  75. {
  76.         SystemInit();        
  77.         RCC_Configuration();
  78.         SysTick_Init();        
  79.         BSP_init();
  80.         refcolumn = 249;
  81.         LCD_DisplayStringLine(Line3,"Power factor:");[media=swf,500,375]http://player.youku.com/player.php/sid/XMTcwNjE3OTIyNA==/v.swf[/media]
  82.         LCD_DrawRect(20,300,200,280);
  83.       
  84.   while (1)
  85.   {

  86.         }
  87. }
复制代码





http://player.youku.com/player.php/sid/XMTcwNjE3OTIyNA==/v.swf

评分

参与人数 1ST金币 +50 收起 理由
zero99 + 50 很给力!

查看全部评分

  ST全新域名已上线,大家奔走相告>>                    
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    1148

    主题

    4855

    帖子

    1

    蝴蝶豆

    管理员

    最后登录
    2018-10-22
    发表于 2016-8-31 09:12:53 | 显示全部楼层
    前排占位
    回复

    使用道具 举报

    该用户从未签到

    7

    主题

    203

    帖子

    0

    蝴蝶豆

    高级会员

    最后登录
    2017-12-26
    发表于 2016-8-31 10:16:07 | 显示全部楼层
    板凳搞起
      ST全新域名已上线,大家奔走相告>>                    
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    20

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    1970-1-1
    发表于 2016-9-6 11:08:28 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    49

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    1970-1-1
    发表于 2016-9-15 15:37:16 | 显示全部楼层
    不错。如果有视频演示就更好了
      ST全新域名已上线,大家奔走相告>>                    
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    66

    主题

    2191

    帖子

    740

    蝴蝶豆

    社区小助手

    最后登录
    2018-10-22
     楼主| 发表于 2016-9-16 10:36:08 | 显示全部楼层
    yuanwj32 发表于 2016-9-15 15:37
    不错。如果有视频演示就更好了

    有视频演示呀,在代码前,这个网页不知怎么的,视频一直链接不成功。
    http://v.youku.com/v_show/id_XMT ... ;spm=0.0.0.0.ZnlroP
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    50

    帖子

    0

    蝴蝶豆

    中级会员

    最后登录
    2017-12-12
    发表于 2017-1-4 13:36:39 | 显示全部楼层
    谢谢分享
      ST全新域名已上线,大家奔走相告>>                    
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    286

    帖子

    0

    蝴蝶豆

    金牌会员

    最后登录
    2018-6-26
    发表于 2017-7-17 09:08:11 | 显示全部楼层
    谢谢分享!!
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2017-11-3
    发表于 2017-11-3 17:18:00 | 显示全部楼层
    多谢分享
      ST全新域名已上线,大家奔走相告>>                    
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1334

    帖子

    3

    蝴蝶豆

    金牌会员

    最后登录
    2018-10-21
    发表于 2017-11-3 22:05:07 | 显示全部楼层
    谢谢分享!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|意法半导体STM32/STM8技术社区

    GMT+8, 2018-10-23 02:56 , Processed in 0.088848 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表