Ⅰ 基於單片機實現兩個交流信號起始相位差的計算方法 怎麼測兩個信號的時間差啊~能把程序代碼發給我么
使用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軸的時間,所以不能判斷其相位是多少,但你可以自己設置一個基準作為單片機人為基準,當單片機測量到的正弦波過零點與這基準的時間就是你要的相位,但這並不代表這是標準的,當然通過調整基準的位置,可以得到接近標準的數據。
單片機測量頻率,也就是測量兩個方波之間的上升沿的時間,這時間的倒數就是頻率。
如果是測量兩個信號的相位差,則利用一個異或門處理一下則可。