|
發布時間: 2022-4-10 14:32
正文摘要:新人求助,因為近幾天完全沒有進展,所以發帖求助,另一方面,雖然是半成品,但測低頻還是蠻準的(小數點后一位),可以當個參考。出現問題如下:低頻時比較準,高頻時顯示頻率就會不停改變而且誤差較大。 仿真圖如 ... |
| 晶振改用有源溫度晶振試試,我也曾經試過,用15W單片機,用有源溫度晶振,用PCA采集頻率,校準后采集1HZ時,可以達到小數點第5位的精度,可惜這樣的精度還達不到我項目0.5PPM的要求,后來就沒再用了 |
| 只要你用的時基是晶振,測量頻率,做到6個有效數字的精度是沒有問題的。 |
yzwzfyz 發表于 2022-4-13 16:54 好像確實是這么回事 ![]() |
|
13#: 你們老師敷衍你了: 理論上:測量精度取決于你的時基精度(這里是你CPU使用晶振的精度),保守一點,計數時存在+-1的誤差,即測試數量存在+-1的不確定度。這是極限精度了。 實際上:由于軟件的不合理,捕捉不及時,中斷延時等等,不確定度會增加,這就要看你對單片機的認知度了,也考驗你編程的水平。懂匯編的人,會做得更精準。 例如:你用定時器做個2秒的脈沖,再打開一個計數器,CLK從引腳用被測的5MHz信號,用2秒脈沖作CLK的開關,即當脈沖為1時,讓CLK通過,則脈沖過后,理論上計數器應收到10M個脈沖。你說是也不是。 |
lkc8210 發表于 2022-4-13 11:54 因為我單片機是12T的,11.0592MHZ的晶振12分頻后為0.9216MHZ,測一個波形需要兩個機械周期,所以除2得460800HZ。當然這只是理論值,就跟您說的一樣我并沒有求出中斷一次和累加所消耗的時間,之所以確定是在460KHZ左右,是因為之前沒有使用74LS161和74LS01進行外部電路10分頻時,測得的界限大概為460KHZ(超過這個值誤差會變得特別大)。而我想的是,外部10分頻后,進入單片機(能被計算機準確測量的)的最大頻率應該也為460KHZ,那么按理論值來說,就應該是可以測到4.6M。當然這可能是比較不成熟的想法,如有疏漏的地方請指點。 |
|
460kHz是如何算出來的? 你知道89C52進出一次中斷要多久? 你知道char類型++一次要多久? |
| 尬住,我問了另一個導師這個問題,那個老師說實現這種要求(5MHZ以上且精度為小數點)很難,不知道是這個東西本身就很難實現,還是以我的水平現在很難實現....跟導師說了之后,導師讓我做到20MHZ精度不在要求,現在又有一個問題想請教大佬們,因為我是用的74LS161和74LS01在單片機外部構成的10分頻,按理說,11.0592MHZ的單片機大概可以測到460KHZ左右,外部分頻后應該可以測到4.6MHZ,但實際電路(非仿真)只能測到1MHZ。74系列芯片的最大工作頻率也大概在25MHZ以上應該沒問題,有大佬知道為什么或者你覺得會有那種情況導致這種問題呢?給一點思路也可以 |
|
低頻:在兩次輸入脈沖之間,數定時器的脈沖個數。 高頻:用定時器給出一個時間間隔,數此間隔中輸入脈沖的個數。 |
lkc8210 發表于 2022-4-11 14:28 很有參考價值,謝謝大佬。因為我使用的方法是單位時間內測量脈沖個數,在外部電路中使 用D觸發器達到脈沖上升沿時停止計數的作用,并且使用fx=(Nx*f0)/N0進行誤差的矯正。 (fx為待測信號頻率,f0為時鐘頻率即晶振大小,Nx為單位時間內所計待測信號的脈沖,N0為 單位時間內所計時鐘的脈沖個數) 。實際上達到的效果和您所說的差不多。而我目前所遇到的問題是在高頻時誤差較大并且不停 改變顯示值。經過查找資料和向周圍人了解,應該是在晶振不高的情況下,測高頻就會產生誤 差,除了換晶振好像沒什么好辦法,當然也可能是我剛剛接觸單片機,理解的不到位。大佬的 思路很清晰,我會去試試的。 |
| 頂一下 |
起昵稱真難 發表于 2022-4-11 11:33 高速脈沖計數, 低速測量脈沖的周期, 兩種結合就是固定采樣時間內計數N個脈沖+脈沖周期, 比如采用一個外部中斷源, 當脈沖下降沿開始計時100毫秒, 計數脈沖的個數N。 100ms時間到, 再計時T到下一個脈沖的下降沿。 那么總的脈沖數N+1個, 總的周期100ms+T.。 那么頻率 =(N+1)/(0.1+T) |
Y_G_G 發表于 2022-4-11 12:11 主要是導師讓我搞一下這個,說我基礎不太好,提的要求還比較苛刻,要測5MHZ以上,精度在小數點后,實在沒辦法了,才來求助 |
|
頻率計這種東西,感覺也沒什么用,不知道要用這玩意來干嘛 單片機推薦用STC8A8K64D,這個時鐘可以到33MHZ 而且可以DMA操作,最大程度提高CPU效率 使用32MHZ有源晶振,提高精度 可以加入SN74LVC1G14之類的觸發器進行整形 |
lkc8210 發表于 2022-4-11 11:24 是我拘泥于測頻法了,學到了,這就去試一下 |
|
基操不應該是用定時器2的捕獲模式來得出脈沖周期時間嗎? |
xuyaqi 發表于 2022-4-10 16:43 我用的這個單片機頻率為11.0592MHZ,外部電路經過了74LS161進行了10分頻,理論來說可以測到4MHZ,頻率太高時有誤差可以理解,但實際電路測量中,1MHZ就已經出現20~35的誤差了,個人感覺這個是有點大了。所以我覺得應該是代碼寫的沒那么好,中間漏測或者多測了些方波。 |
| 單片機主頻不夠高。電腦性能不夠好。 |
| 提醒一下,lcd_send函數注釋有誤,不是12864,是1602,忘改了。 |