切换到宽版
  • 10798阅读
  • 101回复

[工仪]做个超低成本简易任意波信号发生器 10hz-200khz [复制链接]

上一主题 下一主题
离线2545889167
 

发帖
10497
M币
15931
专家
97
粉丝
4255
— 本帖被 香瑶 设置为精华,作者+3000M币+5专家(2017-03-09) —
开头先说两句:
1、自行车的价格肯定买不到宝马。(本制作成本10元左右(使用二手件),和几百上千的专业型号发生仪器肯定没得比)
2、作为一个玩具级的小玩意,大家多多包容 多多指教哈,有什么问题可以提出来互相讨论共同改进
3、以后有空 想拿专业点的DAC芯片做个效果更好点的(比如说我花了45大洋买的还在墙角堆灰的AD9850什么的)

其实这东西做好了一段时间了,一直没空发上来,今天发上来给大家乐和乐和。
总体效果图
做个超低成本简易任意波信号发生器 10hz-200khz
做个超低成本简易任意波信号发生器 10hz-200khz
使用的单片机核心 stm32f401ccu6 晶振12m

做个超低成本简易任意波信号发生器 10hz-200khz
板子的背面,使用电阻网络做dac
做个超低成本简易任意波信号发生器 10hz-200khz
负压产生用34063 旁边是运放AD8052
做个超低成本简易任意波信号发生器 10hz-200khz
上位机,目前功能还比较简陋
做个超低成本简易任意波信号发生器 10hz-200khz


原理图 单片机核心和电阻网络DAC部分(高清大图见附件)
做个超低成本简易任意波信号发生器 10hz-200khz
信号处理部分
做个超低成本简易任意波信号发生器 10hz-200khz

原理大概是这样的:
1、上位机吧计算好的任意波形信号发送给单片机(可以通过USB,也可以通过串口)
2、单片机接收处理好型号后,使能DMA,直接将数据从内存搬运到IO口(GPIOX->ODR寄存器)
3、搬运的间隔用定时器控制。在单片机超频到120mhz(标称84mhz,到130m以上就不稳定了)的时候,搬运的速度能达到15MHZ(实际可能还会再多一点到17-18m的样子)
4、引脚的低8位接了电阻网络,使用电阻网络的方法来实现DAC(数模转换)功能,来输出信号波形,这个DAC的速度也就是15MHZ
5、输出信号通过三级运放
第一级运放的作用是跟随,因为电阻网络DAC输出信号很弱,所以先跟随
第二级运放的作用是放大型号和调整偏置,信号放大2倍,偏置从以1.65v调整为以地为轴正负波动
R4调整幅度,目前还没实现数控调幅
第三级运放的作用还是跟随,增强输出能力

性能参数:
1、任意波发生(目前上位机只做了三角正弦和方波)
2、输出波形频率范围为 10Hz~200KHz 可调(极限可到1mhz但是效果不好,波形有失真)
3、输出波形峰峰值范围为 0~6.5V 可调
4、通过加法运算能够实现输出不同波形的线性组合波形(目前上位机只做了三角正弦和方波的合成)
5、附加输出一路独立的PWM,10KHz,幅度为+5V,占空比1%~99%,步进0.1%。ps:讲道理没啥卵用

楼下继续,放效果图
本帖最近打赏记录:共41条打赏M币+554专家+6
newnet1234 M币 +30 謝謝分享,这架势完全可以喂食液袋盐 04-20
diannaozai M币 +30 撸起袖子干的人,必须打赏,加油 04-11
shazhou M币 +8 楼主很牛,就是缺瓶洗板水,还有焊锡太多,哈哈 03-16
sckocn M币 +30 優秀文章 03-14
zsl00 M币 +8 優秀文章 03-14
aeolus M币 +30 上下通吃 我服 03-14
troy012 M币 +15 優秀文章,这个不错~ 03-13
liyuqing0318 M币 +8 上位机与下位机通吃的人才有没有? 03-11
骑着狗溜达 M币 +15 謝謝分享 03-11
眼镜擢到眼 M币 +8 優秀文章 03-11
离线2545889167

