数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 2412|回复: 0

[Arduino] DIY一个基于arduino的DDS信号Gen!

[复制链接]
发表于 2020-5-22 22:00:30 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

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

一些看起来可以用的Signal Generator

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

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

[他看到了这个----]
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
转载于Link的B站专栏

打赏

参与人数 1家元 +8 收起 理由
aacyxjz + 8

查看全部打赏

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-24 16:13 , Processed in 0.811201 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表