打印
[STM32F2]

STM32 AD输入一个幅度变化的脉冲信号,进行判断DA输出,求助

[复制链接]
1556|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DFH|  楼主 | 2015-12-10 14:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我做的是一个通过信号发生器发出一个10Khz,占空比97% 的方波,通过改变信号发生器的电压值(100mv -- 3.3V),控制输入信号的幅度,单片机里面就是通过读AD值(12位),进行判断(判断电压幅度的大小,进行相应的输出),输出(DA)。我的判断程序如下:
           
   __IO uint16_t min_s = 0x0040;  //是一个电压的阈值.
            while(1)
            {
                 value = ADCDualConvertedValue[0];  //获得AD值,存到value里面去。
                if(min_s < value)  //判断当前的电压是否大于电压的最小值
                {
                        value1 = value;
                        DAC_SetChannel1Data(DAC_Align_12b_R, value1);  //输出
                }
                else
                {
                        DAC_SetChannel1Data(DAC_Align_12b_R, value1); //输出上一次成立的值
                }

           }

通过上边的程序,判断,输出的结果跟我想象中的不一样,输出的DA信号,隔一段时间,一段周期,出现一些峰波。正常来说应该是恒定的,变化幅度不大(我想要的看起来至少是一条线)。下面是我通过示波器查看到的数据,为什么会出现这种情况,折的搞不懂为什么,前来求助。       下边附带了几张图,数据是我放大了很多倍的效果。  第一幅图是我想要的效果, 后面的都是实际的效果。  应该怎样处理才可以处理掉那些峰波;

沙发
DFH|  楼主 | 2015-12-10 14:55 | 只看该作者
求助,给我个思路,大概哪里出了问题。我自己想到头大了。  不知道怎么搞。

使用特权

评论回复
板凳
JY-DX-JY| | 2015-12-10 16:35 | 只看该作者
因为你AD输入的是一个占空比97% 的方波,如果采到低电平怎么办?

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
DFH + 1 神马都是浮云
地板
DFH|  楼主 | 2015-12-10 16:48 | 只看该作者
我有个判断条件,如果电压不大于设定值,就不改变输出值,大于才开始改变    谢谢回复     我解决了。 我的问题是因为输出没有电容滤波的原因,才会出现毛刺。  害的我因为是我程序又问题,搞了好久。 :dizzy:

使用特权

评论回复
5
mmuuss586| | 2015-12-10 19:27 | 只看该作者

解决了就好,硬件的输出最好加低通滤波和缓冲器;

看你上面的程序一直会执行,DA输出语句;
DA输出语句,可以改成写寄存器;

value1 = value;
DAC_SetChannel1Data(DAC_Align_12b_R, value1);  //输出

这2句改成:
DAC_SetChannel1Data(DAC_Align_12b_R, value);  //输出
value1 = value;
响应还快点;

使用特权

评论回复
6
尤彼卡| | 2015-12-10 22:14 | 只看该作者
输出没有电容滤波的原因,才会出现毛刺

输出端加电容滤波是常见的做法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

DFH

7

主题

40

帖子

0

粉丝