发帖
10497
M币
15931
专家
97
粉丝
4255
只看该作者 1楼 发表于: 03-09
开机的默认锯齿波


正弦 频率在右下角,就不一一说了








24khz是交界点,再往上,为了保证频率准确性,增长了调节步进



1m的波形有畸变



三角波





图满,楼下继续
本帖最近打赏记录:共10条打赏M币+196
wjhwpp M币 +15 謝謝分享 04-06
hongo M币 +8 示波器不错。。。 03-13
q版虎斑猫 M币 +15 - 03-10
366261061 M币 +30 精彩回帖 03-10
taoshptao M币 +15 謝謝分享 03-10
xiaoxuanfeng M币 +15 - 03-10
jpdd521 M币 +30 - 03-10
eros8269 M币 +8 謝謝分享 03-09
yhky M币 +30 - 03-09
jjkllkk M币 +30 原創內容 03-09
离线2545889167

发帖
10497
M币
15931
专家
97
粉丝
4255
只看该作者 2楼 发表于: 03-09
三角波继续





方波







开始有一点点畸变了,这锅电容来背

pwm


楼下继续
本帖最近打赏记录:共7条打赏M币+113
wjhwpp M币 +15 謝謝分享 04-06
hongo M币 +8 波形还不错 03-13
q版虎斑猫 M币 +15 - 03-10
zx61107 M币 +15 謝謝分享 03-10
佳维 M币 +15 謝謝分享 03-10
xiaoxuanfeng M币 +15 - 03-10
jpdd521 M币 +30 - 03-10
离线2545889167

发帖
10497
M币
15931
专家
97
粉丝
4255
只看该作者 3楼 发表于: 03-09
pwm继续
占空比还是在右下角有显示






波形合成(其实也算是任意波了)
方波与正弦波合成

方波与三角波合成


方波、正弦波、三角波合成

方波与三角波合成

方波、正弦波、三角波合成


图完
[ 此帖被2545889167在2017-03-09 15:07重新编辑 ]
本帖最近打赏记录:共11条打赏M币+162
wjhwpp M币 +8 謝謝分享 04-06
damanqq M币 +1 優秀文章,不错的试验! 03-16
hongo M币 +8 多个波形合成比较好玩 03-13
kinjiyou M币 +15 優秀文章 03-11
qrut M币 +15 不错波形很正 03-11
2n3055 M币 +30 優秀文章 03-10
zx61107 M币 +15 謝謝分享 03-10
savage_yobbo M币 +15 很好啊,一直想做,但是用了AD9851后就没做了,懒啊…… 03-10
佳维 M币 +15 謝謝分享 03-10
xiaoxuanfeng M币 +10 - 03-10
12
离线2545889167

发帖
10497
M币
15931
专家
97
粉丝
4255
只看该作者 4楼 发表于: 03-09
楼上的哥们手速真快啊

说点其他的东西
1、说是任意波,但是大家只看到常规的方波、正弦波、三角波,其实是以为上位机太简单罢了。所有的波形计算都是在上位机完成的,完成后直接吧波形数据发给单片机。所以要增加波形,就是改改上位机的事情了,硬件基本不用动啥。
2、电阻网络和后面的信号的处理有点简单粗暴,要提高性能,肯定得改改
3、上位机的使用
usb插上后,设备管理器找到串口后,填进去,打开串口即可,波特率不用理会。
低于24khz的信号,可调的是3位,在左下角调整。
高于24k,勾选右边24k-200k方框,拖动滑块改动频率

