论坛风格切换切换到宽版
  • 6197阅读
  • 28回复

俺是菜鸟,想用DDS做个50-1Mhz的正弦波信号发生器,大虾进来看看,给点建议!! [复制链接]

上一主题 下一主题
 
发帖
30
只看楼主 倒序阅读 0楼 发表于: 2006-12-23
嘿嘿,各位大虾好!
俺是个很菜的菜鸟,想做个精度很高的正弦波信号发生器,频率偏差0.2%,频率不高,只要50-1mhz就够了,输出-5~+5v的正弦波信号。
俺考虑了很久,想了很多方案,之前打算用max038,但是这样就要加校频单元,很麻烦。
所以俺就想用dds,查了下,刚开始准备用ad9833,但是发现9833太小了,怕焊不好,所以打算用ad9850,然后加运放低通滤波,然后放大再输出,不晓得可不可行,各位大虾给点建议阿!
俺谢谢了先!
发帖
30
只看该作者 1楼 发表于: 2006-12-23
我想我这个频率很低了,可不可以不用125m的晶振阿,直接用个12m或者30m的晶振,或者再低点用个8m的晶振,可以不
离线BG7TBL
发帖
2965
只看该作者 2楼 发表于: 2006-12-23
对正弦波失真有要求吗!dds输出频率低时,用示波器可以看到曲线象蚂蚁爬!
发帖
30
只看该作者 3楼 发表于: 2006-12-23
输出失真没什么要求,我的测试系统主要对频率和信号的峰峰值要求高点,这个信号发生器发出的信号加到系统上,然后再回测这个信号。
发帖
30
只看该作者 4楼 发表于: 2006-12-23
我之前没接触过dds,不是很懂。昨天到今天上午,啃了一天的ad9850的datasheet,但是还是有很多不懂的地方,有些地方我按照自己的方式理解,但是也不知道对不对
我看资料上写到,iout=32(1.248v/rset),是不是说只要rset确定了,那么iout引脚输出的电流就是确定的呢,
然后,是不是根据这个电流以及iout引脚的电阻就可以确定输出的正弦波的幅值呢,可是正弦波的每个时刻的幅度是不一样的阿
唉,越想越糊涂了
不知道问题出在哪里
大虾指点下俺
发帖
30
只看该作者 5楼 发表于: 2006-12-23
大哥大姐们指点下俺阿
离线BG7TBL
发帖
2965
只看该作者 6楼 发表于: 2006-12-23
'
我之前没接触过dds,不是很懂。昨天到今天上午,啃了一天的ad9850的datasheet,但是还是有很多不懂的地方,有些地方我按照自己的方式理解,但是也不知道对不对
我看资料上写到,iout=32(1.248v/rset),是不是说只要rset确定了,那么iout引脚输出的电流就是确定的呢,
然后,是不是根据这个电流以及iout引脚的电阻就可以确定输出的正弦波的幅值呢,可是正弦波的每个时刻的幅度是不一样的阿
唉,越想越糊涂了
不知道问题出在哪里
大虾指点下俺
'
参考一下中文资料吧,感觉是rset确定,振幅就确定了。
iout应该和da相关。
离线awakening
发帖
795
只看该作者 7楼 发表于: 2006-12-23
'
参考一下中文资料吧,感觉是rset确定,振幅就确定了。
iout应该和da相关。
'
可以用rset稳幅的.记得swr80的电路里就是用一个rset串联一个mos管控制通过输出反馈回来的
发帖
30
只看该作者 8楼 发表于: 2006-12-23
谢谢bg7tbl!
那我这样理解对不对,rset决定振幅,iout引脚(21脚)输出dac的转换后的对应的电流值。
但是rset跟振幅之间的关系是怎样的呢
我在数据手册上没找到
发帖
30
只看该作者 9楼 发表于: 2006-12-23
谢谢awakening!
我这边有延时,才看到你的回复,能不能再说详细点
离线awakening
发帖
795
只看该作者 10楼 发表于: 2006-12-23
看这个:
离线awakening
发帖
795
只看该作者 11楼 发表于: 2006-12-23
反馈部分:
运放的输出接mos管.输入接9851.
发帖
30
只看该作者 12楼 发表于: 2006-12-23
明白一点了,rset是确定振幅的,iout是da的max输出,9850带的da是电流型的,iout引脚输出da转换后的电流,然后根据iout引脚的电阻就知道了输出的正弦波的幅度了
发帖
30
只看该作者 13楼 发表于: 2006-12-23
awakening大虾的图俺看不太明白,不知道什么意思
发帖
30
只看该作者 14楼 发表于: 2006-12-23
我根据自己的理解,画了个最简单的外围连接电路图,其中data,fq_ud,w_clk分别接单片机89s51的p1.0, p1.1 ,p1.2,vout输出接运放进行滤波和放大
图片见附件
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线qiufeng
发帖
401
只看该作者 15楼 发表于: 2006-12-23
我看还是用ad9832吧,功能还可以,就是频率不高,但对楼主应用而言是绰绰有余!

而且你google上找一下,资料程序都有!

dds芯片ad9832的原理及应用
http://news.eeworld.com.cn/n/20060507/1958.shtml

dds9832的制作:

http://www.cqham.ru/minidds.htm
http://www.cqham.ru/ftp/minidds.zip
http://www.njqrp.org/ham-pic/sm6lkm/ad9832_3.asm.txt
离线awakening
发帖
795
只看该作者 16楼 发表于: 2006-12-23
如果只是做低频信号发生的话还可以试试用aduc7026通过软件dds方法产生所需的信号,通过查询内建的余弦.三角等表来更换输出波形.还可同时输出多路.频率稳定性和准确性就要考验编程水平了.
不考虑其他因素的话,aduc7026是12bit的dac,理论上输出的波形比9850还干净.不过只是理论上.
离线awakening
发帖
795
只看该作者 17楼 发表于: 2006-12-23
给你个64点的正弦表:
const uint32 sintable[64] = {
     0x07ff0000, 0x08c80000, 0x098e0000, 0x0a510000, 0x0b0f0000, 0x0bc40000, 0x0c710000, 0x0d120000,
     0x0da70000, 0x0e2e0000, 0x0ea50000, 0x0f0d0000, 0x0f630000, 0x0fa60000, 0x0fd70000, 0x0ff50000,
     0x0fff0000, 0x0ff50000, 0x0fd70000, 0x0fa60000, 0x0f630000, 0x0f0d0000, 0x0ea50000, 0x0e2e0000,
     0x0da70000, 0x0d120000, 0x0c710000, 0x0bc40000, 0x0b0f0000, 0x0a510000, 0x098e0000, 0x08c80000,
     0x07ff0000, 0x07360000, 0x06700000, 0x05ad0000, 0x04ef0000, 0x043a0000, 0x038d0000, 0x02ec0000,
     0x02570000, 0x01d00000, 0x01590000, 0x00f10000, 0x009b0000, 0x00580000, 0x00270000, 0x00090000,
     0x00000000, 0x00090000, 0x00270000, 0x00580000, 0x009b0000, 0x00f10000, 0x01590000, 0x01d00000,
     0x02570000, 0x02ec0000, 0x038d0000, 0x043a0000, 0x04ef0000, 0x05ad0000, 0x06700000, 0x07360000
     };
离线awakening
发帖
795
只看该作者 18楼 发表于: 2006-12-23
上个以前玩7026时候的图:
keil模拟的7026dac的输出:
输出加低通滤波的话波形会光滑点.
离线awakening
发帖
795
只看该作者 19楼 发表于: 2006-12-24
今天试了一下4096点的正弦表,波形光滑很多了: