开头先说两句: 1、自行车的价格肯定买不到宝马。(本制作成本10元左右(使用二手件),和几百上千的专业型号发生仪器肯定没得比) 2、作为一个玩具级的小玩意,大家多多包容 多多指教哈,有什么问题可以提出来互相讨论共同改进 3、以后有空 想拿专业点的DAC芯片做个效果更好点的(比如说我花了45大洋买的还在墙角堆灰的AD9850什么的) 其实这东西做好了一段时间了,一直没空发上来,今天发上来给大家乐和乐和。 总体效果图 ![]() ![]() 使用的单片机核心 stm32f401ccu6 晶振12m ![]() 板子的背面,使用电阻网络做dac ![]() 负压产生用34063 旁边是运放AD8052 ![]() 上位机,目前功能还比较简陋 ![]() 原理图 单片机核心和电阻网络DAC部分(高清大图见附件) ![]() 信号处理部分 ![]() 原理大概是这样的: 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:讲道理没啥卵用 楼下继续,放效果图 开机的默认锯齿波 ![]() 正弦 频率在右下角,就不一一说了 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 24khz是交界点,再往上,为了保证频率准确性,增长了调节步进 ![]() ![]() 1m的波形有畸变 ![]() 三角波 ![]() ![]() ![]() ![]() 三角波继续 ![]() ![]() ![]() ![]() ![]() 方波 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 开始有一点点畸变了,这锅电容来背 ![]() pwm ![]() ![]() 占空比还是在右下角有显示 ![]() ![]() ![]() ![]() ![]() 波形合成(其实也算是任意波了) 方波与正弦波合成 ![]() 方波与三角波合成 ![]() ![]() 方波、正弦波、三角波合成 ![]() 方波与三角波合成 ![]() 方波、正弦波、三角波合成 ![]() 说点其他的东西 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#p#分页标题#e#数据传输周期间间隙造成的误触 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 最后是程序,因为上位机不是我写的,我也木有源码 下位机源代码+原理图+上位机+频率误差计算程序+频率误差计算结果 ![]() (责任编辑:admin) |