3、程序的编译
有sys_conf.h文件,里面有三个选项。
#define USE_USB意思是使用USB,如果屏蔽这个宏定义,则使用串口1传输数据,波特率115200
#define USB_NEGATIVE_PORT //是引脚的高低位逆转,如果开启的画,PA0输出的是高位,PA7输出的是低位,如果关闭,则是正常顺序PA0是低
//#define USB_GPIOB_PORT //屏蔽则用GPIOA的低八位,解除屏蔽用GPIOB的低八位作为数据输出口

4、频率误差

理想频率与实际频率误差的两类误差源:
1  分频系数、采样点的非光滑造成的误差
如:理想839.0 实际838.996582 差值0.003418 误差0.000407%
理想19900.0  实际19900.498047差值0.498047  误差0.002503%
理想20000.0 实际20000.000000 差值0.000000   误差0.000000%
完整分频偏差运算测试结果 (100-24khz)见附录
2  DMA数据传输周期间间隙造成的误触
DMA数据传输被设置为循环传输模式时,两个循环之间存在准备时间,对高频输出有一定影响。

截取部分运算结果
理想106.0       实际105.999954  差值0.000046    误差0.000043%   N:484  K:2339
理想107.0       实际106.999939  差值0.000061    误差0.000057%   N:498  K:2252
理想108.0       实际108.000107  差值0.000107    误差0.000099%   N:462  K:2405
理想109.0       实际108.999947  差值0.000053    误差0.000049%   N:322  K:3419
理想110.0       实际109.999908  差值0.000092    误差0.000083%   N:430  K:2537
理想111.0       实际111.000114  差值0.000114    误差0.000103%   N:468  K:2310
理想112.0       实际111.999641  差值0.000359    误差0.000320%   N:414  K:2588
理想113.0       实际112.999886  差值0.000114    误差0.000101%   N:356  K:2983
理想114.0       实际113.999741  差值0.000259    误差0.000228%   N:246  K:4279
理想115.0       实际114.999809  差值0.000191    误差0.000166%   N:380  K:2746
理想116.0       实际115.999863  差值0.000137    误差0.000118%   N:374  K:2766
理想117.0       实际117.000114  差值0.000114    误差0.000098%   N:462  K:2220
理想118.0       实际117.999901  差值0.000099    误差0.000084%   N:430  K:2365
理想119.0       实际118.999687  差值0.000313    误差0.000263%   N:446  K:2261
理想120.0       实际120.000000  差值0.000000    误差0.000000%   N:500  K:2000
理想121.0       实际120.999947  差值0.000053    误差0.000044%   N:424  K:2339
理想122.0       实际121.999825  差值0.000175    误差0.000144%   N:296  K:3323
理想123.0       实际122.999718  差值0.000282    误差0.000230%   N:418  K:2334
理想124.0       实际124.000252  差值0.000252    误差0.000203%   N:254  K:3810
理想125.0       实际125.000000  差值0.000000    误差0.000000%   N:500  K:1920
理想126.0       实际126.000130  差值0.000130    误差0.000103%   N:468  K:2035

理想3170.0      实际3169.906982         差值0.093018    误差0.002934%   N:416  K:91
理想3180.0      实际3179.987305         差值0.012695    误差0.000399%   N:424  K:89
理想3190.0      实际3189.792725         差值0.207275    误差0.006498%   N:418  K:90
理想3200.0      实际3200.000000         差值0.000000    误差0.000000%   N:500  K:75
理想3210.0      实际3209.757568         差值0.242432    误差0.007552%   N:402  K:93
理想3220.0      实际3219.920654         差值0.079346    误差0.002464%   N:484  K:77
理想3230.0      实际3229.974121         差值0.025879    误差0.000801%   N:432  K:86
理想3240.0      实际3240.090820         差值0.090820    误差0.002803%   N:394  K:94
理想3250.0      实际3249.918701         差值0.081299    误差0.002502%   N:362  K:102
理想3260.0      实际3260.160889         差值0.160889    误差0.004935%   N:428  K:86
理想3270.0      实际3269.932861         差值0.067139    误差0.002053%   N:118  K:311
理想3280.0      实际3280.122559         差值0.122559    误差0.003737%   N:136  K:269
理想3290.0      实际3290.195313         差值0.195313    误差0.005937%   N:388  K:94
理想3300.0      实际3299.785400         差值0.214600    误差0.006503%   N:418  K:87
理想3310.0      实际3310.162109         差值0.162109    误差0.004898%   N:342  K:106
理想3320.0      实际3320.053223         差值0.053223    误差0.001603%   N:144  K:251

