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后取平均数,但是总感觉哪里不对,对于一个成熟的单片机不会出现这种情况,但是遇到了想知道是什么原因