欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機芯片內部ADC計算值不正確,為什么? [打印本頁]

作者: baocong2019    時間: 2021-8-5 23:10
標題: 單片機芯片內部ADC計算值不正確,為什么?
各位大佬,請教個問題,這邊使用STC15W408as主控芯片,測量通道內部第9的內部基準源電壓數值,為什么總是算不對呢?我放上源碼,請大神幫忙看下。使用的是ssop20的芯片,我看也沒有Vref這個管腳,默認不是電壓供電多少,計算的值就是多少嗎?為什么算出來的值怎么大

51hei圖片_20210805230916.png (243.54 KB, 下載次數: 43)

ADC初始化

ADC初始化

51hei圖片_202108052309161.png (158.84 KB, 下載次數: 59)

主函數調用

主函數調用

51hei圖片_202108052309162.png (78.69 KB, 下載次數: 42)

顯示結果

顯示結果

作者: csmyldl    時間: 2021-8-6 01:30
程序中讀出的是10位ADC轉換值, 并沒有算出來對應的電壓值來
作者: munuc_w    時間: 2021-8-6 10:23
AD轉換后的數據只是一個二進制數,定標后就是實際的物理量了。V=D*Vref/1024,D是AD后讀取的數據。
作者: baocong2019    時間: 2021-8-6 10:58
csmyldl 發表于 2021-8-6 01:30
程序中讀出的是10位ADC轉換值, 并沒有算出來對應的電壓值來

adc_value_Vcc=(unsigned long)(5000*(unsigned long)adc_value)/1024;
這句話不就是算電壓值的嗎?
作者: baocong2019    時間: 2021-8-6 10:58
munuc_w 發表于 2021-8-6 10:23
AD轉換后的數據只是一個二進制數,定標后就是實際的物理量了。V=D*Vref/1024,D是AD后讀取的數據。

adc_value_Vcc=(unsigned long)(5000*(unsigned long)adc_value)/1024;
我就是用這句話來根據這個公式算的

作者: 楊天想    時間: 2021-8-6 11:03
baocong2019 發表于 2021-8-6 10:58
adc_value_Vcc=(unsigned long)(5000*(unsigned long)adc_value)/1024;
我就是用這句話來根據這個公式算 ...

你是用內部vcc做參考電壓的嗎
作者: baocong2019    時間: 2021-8-6 11:05
楊天想 發表于 2021-8-6 11:03
你是用內部vcc做參考電壓的嗎

標定的供電電壓是5v  = 5000
然后來測外部通道
作者: Y_G_G    時間: 2021-8-6 13:31
PCON2默認是0x00
你在ADC初始化那加一條
PCON2=0x20;
試一下
作者: 1093562897    時間: 2021-8-6 15:27
假設有一個參考電壓,其中一個通道測量該參考電壓,那么就可以逆推出當前的電源電壓(電源電壓不一定有多么穩定,因此一般需要一個穩定的參考電壓),然后用逆推出的電源電壓去計算所要測量的電壓,你這個5000乘的有點夢幻了吧,這個5000直接用逆推出的電源電壓就可以了吧,,,如果對精度要求不高(直接乘5v就可以了),還有,我感覺程序有點問題 (ADC_RES<<8)|(ADC_RESL&3),這里有問題吧,把數增大了吧

作者: baocong2019    時間: 2021-8-6 17:09
1093562897 發表于 2021-8-6 15:27
假設有一個參考電壓,其中一個通道測量該參考電壓,那么就可以逆推出當前的電源電壓(電源電壓不一定有多么 ...

                adc_value_temp = (ADC_RES<<2)|(ADC_RESL&3);
最終問題解決了,是偏移位數的問題,高8位在RES寄存器,低2位在bit1-bit0,所以應該是左移2位,而不是左移8位。
作者: Y_G_G    時間: 2021-8-6 18:08
ADC_RESL&3
你看一下數據手冊,你這個公式對嗎?
所以我叫你PCON2改一下試一下
作者: zyluglugl    時間: 2021-8-6 18:18
學習了,雖然我不用STC單片機!
作者: baocong2019    時間: 2021-8-6 20:25
Y_G_G 發表于 2021-8-6 18:08
ADC_RESL&3
你看一下數據手冊,你這個公式對嗎?
所以我叫你PCON2改一下試一下

不是PCON2寄存器的問題,是移位出現了問題
作者: Y_G_G    時間: 2021-8-6 21:08
baocong2019 發表于 2021-8-6 20:25
不是PCON2寄存器的問題,是移位出現了問題

哦哦,匯編用習慣了,就覺得高位會變成低位了...
你這樣也是對的
但,如果你有看過PCON2的說明,你就會知道,你最初的公式是PCON2的ADRJ位為1時的公式,網上大多是用這個公式的,但ADRJ默認是0的,別人的程序是要設定PCON2的
這就是我提醒你修改PCON2試一下原因
作者: haokey    時間: 2021-8-10 11:48
ad值需要用公式換算會電壓值,而且檢測的電壓值要做降壓處理,不能超過參考電壓,再根據降壓比推算會原來的電壓值。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1