熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-11-28 22:22
正文摘要:對(duì),就是跳來跳去……我都沒想到這么不準(zhǔn)…… 用來測(cè)熱敏電阻的,用的電阻分壓,原理圖見下。 萬用表測(cè)量在1.65-1.75之間,但是用單片機(jī)adc就跳來跳去,一會(huì)零點(diǎn)幾,一會(huì)一點(diǎn)幾…… 如果把單片機(jī)靜置,單片機(jī)就會(huì) ... |
樓主你測(cè)出來精度多少,0.01v嗎,還是0.1v |
cocolala 發(fā)表于 2020-12-1 11:28 請(qǐng)問STC8H8K64U支持USB硬件接口仿真嗎? |
你好,樓主,你有么有用STC8H1K28這個(gè)單片機(jī)做PWM波形輸出的程序。這款單片機(jī)剛出來不久,找不到相關(guān)例程。如果有能不能分享一下。 |
經(jīng)常用AD,實(shí)際使用中出現(xiàn)的問題點(diǎn),簡(jiǎn)單總結(jié)下,參考下。 AD取樣,沒有特殊情況啥的,兩個(gè)算法必須,不然不專業(yè)! 1:注意輸入阻抗問題。電源要穩(wěn)定做好濾波處理,電源很重要,片內(nèi)AD一般都用電源當(dāng)基準(zhǔn)。 2:頭兩次取樣建議丟棄,速度允許,盡可能慢檔位 3:加【中位值平均濾波】 【全程區(qū)間線性插值】 4:如果不使用595或者1650 1638之類LED驅(qū)動(dòng)芯片,MCU頻率盡可能提高! 5:盡可能用外部晶振。 |
1922323908 發(fā)表于 2020-12-4 23:31 已經(jīng)解決了!根據(jù)樓上大佬的回復(fù),確實(shí)是使用了不正確的公式導(dǎo)致數(shù)據(jù)溢出。謝謝! |
wulin 發(fā)表于 2020-11-29 07:26 解決了!謝謝大佬! |
可以做個(gè)卡爾曼濾波器,或是把采到的數(shù)據(jù)放到matlab中曲線擬合一下 |
wulin 發(fā)表于 2020-11-29 07:26 謝謝! |
lovexulu 發(fā)表于 2020-11-29 14:40 51官方的datasheet就是個(gè)大坑呀!用的51官方的中斷程序……發(fā)現(xiàn)了好幾個(gè)錯(cuò)誤 |
本人用了STC8H系列的另外一款芯片STC8H8K64U,使用了2.5V基準(zhǔn)電壓,測(cè)試ADC效果很好。不過用的是TB上買的現(xiàn)成的板子,我把原理圖ADC部分和實(shí)驗(yàn)源碼發(fā)你參考下,都是STC8H系列的應(yīng)該參考意義比較大。同意樓上見解,STC芯片依然出庫不會(huì)有那么大問題的。
![]() ![]() |
實(shí)驗(yàn)2-9-2:ADC電位器實(shí)驗(yàn)(P0.4讀取電壓值).rar
49.48 KB, 下載次數(shù): 125
參與人數(shù) 2 | 黑幣 +50 | 收起 理由 |
---|---|---|
![]() | + 20 | 很給力! |
![]() | + 30 | 回帖助人的獎(jiǎng)勵(lì)! |
ab = ah*4+al 這個(gè)什么意思? ADCCFG = 0x2f,這個(gè)寄存器改一下,ADC結(jié)果就直接取高位和低位運(yùn)算就可以了 你參考一下樓上的幾位,先把ADC部分的資料看一下再修改 這沒有什么難度的 |
本帖最后由 lovexulu 于 2020-11-29 14:45 編輯 剛沒仔細(xì)看。。。發(fā)現(xiàn)是采用中斷讀取adc的這個(gè)應(yīng)該就是問題所在了,假如恰好正在執(zhí)行運(yùn)算時(shí),中斷并改變了ah,al值,那得到的結(jié)果就不知道是啥了。 流程改一下,開啟轉(zhuǎn)換,中斷讀取,讀取一次,刷新一次 開啟轉(zhuǎn)換,這樣應(yīng)該不會(huì)有問題了。 |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
出現(xiàn)問題不要輕易懷疑單片機(jī)問題,首先要確認(rèn)特殊功能寄存器的配置是否正確。 仔細(xì)核對(duì)通道選擇,轉(zhuǎn)換速度選擇,轉(zhuǎn)換結(jié)果格式選擇(合并轉(zhuǎn)換結(jié)果高低位的方式不同)。 正確選擇電壓換算公式的數(shù)據(jù)類型,樓主采用的公式錯(cuò)誤,運(yùn)算過程數(shù)據(jù)溢出。 十二位ADC結(jié)果換算成10進(jìn)制(4舍5入)公式 毫伏=(參考電壓*十二位ADC結(jié)果*10000/4096+5)/10 依據(jù)樓主程序配置建議算法: void ad() { unsigned int ab = 0; unsigned int ac = 0; unsigned int ad; ab = ((unsigned int)ah<<4)|(al>>4);//兩個(gè)寄存器(adc結(jié)果)合并 ad = (long)ab*10000/4096*3.2;//計(jì)算電壓(無小數(shù)點(diǎn)) ac = ad; ...... |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
添加數(shù)字濾波器以平均模擬變量采樣; 此外,請(qǐng)檢查模擬參考電壓是否穩(wěn)定。 |
就離譜 |
Powered by 單片機(jī)教程網(wǎng)