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

怎么检测交流信号有效值

[复制链接]
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个回答
愚民点子 回答时间: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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版