![]() |
發布時間: 2020-11-28 22:22
正文摘要:對,就是跳來跳去……我都沒想到這么不準…… 用來測熱敏電阻的,用的電阻分壓,原理圖見下。 萬用表測量在1.65-1.75之間,但是用單片機adc就跳來跳去,一會零點幾,一會一點幾…… 如果把單片機靜置,單片機就會 ... |
樓主你測出來精度多少,0.01v嗎,還是0.1v |
cocolala 發表于 2020-12-1 11:28 請問STC8H8K64U支持USB硬件接口仿真嗎? |
你好,樓主,你有么有用STC8H1K28這個單片機做PWM波形輸出的程序。這款單片機剛出來不久,找不到相關例程。如果有能不能分享一下。 |
經常用AD,實際使用中出現的問題點,簡單總結下,參考下。 AD取樣,沒有特殊情況啥的,兩個算法必須,不然不專業! 1:注意輸入阻抗問題。電源要穩定做好濾波處理,電源很重要,片內AD一般都用電源當基準。 2:頭兩次取樣建議丟棄,速度允許,盡可能慢檔位 3:加【中位值平均濾波】 【全程區間線性插值】 4:如果不使用595或者1650 1638之類LED驅動芯片,MCU頻率盡可能提高! 5:盡可能用外部晶振。 |
1922323908 發表于 2020-12-4 23:31 已經解決了!根據樓上大佬的回復,確實是使用了不正確的公式導致數據溢出。謝謝! |
wulin 發表于 2020-11-29 07:26 解決了!謝謝大佬! |
可以做個卡爾曼濾波器,或是把采到的數據放到matlab中曲線擬合一下 |
wulin 發表于 2020-11-29 07:26 謝謝! |
lovexulu 發表于 2020-11-29 14:40 51官方的datasheet就是個大坑呀!用的51官方的中斷程序……發現了好幾個錯誤 |
ab = ah*4+al 這個什么意思? ADCCFG = 0x2f,這個寄存器改一下,ADC結果就直接取高位和低位運算就可以了 你參考一下樓上的幾位,先把ADC部分的資料看一下再修改 這沒有什么難度的 |
出現問題不要輕易懷疑單片機問題,首先要確認特殊功能寄存器的配置是否正確。 仔細核對通道選擇,轉換速度選擇,轉換結果格式選擇(合并轉換結果高低位的方式不同)。 正確選擇電壓換算公式的數據類型,樓主采用的公式錯誤,運算過程數據溢出。 十二位ADC結果換算成10進制(4舍5入)公式 毫伏=(參考電壓*十二位ADC結果*10000/4096+5)/10 依據樓主程序配置建議算法: void ad() { unsigned int ab = 0; unsigned int ac = 0; unsigned int ad; ab = ((unsigned int)ah<<4)|(al>>4);//兩個寄存器(adc結果)合并 ad = (long)ab*10000/4096*3.2;//計算電壓(無小數點) ac = ad; ...... |
添加數字濾波器以平均模擬變量采樣; 此外,請檢查模擬參考電壓是否穩定。 |
就離譜 |