更多内容,请访问我的网站:https://jiangge12.github.io/
看到有人做 AD9833 ,成品卖355元。https://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上,外加一块电池。
不打板不做外壳还能比这更简洁?
示波器也配合用手持的,这样摆拍方便。
下面是 手机控制参数 的 演示视频 。( 模块黑乎乎的在右上角 )
手机 App 用的是 汇承 的,帮他家宣传下,不买他的模块也可看看资料。
附: