最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 电子DIY > 单片机 >

AVR单片机的DDS信号发生器V2.0-正弦波-方波-锯-三角形-心电图和

时间:2013-02-13 16:44来源:未知 作者:admin 点击:
下面是一些测试信号示波器屏幕上: 正弦波信号 方波信号 三角形信号 看到牙齿信号 反向看到牙齿信号 心电信号 噪音 高速1MHz的信号
改进AVR DDS信号发生器是在这里。 第一AVR单片机的DDS V1.0发电机只是一个没有任何幅度控制运行的DDS算法的尝试。 这一次,我仍然想保持如普遍使用的电路元件,单面电路板上加上良好的功能来的最低计数简单的事情。
AVR_DDS_signal_generator_V2_0.jpg
  AVR的DDS规范   AVR DDS信号发生器V2.0是基于DDS信号发生器,它使用稍加修改固件加斯帕的DDS行ASM AVR GCC的C程序算法适应。 信号发生器有两个输出 - DDS信号和高速[1 .. 8MHz的方波信号 - 以及可重温微控制器熔丝设置错误,或用于其他用途。 高速(HS)的信号是从ATMEGA16 OC1A(PD5)引脚直接输出。  DDS的输出用于其他信号所产生的所有通过的R2R电阻网络,并通过抵消LM358N和幅度调节电路调整。 偏移和幅度可以由两个电位器调节。 偏移,可调节范围+5 V .- 5V,而在幅度范围0 .. 10V。  DDS的频率范围是从0到65534Hz,足够用于测试音频电路和其他任务。 
  V2.0的主要AVR的DDS信号发生器的功能: 
  • 简单的电路,方便和便宜的组件;
  • 单面印刷电路板;
  • 框与外部的交流电源插头电源;
  • 专用高速(HS)的信号输出至8MHz;
  •   DDS的可变幅度和偏置信号;
  •   DDS的信号:正弦波,方波,锯,转看到,三角形,心电图和噪音。
  •   2 × 16 LCD菜单;
  • 直观的5键键盘。
  • 频率调整步骤:1,10,100,1000,10000HZ;
  • 电后恢复最后一次配置。
在框图中,你可能会看到信号generatorV2.0的逻辑结构 

 
正如你可以看到设备需要几个电压:+5 V,- 12V,+12 V,GND。  - 12V和+12 V用于胶印和幅度控制。 在这种情况下,电源结构使用简单的变压器和稳压器很少。 
.AVR_DDS_2_0_power_supply_12_5V.PNG
电源模块是一个单独的原型PCB板组装。 
.AVR_DDS_powersupply_board.jpg
如果你不想建立电源,您可以使用PC ATX电源供应器,在所有需要的电压。 您可能需要修改Molex连接器接线如下: 
.ATX_molex_wiring.jpg
  LCD菜单控制 所有操作都可以被视为在LCD菜单。 菜单可控制5个按钮,液晶显示模块 
AVR_DDS_front_panel.jpg
向上和向下箭头按钮可用于浏览菜单,而左,右箭头按钮用于改变频率值。 当按下中间的按钮 - 信号产生开始。 按中间的按钮再次停止信号发生器。 下面是一个完整的菜单系统,信号发生器。 

重要通知,有一个单独的菜单改变频率步进。 如果您需要更改发生器频率范围宽,这是很方便。 这允许设置任何频率相对较少的按钮点击。 
噪音的产生,没有频率设置。 它使用简单兰特()函数,结果连续输出DDS输出。 
高速信号有4个频率可供选择:1,2,4和8MHz。 
电路图和PCB 的DDS发生器(不含电源)电路原理图,非常简单容易的访问组件。 它使用了以下几个部分: 
  •   AVR单片机ATmega16单片机主频16MHz的外部晶体;
  • 标准HD44780的基于2 × 16液晶显示模块;
  •   R2R DAC,简单的电阻;
  •   LM358N低功耗双运算放大器;
  • 两个电位器;
  •   5个按钮;#p#分页标题#e#
  • 多个接头和插座。
电路图和PCB: 
.AVR_DDS_2_0_circuit.png
单面印刷电路板: 
.AVR_DDS_2_0_pcb.JPG
大会   DDS发生器组装塑料盒: 
AVR_DDS_signal_generator_inside_V2_0.jpg
试运行: 
AVR_DDS_signal_generator_working.jpg
  AVR DDS 2.0固件 正如我刚才所说的DDS功能是修改后的加斯帕的 DDS算法。 主要修改是增加了额外的ASM线,使停止DDS生成。 在1.0版中是唯一的选择是复位设备,DDS功能检查,如果CPHA位在SPCR寄存器的设置是在外部中断服务程序(停止按钮)设置。 所以,现在的算法需要10个CPU周期,而不是​​9。 
  无效的静态内嵌Signal_OUT(CONST uint8_t uint8_t *信号,uint8_t AD2,uint8_t AD1,AD0) { 
  ASM挥发(EOR R18,R18,R18 <-0“,” N  T“ 
  “EOR R19,R19,R19 <-0”的“ n  T” 
  “1:” N  T“ 
#p#分页标题#e#  “添加R18,0%; 1个周期”的“ n  T” 
  “ADC,1%R19; 1个周期”的“ n  T” 
  “ADC%A3%2; 1个周期”的“ n  T” 
  “防止山泥倾泻; 3个周期”的“ n  T” 
  “%4 ​​出,__tmp_reg__; 1个周期”,“ N  T” 
  “SBIS 5%,2,1个周期,如果没有跳过”,“ N  T “ 
  “RJMP 1B,2个周期。  共有10个周期“,” N  T“ 
   
  :“R”(AD0),“R”(AD1),“R”(AD2),“E”(信号),“我”(_SFR_IO_ADDR(PORTA)),“我”(_SFR_IO_ADDR(SPCR)) 
  “R18”,“R19” 
#p#分页标题#e#  );} 
  DDS信号表放置在闪光路段地址与0xXX00开始。 因此,这些路段将在适当的内存位置的makefile定义: 
  #定义路段存储信号表 
  LDFLAGS + = - WL -节启动=. MySection1 = 0x3A00 
  LDFLAGS + = - WL -节启动=. MySection2 = 0x3B00 
  LDFLAGS + = - WL -节启动=. MySection3 = 0x3C00 
  LDFLAGS + = - WL -节启动=. MySection4 = 0x3D00 
  LDFLAGS + = - WL -节启动=. MySection5 = 0x3E00 
  LDFLAGS + = - WL -节启动=. MySection6 = 0x3F00 
  这里描述的LCD控制库。 
我不想去代码讨论太深。 源代码的评论非常好,如果会有关于源代码的任何问题和建议 - 随意删除评论。 
测试和讨论 我已经测试信号发生器,示波器和频率计数器。 信号看起来像所有频率的范围[1至65535Hz]预期。 振幅和偏移调节工程确定。 如果offset设置为5V,那么最大的明确信号幅度可能是5V另一5V已经用于抵消(相同的是如果偏移量为- 5V)。 
#p#分页标题#e#
下面是一些测试信号示波器屏幕上: 
.AVR_DDS_sine.JPG   正弦波信号 
.AVR_DDS_square.JPG   方波信号 
.AVR_DDS_triangle.JPG   三角形信号 
.AVR_DDS_saw_tooth.JPG   看到牙齿信号 
.AVR_DDS_rev_saw_tooth.JPG   反向看到牙齿信号 
.AVR_DDS_ECG.JPG   心电信号 
.AVR_DDS_noise.JPG   噪音 
.AVR_DDS_high_speed.JPG   高速1MHz的信号 

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容