理想9810.0      实际9810.333984         差值0.333984    误差0.003405%   N:278  K:44
理想9820.0      实际9819.966797         差值0.033203    误差0.000338%   N:470  K:26
理想9830.0      实际9829.620117         差值0.379883    误差0.003865%   N:436  K:28
理想9840.0      实际9840.905273         差值0.905273    误差0.009200%   N:182  K:67
理想9850.0      实际9852.216797         差值2.216797    误差0.022506%   N:420  K:29
理想9860.0      实际9858.692383         差值1.307617    误差0.013262%   N:358  K:34
理想9870.0      实际9868.420898         差值1.579102    误差0.015999%   N:380  K:32
理想9880.0      实际9881.422852         差值1.422852    误差0.014401%   N:368  K:33

理想14400.0     实际14405.762695        差值5.762695    误差0.040019%   N:490  K:17
理想14500.0     实际14503.263672        差值3.263672    误差0.022508%   N:394  K:21
理想14600.0     实际14598.540039        差值1.459961    误差0.010000%   N:274  K:30
理想14700.0     实际14698.676758        差值1.323242    误差0.009002%   N:314  K:26
理想14800.0     实际14803.848633        差值3.848633    误差0.026004%   N:386  K:21
理想14900.0     实际14903.129883        差值3.129883    误差0.021006%   N:366  K:22
理想15000.0     实际15000.000000        差值0.000000    误差0.000000%   N:500  K:16
理想15100.0     实际15101.938477        差值1.938477    误差0.012838%   N:274  K:29
理想15200.0     实际15197.568359        差值2.431641    误差0.015998%   N:376  K:21
理想15300.0     实际15298.317383        差值1.682617    误差0.010997%   N:212  K:37
理想15400.0     实际15404.364258        差值4.364258    误差0.028339%   N:410  K:19


理想22800.0     实际22796.353516        差值3.646484    误差0.015993%   N:376  K:14
理想22900.0     实际22900.763672        差值0.763672    误差0.003335%   N:262  K:20
理想23000.0     实际23006.134766        差值6.134766    误差0.026673%   N:326  K:16
理想23100.0     实际23103.582031        差值3.582031    误差0.015507%   N:106  K:49
理想23200.0     实际23192.886719        差值7.113281    误差0.030661%   N:398  K:13
理想23300.0     实际23300.970703        差值0.970703    误差0.004166%   N:206  K:25
理想23400.0     实际23391.812500        差值8.187500    误差0.034989%   N:342  K:15
理想23500.0     实际23501.761719        差值1.761719    误差0.007497%   N:222  K:23
理想23600.0     实际23603.460938        差值3.460938    误差0.014665%   N:164  K:31
理想23700.0     实际23696.681641        差值3.318359    误差0.014002%   N:422  K:12
理想23800.0     实际23790.642578        差值9.357422    误差0.039317%   N:388  K:13
理想23900.0     实际23894.863281        差值5.136719    误差0.021493%   N:186  K:27
理想24000.0     实际24000.000000        差值0.000000    误差0.000000%   N:500  K:10



5、成本
单片机stm32f401ccu6+晶振+usb座子,拆自前段时间风靡论坛的一元pos机   1元
两个运放AD8052  二手拆机货        5毛一个
stm32f4最小系统板,自己画的PCB    2元一片
电阻网络的电阻    1元
其他材料,不值钱 算3元



