开头先说两句: 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 (责任编辑:admin) |