一、基于单片机的信号发生器设计方案
信号发生器用于调节射频匹配电路,可以自行设计,一般普通的信号发生器需要输出正弦波、方波、三角波以及锯齿波等信号,可通过按键调节信号的频率以及信号的幅度,其具体的设计方案如下:
1、总体方案设计
信号发生器发送出去的是模拟信号,而单片机输出的是数字信号,因此在设计信号发生器系统时,需要使用到数模转换芯片,可选择数模转换芯片DAC0832,然后再利用运算放大器将DAC0832输出的电流信号转换成电压信号。这样信号发生器便输出了模拟电压。系统要输出各种波形信号,则要求DAC0832在运放的作用下,在不同时间点输出不同的电压值,再将这些电压值连接起来,便构成了相应的波形信号。而要得到不同的电压值,则单片机需要将8位I/O口接到DAC0832芯片的8位数据信号输入端,单片机通过改变8位I/O口的数字信号,便可以在DAC0832以及运放的作用下,得到不同的电压值,再在时间的作用下形成不同的波形信号。波形信号频率的的变化可通过改变单片机8位I/O输出口的数据变化率来实现。
波形信号的幅度由DAC0832的参考电压VREF来决定,为了确保VREF的大小可变,本系统使用到了芯片PCF8591,将PCF8591芯片的模拟电压输出端接在DAC0832的VREF上,通过改变PCF8591模拟电压输出值便可改变VREF值,从而改变波形信号的幅度值。而PCF8591的模拟电压输出值则是尤其I2C总行上的数据所决定,利用单片机的I/O口模拟I2C与PCF8591进行通信,那么单片机便可通过I/O口控制VREF电压的变化,从而控制波形的幅度变化。
2、系统硬件设计
(1)晶振电路设计
单片机稳定工作则需要稳定的时钟信号,而时钟信号则是由晶振电路产生,因此晶振电路设计的好坏直接影响到最小系统的稳定性。单片机的18脚和19脚为晶振连接输入脚,将晶振X1的两端连接到单片机18和19脚之后便会产生时钟信号,此时的信号会存在不稳定的问题,需要在晶振Y1的两端分别外接一个22PF电容C1、C2到GND,该电容为晶振的匹配电容,晶振匹配了电容之后,那么产生的时钟信号就比较稳定。出现的频偏也是在20PPM的范围内。这样才能确保系统时钟稳定可靠。
(2)复位电路设计
最小系统除了晶振电路之外,还需要具备复位电路,单片机上电后,启动的时候,需要复位电路先进行复位,确保系统运行的起始地址一致 ,保证系统工作的稳定性,复位是利用电容C3与R1来实现的。
(3)波形幅度调节电路设计
为改变系统输出的波形幅度值,本系统使用到了PCF8591芯片,该芯片是一个8位CMOS数据采集器,该芯片可以将模拟信号转换成数字信号,再通过I2C数据总线将该数字信号发送给单片机;也可以反过来,单片机通过I2C总线将数字信号发送给PCF8591芯片,再由该芯片进行数模转换后,变成模拟电压再由AOUT脚输出。利用这一原理,本系统为了调节信号发生器的幅度值,将单片机P2.0和P2.1模拟I2C与PCF8591通信,这样单片机便可以控制PCF8591的AOUT输出端模拟电压的大小,再将其接入到DAC0832的VREF脚上,便可以控制波形的幅度。
(4)数模转换电路设计
信号发生器产生各种波形信号使用到了DAC0832数模转换芯片,该芯片内部集成了一个8位D/A转换器,一个8为DAC寄存器,一个8位输入寄存器以及一个控制电路,其内部采用的是倒T型R-2R电阻网络,将该数模转换芯片与运算放大器LM358一起使用,便可以使运放输出端有28 =256个电压值输出。在不同时间内变换输出不同的电压值,使其产生周期性的变化便能形成相应的波形信号。
(5)按键中断控制电路设计
基于单片机的信号发生器要求输出方波、三角波、锯齿波以及正弦波信号,信号的幅度和频率可调,用户可通过系统按键来对信号发生器进行设置。在系统中,设计了8个按键,其功能分别为100HZ频率加按键、1hz频率加按键、-1hz频率减按键、1V电压幅度加按键、0.1V电压幅度加按键、-0.1V电压幅度减按键、波形切换按键、扫频开关按键。为了方便系统设计,采用独立按键设计方法,利用单片机P1口将各按键连接,通过软件将P1口设置成上拉状态。当没有按键按下时,单片机P1口中的所有I/O口检测的到时高电平;当有按键按下时,则该按键对应单片机的I/O口会被拉低,变成低电平。单片机便能检测到,从而调用该按键程序执行相应的功能。
(6)电源电路设计
本系统电路设计是在Proteus仿真软件上设计,该仿真软件有各种电源,可直接调用。无需使用电压转换芯片。在本系统单片机使用5V电压供电,而为了使输出波形幅度为10V,则PCF8591采用10V电压供电,而运算放大器采用±15V供电,直接从仿真软件上取电源即可。
3、系统软件设计
完成proteus软件电路图设计之后,接下来需要对单片机编写驱动程序,系统驱动程序的编写是在keil软件平台上完成的,Keil软件打开后,要先建立工程,然后在工程当中建立一个.c文件,在此文件中编写代码驱动程序:
(1)系统主程序设计
主程序是软件系统中最为重要的程序,因为系统程序是由各个子程序所构成,而子程序的调用全部是在主程序中来实现的,主程序设计的好坏直接能影响到系统的逻辑结构,影响到系统工作的稳定性。在本系统中,系统开始运行后,先会执行主程序,在主程序中对单片机及其外围元件进行初始化设置,完成初始化设置之后,系统就会执行正弦波程序,让信号发生器输出正弦波信号,然后再去检测是否有按键按下,如果有按键按下,系统检测到后,便会执行相应按键的程序,从而改变信号发生器输出的波形。如果没有按键产生,则系统继续保持当前波形输出,然后再继续去访问是否有按键按下,如此循环下去。
(2)按键扫描程序设计
本系统是通过按键来改变信号发生器的波形,系统一共有八个按键,按下不同按键时,系统需要输出不同的波形。定义按键6为波形切换按键,按键0为100HZ频率增加按键,按键1为1HZ频率增加按键,按键2为1HZ频率减按键,按键3位1V幅度增加按键,按键4为0.1V幅度增加按键,按键5为0.1V幅度减小按键,按键7位扫频按键,flang为标志位,用于判断按键6按下的次数当flang为1是默认输出正弦波;当flang为2时,输出三角波;当flang为3时输出锯齿波;当flang为4时,输出方波;当flang为5时,则会令flang=1,输出正弦波。
因此,当有按键按下时,系统调用按键程序会去判断是哪个按键按下,如果是按键6按下,表示需要切换信号发生器的输出波形,令flang 1,然后判断flang的值,再输出相应的波形信号。当是0按键按下时,则系统会在原有的波形上,改变其输出频率,使频率增加100HZ;当按下的是1按键,则将频率增加1HZ;当2按键按下,则将频率减小1HZ;当按键3按下时,表示要在原有波形的基础上增加1V的波形幅度;当4按键按下,则幅度增加0.1V;当5按键按下,则幅度减小0.1V;当7按键按下,则进行扫频。当执行完按键程序后,返回系统主程序。
二、信号发生器的设计要求有哪些
基于单片机设计的信号发生器属于简易信号发生器,主要能产生方波、三角波和正弦波并进行仿真,这类信号发生器设计好后,应满足以下要求:
1、基本性能指标要求
(1)频率范围:100Hz~1kHz。
(2)输出电压:方波 Up-p≤24V,三角波 Up-p=6V,正弦波 Up-p>1V。
2、扩展性能指标要求
频率范围分段设置10Hz~100Hz,100Hz~1kHz,1kHz~10kHz;波形特性方波t r<30us(1kHz,最大输出时),三角波r△<2%,正弦波r~<5%。