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

怎么检测交流信号有效值

[复制链接]
kingg209 提问时间:2014-3-28 16:43 /
可能问题有点弱啊!怎么用定时器确定一个正弦信号的周期呢?定时器都是用来定时触发的,而不是在定时间内做某一件事得把?不明白!
像这个
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)   //判断中断标志位是否为1;为1则中断响应啦,0则没有
    {
  TIM_ClearITPendingBit(TIM2, TIM_IT_Update);        //清除中断挂起位

执行操作
}

而没有,
while(TIM_GetITStatus(TIM2, TIM_IT_Update) == RESET)
{
  执行操作
}
就想在固定的一段时间内检测信号,然后用均方根计算有效值,怎么弄呢?
谢谢啊!
收藏 评论9 发布时间:2014-3-28 16:43

举报

9个回答
LIUBEIHUA 回答时间:2014-4-2 18:24:21

RE:怎么检测交流信号有效值

每周期采样一定数量的信号,最好是奇数理论上越多越好,实际上不少于16个就够了.再求均方根就是有效值。
fengye5340 回答时间:2014-3-28 17:28:35

RE:怎么检测交流信号有效值

一般测试周期的话,都是用信号捕获功能,楼主可以详细看一下定时器的应用,你说的定时应用只是其中一个!
青檬 回答时间:2014-3-31 15:49:16

RE:怎么检测交流信号有效值

一种方法是使用有效值检测芯片,
还有一种方法就是每个周期采样,然后计算
灰小子-1888763 回答时间:2014-3-31 22:58:46

RE:怎么检测交流信号有效值

常用的方法:
方法一:用外部中断进行捕获
方法二:周期采样,计算
有缘于你 回答时间:2014-4-1 20:36:31

RE:怎么检测交流信号有效值

先进行周期采样, 再通过计算求出有效值
kingg209 回答时间:2014-4-2 19:22:18

回复:怎么检测交流信号有效值

可这样为什么不对呢?
 利用stm32定时器3产生0.5s的定时,用current detect程序启动定时器,循环检测adc信号,定时器中断程序改变adcflag 值,current detect程序停止定时器。
但现在进入不了定时器3中断程序。怎么回事呢?
 
void Init_TIMER3(void)//初始化
{
 TIM_TimeBaseInitTypeDef  TIM_BaseInitStructure;   //
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    //!!
 TIM_DeInit( TIM3);                                //
 TIM_InternalClockConfig(TIM3);        //   
 TIM_BaseInitStructure.TIM_Period = 5000;    
  TIM_BaseInitStructure.TIM_Prescaler = 7199;     
 TIM_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟分割为0    
 TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;            
 TIM_TimeBaseInit(TIM3, &TIM_BaseInitStructure);    
 TIM_ClearFlag(TIM3, TIM_FLAG_Update);      //      
    TIM_ARRPreloadConfig(TIM3, DISABLE);     //
 TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);     // 
 //TIM_Cmd(TIM3, ENABLE);          // 
}
 
void TIM3_IRQHandler(void)//定时器3中断
{
 if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)   // 
  {
    TIM_ClearITPendingBit(TIM3, TIM_IT_Update);        //
     ADCflag=0;  
   }
}   
/*****************************************************************************
void Current_detect(void)
{
    ADCflag=1;
    TIMadc=0;
   TIM_Cmd(TIM3, ENABLE);
    while(ADCflag)
  {
     ADC_GetConversionValue(ADC1);     
     if(AD_Value[3]>AD_Value[8])  array_Ia[TIMadc]=AD_Value[3]-AD_Value[8];
     else     array_Ia[TIMadc]=AD_Value[8]-AD_Value[3];
     TIMadc++;    
 }
dzc2001 回答时间:2014-4-2 21:59:42

RE:怎么检测交流信号有效值

能想到的只有多采样然后计算了
dlyt03 回答时间:2014-4-7 21:29:27

RE:怎么检测交流信号有效值

利用单片机的定时器中比较器单元与捕捉器单元的硬件功能,通过两次脉冲边沿时间捕捉值的差值,得到脉冲周期值。
feiante-155820 回答时间:2014-4-12 23:08:07

RE:怎么检测交流信号有效值

利用定时器的捕获功能,捕获到数据后计算周期

所属标签

相似问题

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