1、国家大学生电子设计大赛论文手写绘图板论文资料题目名称:手写绘图板(G题) 参赛队员: 摘要:本手写绘图板以C8051单片机为主控制器,其内置24位AD数据采集。自制恒流源为手写板提供测量电流。通过AD采集口采集表笔与地之间的电压,对采集数据处理计算出表笔所处手写板位置并在高分辨率的LCD屏幕显示相应坐标。该手写板显示坐标值的分辨率为10mm, 绝对误差不大于5mm,功率在1.5W以内,实现了低功耗。测试表明,本作品很好的完成了各项设计指标。关键词: AD采集 MCU 恒流源 功率 Abstract: The audio signal analyzer is based on a 32-bit
2、MCU controller, through the AD converter for audio signal sampling, the continuous signal discrete, and then through the FFT fast Fourier transform computing, in the time domain and frequency domain of the various audio frequency signal weight and power, and other indicators for analysis and process
3、ing, and then through the high-resolution LCD display signals in the spectrum. The system can accurately measure the audio signal frequency range of 20 Hz-10KHz, the range of 5-5Vpp mVpp, resolution of 20 Hz and 100 Hz correspondent. Power measurement accuracy up to 1%, and be able to accurately mea
4、suring the periodic signal cycle is the ideal audio signal analyzer solution. Keyword: AD采集 MCU 恒流源 功率1 方案论证与比较 31.1 采样方法方案论证 31.2 处理器的选择方案论证 31.3 周期性判别与测量方法方案论证 32 系统设计 42.1 总体设计 42.2 单元电路设计 52.2.1 前级阻抗匹配和放大电路设计 52.2.2 AD转换及控制模块电路设计 62.2.3 功率谱测量单元电路设计 63 软件设计 74 系统测试 85 结论 9参考文献: 9附录: 9附1:元器件明细表: 9
5、附2:仪器设备清单 9附3:电路图图纸 10附4:程序清单 111 方案论证与比较1.1 手写板电源比较与选择方案一、对铜板施加恒压源,通过单片机自带24位AD采集口采集电表与地电压来确定电表所处位置。用DDS芯片配合FIFO对信号进行采集,通过DDS集成芯片产生一个频率稳定度和精度相当高的信号作为FIFO的时钟,然后由FIFO对A/D转换的结果进行采集和存储,最后送MCU处理。方案二、对铜板施加恒流源,测量表笔与地之间的电阻,通过欧姆定律U=R*I测量电压。直接由32位MCU的定时中断进行信号的采集,然后对信号分析。 由于32位MCU -LPC2148是60M的单指令周期处理器,所以其定时精
6、确度为16.7ns,已经远远可以实现我们的40.96KHz的采样率,而且控制方便成本便宜,所以我们选择由MCU直接采样。1.2 处理器的比较与选择系统方案一:基于ARMST710的专用芯片的体统方案。基于ARM ST710音频频谱分析仪系统原理图如下 信号输入该方案采用DSP专用芯片ARM ST710进行控制和FFT计算,速度快,且具有波形存储和处理后的波形可以重放功能。还配有输出接口与示波器销量。可以从时域和频域观察波形,非常直观、实用。系统方案四:基于单片机C8051F060+FPGA构成信号分析仪,该系统原理方框图如图所示。单片机C8051F060独立完成4096点FFT运算和信号的失真
7、度分析。虽然这种方案在速度上不及采用专用DPS芯片快,但采用优化的FFT,并将优化后的FFT再单片机内做实验,利用外扩的128KB RAM运算4096点FFT计算幅度谱,利用FPGA进行测频和控制。其运算时间也不超过4S。能够达到设计要求。信号输入 整形信号最终方案选择:由于快速傅立叶变换FFT算法设计大量的浮点运算,由于一个浮点占用四个字节,所以要占用大量的内存,同时浮点运算时间很慢,所以采用普通的8位MCU一般难以在一定的时间内完成运算,所以综合内存的大小以及运算速度,我们采用Philips 的32位的单片机LPC2148,它拥有32K的RAM,并且时钟频率高达60M,所以对于浮点运算不论
8、是在速度上还是在内存上都能够很快的处理。1.3 周期性判别与测量方法比较与选择 对于普通的音频信号,频率分量一般较多,它不具有周期性。测量周期可以在时域测量也可以在频域测量,但是由于频域测量周期性要求某些频率点具有由规律的零点或接近零点出现,所以对于较为复杂的,频率分量较多且功率分布较均匀且低信号就无法正确的分析其周期性。 而在时域分析信号,我们可以先对信号进行处理,然后假定具有周期性,然后测出频率,把采样的信号进行周期均值法和定点分析法的分析后即可以判别出其周期性。 综上,我们选择信号在时域进行周期性分析和周期性测量。对于一般的音频信号,其时域变化是不规则的,所以没有周期性。而对于单频信号或
9、者由多个具有最小公倍数的频率组合的多频信号具有周期性。这样我们可以在频域对信号的频谱进行定量分析,从而得出其周期性。而我们通过先假设信号是周期的,然后算出频率值,然后在用此频率对信号进行采样,采取连续两个周期的信号,对其值进行逐次比较和平均比较,若相差太远,则认为不是周期信号,若相差不远(约5%),则可以认为是周期信号。2 系统设计2.1 总体设计音频信号经过一个由运放和电阻组成的50 Ohm阻抗匹配网络后,经由量程控制模块进行处理,若是一般的100mV-5V的电压,我们选择直通,也就是说信号没有衰减或者放大,但是若信号太小,12位的A/D转换器在2.5V参考电压的条件下的最小分辨力为1mV左
10、右,所以如果选择直通的话其离散化处理的误差将会很大,所以若是采集到信号后发现其值太小,在20mV-250mV之间的话,我们可以将其认定为小信号,从而选择信号经过20倍增益的放大器后再进行A/D采样。经过12位A/D转换器ADS7819转换后的数字信号经由32位MCU进行FFT变换和处理,分析其频谱特性和各个频率点的功率值,然后将这些值送由Atmega16进行显示。信号由32 位MCU分析后判断其周期性,然后由Atmegal6进行测量,然后进行显示。总体设计框架图2.2 单元电路设计2.2.1 前级阻抗匹配和放大电路设计 信号输入后通过R5,R6两个100Ohm的电阻和一个高精度仪表运放AD62
11、0实现跟随作用,由于理想运放的输入阻抗为无穷大,所以输入阻抗即为:R5/R6=50Ohm,阻抗匹配后的通过继电器控制是对信号直接送给AD转换还是放大20倍后再进行AD转换。 在这道题目里,需要检测各频率分量及其功率,并且要测量正弦信号的失真度,这就要求在对小信号进行放大时,要尽可能少的引入信号的放大失真。正弦信号的理论计算失真度为零,对引入的信号失真非常灵敏,所以对信号的放大,运放的选择是个重点。我们选择的运放是TI公司的低噪声、低失真的仪表放大器INA217,其失真度在频率为1KHz,增益为20dB(100倍放大)时仅为0.004%,其内部原理图如下图所示。其中放大器A1的输出电压计算公式为
12、OUT1=1+(R1/RG)*VIN+同理, OUT2=1+(R2/RG)*VIN-R3、R4、R5、R6及A3构成减法器,最后得到输出公式VOUT=(VIN2-VIN1)*1+(R1+R2)/RGR1=R2=5K,取RG=526,从而放大倍数为20。2.2.2 AD转换及控制模块电路设计 采用12位AD转换器ADS7819进行转换,将转换的数据送32位控制器进行处理。2.2.3 功率谱测量 功率谱测量主要通过对音频信号进行离散化处理,通过FFT运算,求出信号各个离散频率点的功率值,然后得到离散化的功率谱。由于题目要求频率分辨力为100Hz和20Hz两个档,这说明在进行FFT运算前必须通过调整
13、采样频率(fK)和采样的点数(N),使其基波频率f为100Hz和20Hz。根据频率分辨率与采样频率和采样点数的关系: f=fk/N;可以得知, fk=N*f;又根据采样定理,采样频率fk必须不小于信号频率fm的2倍,即: fk=2fm;题目要求的最大频率为10KHz,所以采样频率必须大于20KHz,考虑到FFT运算在2的次数的点数时的效率较高,所以我们在20Hz档时选择40.96KHz采样率,采集2048个点,而在100档时我们选择51.2KHz采样率,采集512个点。通过FFT 分析出不同的频率点对应的功率后,就可以画出其功率谱,并可以在频域计算其总功率。 3 软件设计主控制芯片为LPC21
14、48,测量周期为Atmega16实现,由于处理器速度较快,所以采用c语言编程方便简单.软件流程图如下: 主流程图 周期性分析和测量流程图4 系统测试4.1 总功率测量(室温条件下) 输入信号 频率 幅度 测量时域总功率(w)测量频域总功率(w) 理论值估算误差 正弦波 100Hz 1 Vpp0.127 0.129 0.125 1.2% 1KH 1 Vpp 0.1260.129 0.125 1.3%音频信号 20Hz-10KHz20mVpp-5Vpp 0.783 0.761 X 5% 1.803 1.777 X 5% 结果分析: 由于实验室提供的能够模仿音频信号的且能方便测量的信号只有正弦信号,
15、所以我们用一款比较差点的信号发生器产生信号,然后进行测量,发现误差不达,在+-5%以内。我们以音频信号进行测量,由于其实际值无法测量,所以我们只能根据时域和频域以及估计其误差,都在5%以内。4.2 单个频率分量测量(室温条件下) 输入信号频率幅度最大功率频点最大功率频点功率次大功率频点次大功率频点功率正弦波500Hz100mVpp 500Hz1.20mw 520Hz0.04mW正弦波5KHz1Vpp 5KHz 120mw 5.02KHz3.56mw音频信号20Hz-10K X 880Hz 23mw 600Hz 4.3mw结果分析:我们首先以理论上单一频率的正弦波为输入信号,在理想状况下,其频谱
16、只在正弦波频率上有值,而由于有干扰,所以在其他频点也有很小的功率。音频信号由于有多个频点,所以没有一定的规律性。由于音频信号波动较大,没有一定的规律,且实验室没有专门配置测量仪器,所以我们只好以正弦波和三角波作为信号进行定量分析测量,以及对音频信号进行定性的分析和测量。我们发现其数字和用电脑模拟的结果符合得很近。5 结论由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。参考文献:信号与系统,ALAN V.OPPENHEIM著,西安:西安交通大学出版社,1997年;数字图像处理学,元秋奇著,北京:电子工业出版社,2000年;模拟电子线路基础,吴运昌著,广
17、州:华南理工大学出版社,2004年;数字电子技术基础,阎石著,北京:高等教育出版社,1997年;数据结构与算法,张晓丽等著,北京:机械工业出版社,2002年;ARM&Linux嵌入式系统教程,马忠梅等著,北京:北京航空航天大学出版社,2004年;单片机原理及应用,李建忠著,西安:西安电子科技大学,2002年;附录:附1:元器件明细表:1、 LPC2148 2、 ATMEGA163、 AD6204、 ADS78195、 液晶320*240附2:仪器设备清单1、 低频信号发生器 2、 数字万用表 3、 失真度测量仪4、 数字示波器5、 稳压电源附3:电路图图纸 电源系统 前级放大和AD转换Atme
18、ga16控制板附4:程序清单/*/ FFT转换函数,dataR:实部,datai:虚部,/*/void FFT(float *dataR,float *dataI,int n)int i,L,j,k,b,p,xx,qq;int x11=0;float TR,TI,temp;float QQ;/位倒置/for(i=0;icountn;i+) xx=0; for(j=0;jn;j+) xj=0; for(j=0;jn;j+) xj=(i/countj)&0x01; for(j=0;jn;j+) xx=xx+xj*countn-j-1; dataIxx=dataRi;for(i=0;icountn;
19、i+) dataRi=dataIi; dataIi=0; /蝶形运算/for(L=1;L0) b=b*2; i-; for(j=0;j0) p=p*2; i-;p=p*j;for(k=j;kcountn;k=k+2*b) TR=dataRk; TI=dataIk; temp=dataRk+b; QQ=2*pi*p/countn;qq=p*count11-n;dataRk=dataRk+dataRk+b*cos_tabqq+dataIk+b*sin_tabqq;dataIk=dataIk-dataRk+b*sin_tabqq+dataIk+b*cos_tabqq;dataRk+b=TR-data
20、Rk+b*cos_tabqq-dataIk+b*sin_tabqq; /查表运算dataIk+b=TI+temp*sin_tabqq-dataIk+b*cos_tabqq; for(i=0;i0) page-; delay_nms(8000000); /上翻页 if(key=1) LCD_ClearScreen(); LCD_WriteChineseString(font3,2,10,0);LCD_WriteChineseString(font4,2,60,0); i=page*4+1; p3510(Rei,0,15); print3510(Imi*mode,50,15); p3510(Rei
21、+1,0,26); print3510(Imi+1*mode,50,25); p3510(Rei+2,0,38); print3510(Imi+2*mode,50,35); p3510(Rei+3,0,50); print3510(Imi+3*mode,50,50); page+;if(page=SampleNum/4) page=0; delay_nms(8000000); /下翻页 /失真度计算/void distortion(void)LCD_ClearScreen(); LCD_WriteChineseString(font6,3,10,20);unsigned int key;int
22、 fr;while(1) /获取频率/log_2_N=11;SampleNum=SampleTablog_2_N;reset_timer(0);init_timer0(40960);New_Flag=0;enable_timer(0);/等待采样完成/while(!FFT_Flag); disable_timer(0); /关定时器0/FFT运算/FFT(Re,Im,log_2_N);/频域功率/for(i=1;iSampleNum/2;i+) Rei=Rei*Rei;Rei=Rei/2;/总功率/Fp=0;for(i=1;iSampleNum/2;i+) Fp+=Rei;sort(&Re1,
23、&Im1,SampleNum/2-1); fr=1000000/fre;if(Tflag) LCD_WriteChineseString(font7,1,50,20);LCD_WriteEnglishString( ,0,38);print3510(fr,10,38);LCD_WriteEnglishString(US,58,38);else LCD_WriteEnglishString( ,0,38);LCD_WriteChineseString(font8,1,50,20);/按键扫描/key=getkey();if(key!=0xFF)if(key=1) SystemState=fft_
24、mode;mode=20;break; /返回if(key=2) SystemState=fft_mode;mode=100;break; /返回/按键扫描/unsigned char getkey(void) if(IO1PIN_bit.P1_21=0) delay_nms(200000); if(IO1PIN_bit.P1_21=0) return 1; if(IO1PIN_bit.P1_22=0) delay_nms(2000000); if(IO1PIN_bit.P1_22=0) return 2; if(IO1PIN_bit.P1_23=0) delay_nms(2000000); if(IO1PIN_bit.P1_23=0) return 3; if(IO1PIN_bit.P1_24=0) delay_nms(2000000); if(IO1PIN_bit.P1_24=0) return 4; return 0xFF; /排序处理/void sort(float *a,float *b,int n) /a为待排序的量,b为起位置int i,j,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1