Arduino + AD9833 波形发生器

更多内容,请访问我的网站:https://jiangge12.github.io/

看到有人做 AD9833 ,成品卖355元。icon-default.png?t=N7T8https://www.bilibili.com/video/av463721457/

上面视频里卖家做了一个豪华底板,有屏幕编码器按键等,能够有不少附加值(增加售价)。

不过真的需要搞这么复杂?

看看视频觉得有 DIY 价值,做成了不就节约355元了吗。

想起个笑话: “今天下班一回家,没有挤上公交车,实在等不住了,就跑回了家,我赶紧给老婆报喜,我说:“老婆,今天我省了一块钱,我跟着公交跑回来的!”老婆说:“这么厉害,明天你跟着出租车跑回来,要省好几十块钱呢!”我想了想,我说:“对呀,我咋那么笨啊,还是老婆聪明!”

模块大约有两种:左图青春版; 右图多了一级AD8051放大,并且使用了数字电位器。

先焊接排针(左图)。如图 5个数字脚 和 2个模拟脚 上下分开,有字一面向上方便看引脚标识。

看了下PDF,AD9833电流很小,可以像之前做OLED实验一样,用数字引脚供电。

实拍测试场景:先用的UNO测试,后因用到蓝牙改用 ESP32 。如果和上图一样插在 UNO的 D7-D3 ,直接用如下代码:( D7 Vcc   ,D6 Gnd )

代码很简洁,比SI5351易读。关键是 SI5351 例程代码频率需要校准,AD9833就不需要的。

#include <MD_AD9833.h>
#include <SPI.h>

MD_AD9833 AD(/*DATA*/5, /*CLK*/4, /*FSYNC*/3);  

void setup(void)
{
  pinMode(7, OUTPUT); digitalWrite(7, HIGH); // 数字引脚供电(仅限极低低功耗模块)   
  pinMode(6, OUTPUT); digitalWrite(6, LOW); 
  
  AD.begin();
  AD.setMode(MD_AD9833::MODE_TRIANGLE);  // MODE_SINE MODE_TRIANGLE MODE_SQUARE1
  AD.setFrequency(MD_AD9833::CHAN_0, 1000000); 
}

void loop(void)
{
}

----------------------------------------------------------------------------------------------------------------------

如没有示波器,把 AD9833 频率降到 1KHz,可以用 ADC 采样并输出到 串口绘图器。

UNO ADC 默认采样速度 10KHz ,可以提高到 67KHz。 代码如下:

#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))

int i;
int ch0_adc[600];

void setup(void) {
  Serial.begin(2000000);
  sbi(ADCSRA,ADPS2) ;
  cbi(ADCSRA,ADPS1) ;
  cbi(ADCSRA,ADPS0) ; 
}
 
void loop(void) { 
  for ( i = 0 ; i < 600 ; i++){ ch0_adc[i] = analogRead(A0); }  
  for ( i = 0 ; i < 600 ; i++){ Serial.println(ch0_adc[i]);  }
  delay(1000); // 单位 毫秒
}

“ Ctrl+Alt+L ” 打开 Arduino IDE 串口绘图器 ,即可看到下面这样的波形

-----------------------------------------------------------------------------------------------------------------------

最后,总要有别于其他已经有的波形发生器才算对得起折腾。

ESP32不是有蓝牙吗?程序移植到ESP32是及其容易的,注意几个引脚号即可。

AD9833 插在ESP32上,外加一块电池。

不打板不做外壳还能比这更简洁? 

 示波器也配合用手持的,这样摆拍方便。

下面是 手机控制参数 的 演示视频 。( 模块黑乎乎的在右上角 )

https://v.youku.com/v_show/id_XNTg4OTczOTAzNg==.htmlicon-default.png?t=N7T8https://v.youku.com/v_show/id_XNTg4OTczOTAzNg==.html

 手机 App 用的是  汇承  的,帮他家宣传下,不买他的模块也可看看资料。

附:

卓老师的测试,看得出来已经用上了面包板硬线,不过依然没有直插简洁测试AD98331. 该模块是购置于淘宝GY9833: Price: 6.85。AD9833购买模块以及测试实验2. 测试实验板(1) HardwareAltiumDesign\Test\2020\GenretCntF103\SPIF030K8(2) Firmware所在目录:Application\Test\2020\GeneralFSPIF030\Src模块AD983...https://blog.csdn.net/zhuoqingjoking97298/article/details/104111128

卓老师的分析在今天充满着2的岁月日子里,也有着和2无缘的事物,那就是AD9833。它所产生的12.5MHz的信号中,居然没有所有的偶次(2的整数倍数)谐波。AD9833及其实验电路AD9833是一款AnalogDevices公司的可编程信号低功耗发生器芯片。工作电压2.35.5V。在外部25MHz时钟信号驱动下可以产生0.1Hz12.5MHz的正弦波、三角波以及方波。被应用于工业气体、液体流量测量、位...https://zhuoqing.blog.csdn.net/article/details/104151117

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
使用Arduino,OLED显示屏和AD9833 DDS模块为您的实验室创建有用的波形发生器。 硬件部件: Arduino Nano R3 × 1个 显示SH1106 I2C Oled 128x64像素(4针)× 1个 AD9833 DDS模块× 1个 5V继电器模块(可选)× 1个 电容10 µF × 1个 电容10 nF × 1个 AC-DC 100-220V至5V降压电源模块× 1个 手动工具和制造机: 烙铁(通用) 特征 输出频率在1 Hz至999999 Hz之间 频率变化的两种模式:对数和一位数字 波浪,正弦波,三角形和正方形三种类型 交流或直流输出耦合 在两个预定义的频率值之间连续扫描的能力 仅由一个旋钮控制 集成的屏幕保护程序可以保持OLED显示屏的使用寿命 1kHz正弦波: 1kHz的三角波: 1kHz方波: 注意 DDS模块的输出幅度不是很高,正弦波和三角波的峰峰值平均在550 mV至650 mV之间,对于方波,峰峰值平均约为4.5V,约为峰峰值4.5V。当然,这往往会与频率成反比地下降,但高达1MHz时,它是线性的。AD9833 DDS模块能够产生高达12 MHz的信号,这对我来说不是必需的。如果您需要超过1 MHz,则可以尝试进行实验,并在显示屏上添加一个或两个数字,但这需要对图形界面进行部分重新设计。 输出信号的质量还取决于电源的质量,因此最好使用线性电源,而不是像切换电源那样,以减小从旧项目中恢复的情况的大小。但是,即使使用开关模块,波形的线性度也相当好。 快速参考 原型 我使用了具有10A触点的预组装继电器模块,因为目前我还没有微型簧片继电器,当不需要功率继电器时,这将是避免使用晶体管二极管和电阻器的最佳选择。Arduino数字PIN最多可提供40 mA的电流,因此您不能直接将机电继电器与120/150欧姆线圈连接。 使用电源时务必非常小心!
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值