jwg 发表于 2023-12-23 13:38:19

采用DMA_ADC功能,通过软件去掉极值,再算平均值。https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5784&page=1#:~:text=%E6%88%91%E4%B9%9F%E6%83%B3%E8%BF%87%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%EF%BC%8C%E6%AF%94%E5%A6%82%E8%BD%AC%E6%8D%A24%E6%AC%A1%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%85%B6%E4%B8%AD%E6%9C%89%E4%B8%80%E6%AC%A1%E6%98%AF0%E7%9A%84%E8%AF%9D%EF%BC%8C%E9%82%A3%E4%B9%88%E5%B9%B3%E5%9D%87%E5%90%8E%E7%9A%84%E6%95%B0%E5%80%BC%E5%B0%B1%E8%A2%AB%E6%8B%89%E4%BD%8E%E4%B8%8D%E5%87%86%E4%BA%86%EF%BC%8C%E6%B8%A9%E5%BA%A6%E5%80%BC%E4%B9%9F%E5%B0%B1%E4%B8%8D%E5%87%86%E4%BA%86

twfx 发表于 2023-12-25 12:08:08

我初次弄的时候,没加参考电压,就是随机的,不知道你加没加参考电压

梁工 发表于 2023-12-25 12:52:15

ADC是硬件外设,每次转换都执行相同的操作:采样-量化,输入电压部位0,不会读到0的。请用示波器仔细看看ADC输入脚的信号是否有干扰。ADC输入脚一定要设置为高阻。

我的用户名 发表于 2023-12-25 13:44:06

jwg 发表于 2023-12-23 13:38
采用DMA_ADC功能,通过软件去掉极值,再算平均值。https://www.stcaimcu.com/forum.php?mod=viewthread&tid ...

8H1K08没有DMA功能{:shy:}

我的用户名 发表于 2023-12-25 13:45:25

梁工 发表于 2023-12-25 12:52
ADC是硬件外设,每次转换都执行相同的操作:采样-量化,输入电压部位0,不会读到0的。请用示波器仔细看看AD ...

已经高阻了,不高阻的话测出来完全不准的,现在一切正常,只是而尔出现一次0值

神农鼎 发表于 2023-12-25 13:54:45


参考下图:




我的用户名 发表于 2023-12-25 17:41:12

谢谢各位大神的回复,多谢了!

any8086 发表于 2024-4-16 15:23:18

这个问题时STC单片机自带AD的一个BUG,STC的绝大部分自带AD单片机型号都有这个BUG,AD采样数据都会随机出0,不是程序问题,技术解答说要在AD输入端并接一个RC电路,并且电容值不能太小,这样才不会随机出0,但是这样一来,STC单片机自带AD的使用就局限了,只能测量直流电压或低频率交流信号,不能测量方波信号和高频率信号,都被RC电路过滤成平滑的波形了。

梁工 发表于 2024-4-18 10:26:47

本帖最后由 梁工 于 2024-4-18 10:30 编辑

any8086 发表于 2024-4-16 15:23
这个问题时STC单片机自带AD的一个BUG,STC的绝大部分自带AD单片机型号都有这个BUG,AD采样数据都会随机出0 ...
      我没有发现能读到0.
      最经典的就是做示波器,ADC后显示波形,我从来没发现有出现0的情况,哪怕用500KHz的速度采样显示波形(比如观察10KHz的正弦波),都没有发现过出现0,因为出现0的时候,波形会很难看的。如果谁测试示波器发现波形中有读到0的情况,可以告知我。
      输入接RC是ADC基本都用的,不是仅仅STC的ADC要用,用于滤除干扰、抗混叠滤波(你可以了解下什么是抗混叠),至于说只能测低频交流信号,频率高低都是相对的(比如1MHz相对工频就是高频,但相对射频就是低频),我不知道你说的高频是多高。接了RC,比如1K+1nF,其低通转折频率为159KHz,RC值为1us,这个时间已经小于500KHz的2us了,也就是说,输入使用1K+1nF滤波(RC值1us),使用500KHz采样(2us间隔),则即使输入方波信号,某次采样时电平为0,采样完成出现上升沿,则下次采样幅度已经升到86.5%了,如果使用100KHz采样,则完全可以忽略RC值的影响。
RC的C还可以给采样电容瞬间供电,减小输入电阻的影响,这个你可以参考别的贴的论述。

       几十年来我看到的、用过的ADC输入电路,不管是单独的ADC芯片还是MCU自带的ADC,基本都是带RC的,就是基于上述原因。

雨过天晴 发表于 2024-4-23 20:56:55

我也遇到了这个情况,用的是stc8g1k08的单片机,采样时很容易出现0的现象,最后多次采集去掉0后取平均数,但是总感觉哪里不对,对于一个成熟的单片机不会出现这种情况,但是遇到了想知道是什么原因
页: 1 [2] 3 4 5 6 7
查看完整版本: ADC采集为什么有时候是0?