打印
[开源硬件]

DIY一个廉价DDS信号发生器!

[复制链接]
2855|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaoxia101|  楼主 | 2020-5-21 22:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhaoxia101 于 2020-5-22 20:14 编辑

一只穷X的入门电子爱好者,猛然回忆起自己没有合适的信号发生器,于是他点开了某宝-----

一些看起来可以用的Signal Generator

学生党要饿死自己换来一个信号gen吗。。。况且饿死了买有了啥用,难道送到阴间去吗

算了,他打算先看看OSHWHub上有什么

[他看到了这个----]https://oshwhub.com/Qstorey/DDS9833_Shared
https://oshwhub.com/Qstorey/DDS9833_Shared
再一想,他自己不是还有赢得的打样券&商城元件券吗





咳咳装的正经一点

好的,这里是Link。

前一段时间我在OSHWhub上投了一个DIY的信号Gen,并且想法源于Cezar Chrilla的AD9833的版本,这里跟大家进行一下这个项目的介绍(顺便白**一张券)

首先要介绍的就是程序部分---因为时间紧迫,程序不完美之处有很多,并且直观度比较差,如果大家有更好的想法可以自己进行新的设计

代码
因为方案具体在OSHWHub已有展示,这里主要跟大家分享代码部分的思路。


首先,引用了第三方Encoder库,因为主要还是赶进度,如果想做的更细更精,可以自己进行编库之类的操作。


程序初始化,之后,Encoder库内置一个counter,当连接好Rotary Encoder并且程序前期配置好,它的counter会因顺时针或逆时针旋转进行增减。而我使用的电位器每一个click在引脚CLK和DATA会有4次符合的脉冲,所以我们再添加一个变量用来每4次触发之后返回一个位置值,并且在变量DataReadyEnc亮true,提示程序取值。


之后是菜单界面部分,我们主要使用了变量menuState来决定每一个界面,其中特别提醒的是频率设置中那个$hit一般的增减算法,成这样是因为arduino处理浮点数的能力有限,当然大家也可以摸索进行更简洁的方法。

$$$$hhhiiittttt

按键部分我的设计是可以检测长按或者短按均可以检测到,通过对millis和按键事件差别进行对比 longPressActive变量状态 ,进而进行类似编码器的flag检测操作,并且进行按钮事件触发是Timer1来检测

按键刷新

还有这个奇怪的四个主屏print,后边的true和false是为了选择是否给光标符号预留空格的参数

硬件部分关于AD8232这个小IC

AD9833简介
这款DDS IC具有极低功耗,+2.3v-5.5v的电源轨,使用一个24MHz的有源晶振提供时钟信号,SPI通信,带有掉电模式,窄带信噪比 > 72dB 同时我们可以看到它的主要应用可以是Test Equipment, perfect !

amplifier部分

最后希望大家在制作这个工程有所收获,同时这个项目因为赶时间肯定不会特别完美,所以希望大家若是有兴趣可以进行fork操作并且进行重置。
作者:Link不务正业ww
[url=https://www.bilibili.com/read/cv6080314]https://www.bilibili.com/read/cv6080314
出处: bilibili

使用特权

评论回复

相关帖子

沙发
chenyongand| | 2020-5-22 09:09 | 只看该作者
永远刷不出帖子里的图,这是哪里的问题?板块问题?

使用特权

评论回复
板凳
15625004279| | 2020-5-23 09:24 | 只看该作者
同上,一直转圈圈

使用特权

评论回复
地板
xiaosun| | 2020-5-23 11:36 | 只看该作者
可能图在楼主的D盘里

使用特权

评论回复
5
coody| | 2020-5-29 11:09 | 只看该作者
看不到图。
我也用9833做了一个DDS,用一个高速运放输出,最大+-6V。可惜只能到5Hz左右。

使用特权

评论回复
6
森林长老| | 2020-6-28 07:12 | 只看该作者
学习了!谢谢!

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