1、中低频信号发生器设计一、 方案设计:使用单片机控制 DA 芯片产生模拟波形是一种产生所需信号的简单方式,但由于受到普通 DA 芯片的设置时间以及单片机自身晶振频率的限制,产生的波形频率往往难以超过 10khz,本设计不使用传统 DA 芯片而使用模电知识设计频率可变的波形发生器电路,额外添加一个乘法器实现 AM 调制功能,并使用单片机控制其频率切换。本设计从总体上可分为三个模块:(1) 单片机控制部分(2) 波形发生模块(3) AM 调制模块由于大部分工作使用模电完成了,所以单片机部分就相对简单,只需最基本的用于维持单片机工作的分立元件,使用 IO 口控制模拟部分产生所需波形。波形发生器模块分为
2、两部分,一部分为正弦波、方波、三角波产生电路,另一部分设计为提供单片机控制上述波形发生电路中的振荡回路中的 RC 值的接口,以实现对其的频率进行控制。AM 调制模块使用市场上现有的乘法器芯片 mc1496,使用该芯片文档中的AM 调制电路并适当调节电路参数,即可实现 AM 调制功能。二、 方案仿真与实现:(一) AM 调制模块Mc1496 芯片手册中的 AM 调制电路:该电路在仿真和实际电路中都无法实现所需功能,经过反复实验结合网上的资源,得出了如下图的电路,在仿真中该电路载波输入小于 100mv 时可以输出比较良好的 AM 调制波形(调制信号不能大于该幅值的 1/2) ,在实际电路中载波输入
3、的峰峰值必须小于 70mV。仿真电路: umc1496_1IO1IO2 IO3IO4IO5IO6IO12IO8IO10IO14V112 V R420kR51kR620kC110nF0R720kR850kKey=A50%R97505R107506V28 V R111kR121k8C2100nFR1351 20R1414k12XFG1XFG2R151k13 14C310FC4100nF001810J1Key = A J2Key = A 391117 XSC1A BExt Trig+_ + _1626VDD5V7040仿真结果:OptionButton1(二)正弦波发生模块使用文氏桥式振荡电路输出正
4、弦波,使用八路模拟开关 CD4051 实现振荡回路频率的调节,具体电路见下图:R11kC1100nFR2100kKey=A 50%U1ALM324D321141D11N4002GPD21N4002GPR3120kR41k C2100nFV15 V V25 V R533kXSC1A BExt Trig+_ + _仿真结果:R11kC1100nFR2100kKey=A50%U1ALM324D321141D11N4002GPD21N4002GPR3120kR41k C2100nFCD4051INPUTV15 V V25 V R533k XSC1A BExt Trig+_ + _C3100nF R61
5、kJ1AKey = A J2BKey = A J3CKey = A J4DKey = A J5EKey = A J6FKey = A J7GKey = A C4100nF R71k C5100nF R81k C6100nF R91k C7100nF R101k C8100nF R111k C9100nF R121kCD4051INPUTCD4051OUTPUTC10100nF R131kJ8AKey = A J9BKey = A J10CKey = A J11DKey = A J12EKey = A J13FKey = A J14GKey = A C11100nF R141k C12100nF
6、 R151k C13100nF R161k C14100nF R171k C15100nF R181k C16100nF R191k301因为 CD4051 在 Mutisim 仿真库中没有,只好使用开关表示 CD4051 的功能,使用单片机控制 CD4051 的 A、B、C 三个引脚选择 07 八个开关闭合,使得 RC 振荡回路的频率可以被当输出频率较高时波形会产生比较明显的失真,可以使用可编程滤波器改善波形,但考虑到成本因素,在本设计中没有采用这种方案(以上电阻电容和实际电路中的值不同) 。正弦波频率的计算公式: )2/(1RCf方波和三角波产生电路:C150nFR110k R250kKe
7、y=A 40%R31kR410kR510kU1ALM358AD32481V15 V V25 V XSC1A BExt Trig+_ + _D11N5759A方波和三角波频率计算公式: )5/4*21ln()21(*/ RCRf 正弦波电路中的频率调节电路也可以适用于方波和三角波发生器上,实现利用单片机控制输出频率的目的。(三) 单片机控制模块:本设计侧重于使用廉价的模拟电路代替高昂的 DA 芯片实现较高频率波形发生器的功能,对于单片机的控制作用并不是十分依赖,使用单片机可以使得频率的调节更加简单,也可以为进一步开发提供帮助,单片机仿真电路:SINASINBSINCSININHSQU_TRI_A
8、SQU_TRI_BSQU_TRI_CSQU_TRI_INHXTAL218XTAL119ALE30 EA31 PSEN29RST9P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 3P0.7/AD7 32P1.01 P1.12 P1.23P1.34 P1.45 P1.56P1.67 P1.78P3.0/RXD10P3.1/TXD1P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD17P3.6/WR16P3.5/T1 15P2.7/A15 28P2.0/A8 21P2
9、.1/A9 2P2.2/A10 23P2.3/A1 24P2.4/A12 25P2.5/A13 26P2.6/A14 27U1AT89C51X1CRYSTALC12pFC22pFR110kC310uFSINA、SINB、 SINC 为正弦波发生电路中用到的 CD4051 的 3 位地址,用于选择某一个 RC 回路作为振荡回路,SININH 为正弦波发生电路中用到的 CD4051 芯片的片选。SQU_TRI_A、SQU_TRI_B 、 SQU_TRI_C 为方波和三角波发生电路中用到的CD4051 的 3 位地址,用于选择某一个 RC 回路作为振荡回路, SQU_TRI_INH 为为方波和三角波
10、发生电路中用到的 CD4051 芯片的片选。用以上八个脚控制输出的正弦波、方波、三角波的频率。P1.0P1.3 为用户改变电路运行状态的按键,分别为:改变输出波形类型、增大输出频率、降低输出频率、改变 AM 调制波形输出信号的载波频率。三、 课程设计感想正如方案设计中所述,这个课程设计的目的是为了克服普通 DA+单片机构成的波形发生器电路只能输出低频信号的障碍,在实验中,我发现使用文氏振荡器产生正弦波可以输出频率 100khz 以上的信号,可以满足本设计要求,但当其输出频率较高时会出现比较明显的失真,这个问题可以使用可编程滤波器滤出所需频率来解决,也可以自建中心频率可变的带通滤波器滤出所需频率
11、,虽然最后由于时间和成本的限制没能够设计出一个符合要求的滤波器,但我找到了一款非常人性化的滤波器设计软件 FWP3232,使用该软件可以方便的设计有源滤波器,但要实现中心频率可变需要的模拟开关数目太多(我目前只想到这种使用模拟开关的解决办法) ,只好放弃这个想法。单片机的设计比较简单,只要在主程序中不断查询几个按键,根据用户的按键操作改变控制模拟开关的管脚电平实现对输出波形频率、类型的控制即可。最麻烦的是乘法器的制作,因为我最开始不知道使用 mc1496 构成的乘法器用于实现 AM 调制时载波的峰峰值不能大于 70mv,连续两天都看不到 AM 调制波形还十分匪夷所思的看到类似载波和调制信号叠加的波形;另外,我最开始不知道mc1496 的输出幅值和那些参数有关,只是单纯的使用了 pdf 中的电路,结果怎么也看不到,后来在网上搜集了一些资料才知道我放置在管脚 5 上的电阻太大了,导致 mc1496 芯片中的三极管射级输出电流太小,乘法器无法起到相乘的作用,自然无法实现调制。本次课程设计最大的收获在于深化了我对单片机在控制系统中的作用的理解,单片机不一定要承担所有的功能(输出波形、提供菜单、控制外围器件) ,使用辅助的外围模块实现主要功能,使用单片机提供操作接口,则更可以满足性能需求又可以提供实时高效的服务。