参考链接,都是我的帖子:
【核心板1.5发布】贫民自制stm32开发板v2.0团购项目--第六帖|http://bbs.mydigit.cn/read.php?tid=1706936
拆个和之前拆的不一样的飞钱音频pos机,价值不低但是可玩性不高,有stm32f401哦|http://bbs.mydigit.cn/read.php?tid=1560033
没有下载器?不会编程?人人都可以玩——一根数据线吊打pos内stm32f401单片机(教程)|http://bbs.mydigit.cn/read.php?tid=1638363



最后是程序,因为上位机不是我写的,我也木有源码
下位机源代码+原理图+上位机+频率误差计算程序+频率误差计算结果
Signal_generator.zip (852 K) 下载次数:19
[ 此帖被2545889167在2017-03-09 15:32重新编辑 ]
本帖最近打赏记录:共21条打赏M币+294专家+4
newnet1234 M币 +15 謝謝分享 04-20
wjhwpp M币 +8 謝謝分享 04-06
杨小伟 M币 +15 優秀文章 03-17
hongo M币 +8 能不能不要上位机只用单片机产生波形? 03-13
sln.1550 M币 +15 做的不错 03-12
qrut M币 +15 再加个蓝牙模块配合app效果更好 03-11
骑着狗溜达 M币 +15 優秀文章 03-11
1411kbps M币 +8 謝謝分享 03-11
2n3055 专家 +1 - 03-10
hellodoraemo 专家 +1 優秀文章 03-10
离线xhb_nb

发帖
198
M币
1065
专家
1
粉丝
18
只看该作者 5楼 发表于: 03-09
大神就是大神~~~城会玩
本帖最近打赏记录:共2条打赏M币+38
jpdd521 M币 +30 - 03-10
2545889167 M币 +8 - 03-09
离线mousebat04

发帖
12542
M币
517
专家
7
粉丝
62
只看该作者 6楼 发表于: 03-09
效果看起来很好呀。用法很新奇,学习了。
本帖最近打赏记录:共2条打赏M币+45
jpdd521 M币 +30 啥叫任性~~ 03-10
2545889167 M币 +15 歡迎探討 03-09
离线benli

发帖
33421
M币
4777
专家
85
粉丝
440
只看该作者 7楼 发表于: 03-09
能到2m就好了
本帖最近打赏记录:共2条打赏M币+30
jpdd521 M币 +15 没分了。。 03-10
2545889167 M币 +15 AD9850倒是战到几十兆不虚,不过真心贵 03-09
离线feitian227

发帖
3249
M币
3001
专家
2
粉丝
39
只看该作者 8楼 发表于: 03-09
回 2545889167 的帖子
2545889167:楼上的哥们手速真快啊
说点其他的东西
1、说是任意波,但是大家只看到常规的方波、正弦波、三角波,其实是以为上位机太简单罢了。所有的波形计算都是在上位机完成的,完成后直接吧波形数据发给单片机。所以要增加波形,就是改改上位机的事情了,硬件基本不用动啥。
2、电阻网络 .. (2017-03-09 15:03) 回 2545889167 的帖子

我怎么记得401是带DAC的啊?不带吗?
本帖最近打赏记录:共2条打赏M币+16
jpdd521 M币 +1 最后五分 03-10
2545889167 M币 +15 歡迎探討 03-09
离线2545889167

发帖
10497
M币
15931
专家
97
粉丝
4255
只看该作者 9楼 发表于: 03-09
回 benli 的帖子
benli:能到2m就好了 (2017-03-09 15:48) 回 benli 的帖子

15m的DAC,到2m波形感觉没法看 才7.5个采样点。而且,寄生电容,啧啧啧。
可以提提怎么改进
本帖最近打赏记录:共1条打赏M币+1
jpdd521 M币 +1 - 03-10
快速回复
限80 字节
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
 
上一个 下一个