Ⅰ 基于单片机实现两个交流信号起始相位差的计算方法 怎么测两个信号的时间差啊~能把程序代码发给我么
使用2个光耦+电阻+二极管,把2个交流信号变成2个5V的(具体电压根据单片机的工作电压决定)方脉冲波,接到单片机的引脚上,使用外部中断方式,测量2个信号的上升沿或下降沿的时间差即可。
不同单片机及晶振频率,代码不同,自己写吧。
Ⅱ 单片机怎么测量两个同频率的正弦波的相位差外部中断怎么用
这个好办,正弦波可以整形成方波,既然频率一致,整形之后的方波频率也是一样的。接下来就是测量2个方波的时间差了,方波平率已知(或者可以测量得到),他们的时间差也可以测量得到,相位差呼之欲出了吧?……
Ⅲ msp430单片机用定时器A测量方波相位差的程序如何编写真的很急!拜托了!
这个简单,把两个方波进行异或,用430单片机的定时器A测量异或后的方波的脉冲宽度,在对测量数据进行简单的计算就可得到相位差。。。具体程序如下:
P1SEL |= BIT2; //设置P1.2端口为功能模块使用
TACTL |=TACLR;
TACTL = TASSEL_2+TAIE+MC1; //定时器A时钟信号选择SMCLK 8M,清计数寄存器,使能中断,同时设置定时器A计数模式为连续增计模式
CCTL1 =CM0+SCS+CAP+CCIE; //输入上升沿捕获,同步,capture模式 CCI0A为捕获信号源,中断使能
//TACCTL1 &=~CCIFG; //清CCR2 的标志位
//中断允许
_EINT();
LPM0;
}
#pragma vector=TIMERA1_VECTOR //定时器A中断处理
__interrupt void timer_a(void)
{
switch(TAIV) //向量查询
{ case 2: //捕获中断
if(CCTL1&CM0) //上升沿
{
CCTL1=(CCTL1&(~CM0))|CM1; //更变设置为下降沿触发
start=TACCR1; //记录初始时间
overflow=0; //溢出计数变量复位
}
else if(CCTL1&CM1) //下降沿
{
CCTL1=(CCTL1&(~CM1))|CM0; //更变设置为上升沿触发
end=TACCR1; //用start,end,overflow计算脉冲宽度
TACTL &=~TAIE; //不使能中断
CCTL1 &=~CCIE;
P1SEL &=~BIT2;
_DINT();
LPM0_EXIT;
}
break;
case 10: //定时器溢出中断
overflow++;
break; //溢出计数加1
default:break;
}
}
然后再对得到的start,end,overflow处理计算即可。。。
Ⅳ msp430单片机用定时器A测量方波相位差的程序如何编写真的很急!拜托了!
这个简单,把两个方波进行异或,用430单片机的定时器A测量异或后的方波的脉冲宽度,在对测量数据进行简单的计算就可得到相位差。。。具体程序如下:
P1SEL
|=
BIT2;
//设置P1.2端口为功能模块使用
TACTL
|=TACLR;
TACTL
=
TASSEL_2+TAIE+MC1;
//定时器A时钟信号选择SMCLK
8M,清计数寄存器,使能中断,同时设置定时器A计数模式为连续增计模式
CCTL1
=CM0+SCS+CAP+CCIE;
//输入上升沿捕获,同步,capture模式
CCI0A为捕获信号源,中断使能
//TACCTL1
&=~CCIFG;
//清CCR2
的标志位
//中断允许
_EINT();
LPM0;
}
#pragma
vector=TIMERA1_VECTOR
//定时器A中断处理
__interrupt
void
timer_a(void)
{
switch(TAIV)
//向量查询
{
case
2:
//捕获中断
if(CCTL1&CM0)
//上升沿
{
CCTL1=(CCTL1&(~CM0))|CM1;
//更变设置为下降沿触发
start=TACCR1;
//记录初始时间
overflow=0;
//溢出计数变量复位
}
else
if(CCTL1&CM1)
//下降沿
{
CCTL1=(CCTL1&(~CM1))|CM0;
//更变设置为上升沿触发
end=TACCR1;
//用start,end,overflow计算脉冲宽度
TACTL
&=~TAIE;
//不使能中断
CCTL1
&=~CCIE;
P1SEL
&=~BIT2;
_DINT();
LPM0_EXIT;
}
break;
case
10:
//定时器溢出中断
overflow++;
break;
//溢出计数加1
default:break;
}
}
然后再对得到的start,end,overflow处理计算即可。。。
Ⅳ 正弦波经过移相电路后产生相位差,用单片机或者是STM32怎样测这个相位差呢
提供一个思路供参考:
把两路正弦波变为方波,用两个中断输入引脚和定时器测量两个跳变沿的时间差即可。
Ⅵ 急~~~怎么用单片机做一个"两路频率及相位差测量仪"
我给你一个思路,89C52有定时器T2,T2有自动捕获功能,你可以使用T2看看。
两路信号通过施密特触发器整形为方波之后再进行一次“异或”操作,得到一个周期性的方波信号,这个信号的频率等于原始信号的频率,占空比和两路信号的相位差有关。
Ⅶ 怎样测量两个同频率正弦信号的相位差,包括数值和符号
最直接的方法是将电压电流整形为方波后通过单片机等处理器的定时器测量两个方波上升沿或下降沿的时差及单个信号的周期,时差除以周期乘以360°就是相位差。需要正负号的话,上述结果再减去180°。
上述方法特点是简单。但是,对于波形有较大毛刺时,测量误差较大。另外一种方法是采用模拟乘法器或数字乘法(高速采样,数值相乘乘法)的方法获取有功功率,有功功率注意视在功率得到功率因数,再根据功率因数换算相位角。
(7)单片机测量相位扩展阅读:
正弦信号作为一种基本信号,它具有非常有用的性质:
1、 两个同频率的正弦信号相加,虽然它们的振幅与相位各不相同,但相加的结果仍然是原频率的正弦信号。
2、如果有一个正弦信号的频率f1等于另一个正弦信号频率f的整数倍,即f1 =nf,则其合成信号是非正弦周期信号,其周期等于基波(上面那个频率为f的正弦信号就称作基波)的周期T= 1/f,也就是说合成信号是频率与基波相同的非正弦信号。
3、正弦信号对时间的微分与积分仍然是同频率的正弦信号。
Ⅷ 单片机怎么测量两个同频率的正弦波的相位差
单片机怎么测量两个同频率的正弦波的相位差
数字电路中,由TTL电子元器件组成电路使用的电平。电平是个电压范围,最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。
Ⅸ 如何用单片机测量正弦信号的相位差
你用的是什么单片机,带AD吗?如果带AD:让两个正选型号输入AD口(注意电平匹配),软件检测两个Vpp,用定时器求得峰值时间差,然后再换算
如果不带AD就先加一个AD芯片,如ADC0832就行
Ⅹ 请问怎么用51单片机实现 检测输入一个正弦波 检查其相位和其频率 给程序追加50分
首先,单片机测量正弦波的相位和频率,必须先将其变成方波,在过零点上升沿时边缘触发单片机。利用比较器电路时很容易做到。
相位是相对的,单片机检测不到正弦波的过零点离Y轴的时间,所以不能判断其相位是多少,但你可以自己设置一个基准作为单片机人为基准,当单片机测量到的正弦波过零点与这基准的时间就是你要的相位,但这并不代表这是标准的,当然通过调整基准的位置,可以得到接近标准的数据。
单片机测量频率,也就是测量两个方波之间的上升沿的时间,这时间的倒数就是频率。
如果是测量两个信号的相位差,则利用一个异或门处理一下则可。