打印
[STM32F2]

输出的结果跟我想象中的不一样

[复制链接]
746|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuzaiy|  楼主 | 2018-5-24 16:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我做的是一个通过信号发生器发出一个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); //输出上一次成立的值
                }

           }

通过上边的程序,判断,输出的结果跟我想象中的不一样
沙发
chuxh| | 2018-5-24 16:32 | 只看该作者
什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
板凳
liuzaiy|  楼主 | 2018-5-24 16:37 | 只看该作者

输出的DA信号,隔一段时间,一段周期,出现一些峰波。

使用特权

评论回复
地板
stly| | 2018-5-24 16:41 | 只看该作者
正常来说应该是恒定的,变化幅度不大

使用特权

评论回复
5
liuzaiy|  楼主 | 2018-5-24 16:45 | 只看该作者

我想要的看起来至少是一条线

使用特权

评论回复
6
sky.sun.zz| | 2018-5-24 16:49 | 只看该作者
如果 value与上次的值相同,就不应该再操作DAC了。

使用特权

评论回复
7
renyaq| | 2018-5-24 16:50 | 只看该作者

因为你AD输入的是一个占空比97% 的方波,如果采到低电平怎么办?

使用特权

评论回复
8
liuzaiy|  楼主 | 2018-5-24 16:56 | 只看该作者
我有个判断条件,如果电压不大于设定值,就不改变输出值,大于才开始改变

使用特权

评论回复
9
xxrs| | 2018-5-24 17:00 | 只看该作者

输出没有电容滤波

使用特权

评论回复
10
liuzaiy|  楼主 | 2018-5-24 17:05 | 只看该作者

果然,害的我因为是我程序又问题

使用特权

评论回复
11
yinxiangh| | 2018-5-24 17:09 | 只看该作者
硬件的输出最好加低通滤波和缓冲器

使用特权

评论回复
12
pangb| | 2018-5-24 17:15 | 只看该作者

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

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

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

使用特权

评论回复
13
ousj| | 2018-5-24 17:22 | 只看该作者
输出端加电容滤波是常见的做法

使用特权

评论回复
14
liuzaiy|  楼主 | 2018-5-24 17:23 | 只看该作者
结贴了,多谢大家讨论这么多哈,呵呵

使用特权

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

本版积分规则

735

主题

7546

帖子

2

粉丝