电赛仪器仪表竞赛前软件准备指南

1、任务切换与按键检测

比赛时候每个赛题有多个任务,按点得分。因此在不同任务的时候,我们需要通过单片机控制硬件切换不同的电路。最简单的切换方式就是设立一个任务标志变量task_num,然后主程序为一个while(1)死循环,里面通过多个while判断进行任务几。每次按下按键后task_num加一切换到下一个任务里。这里提供两种具体的代码,并不太好,仅供参考。法①是执行一次任务,适用于电路切换与稳态信号的测量。法②是不断对任务进行循环,适用于检测动态的信号

① 按键电平检测+阻塞

这里假设按键按下后为高电平1

while(1)
	{
		//任务1
		...
		...
		...
		while(按键电平==0)
		{
		}
	
		//任务2
		...
		...
		...
		while(按键电平==0)
		{
		}
		
		//任务3
		...
		...
		...
		while(按键电平==0)
		{
		}
	}

② 判断flag标志位

通过外部中断,按键按下进入中断函数,在中断函数中task_num++

while(1)
	{
		while(task_num==1)//任务1
		{
			...
			...
		}
	
		while(task_num==2)//任务2
		{
			...
			...
		}
		
		while(task_num==3)//任务3
		{
			...
			...
		}
	}

2、模拟开关或继电器

不同任务要肯定改变电路不同位置的通断,改变信号经过的模块。一般来说比赛评测的时候是不允许用手接触电路,所以需要使用模拟开关或者继电器。
先说说模拟开关,型号很多,但基本原理一致。这里以TS5A23157为例。

除了VCC与GND外,还有8个端口,可以分成三类:控制端口、信号输入端口、信号输出端口,控制端口通过单片机控制决定输入端口与输出端口的导通情况。接着查阅芯片手册,如下图。从下图红框可以看到In1与In2如果输入低电平L,电路中COM引脚与NC引脚导通,如果输入高电平H, 电路中COM引脚与NO引脚导通。这就是一个典型的双二选一开关。

3、ADC采样

通俗来讲就是单片机测量电压大小,这个没什么好说,必须掌握的部分。就说一下赛前需要调试的部分。
首先32单片机的是量程0-3.3V之间,而且信号往往存在负电压,需要准备模块进行抬地或者是偏置,使信号变成正电压,一般是1.6V左右的抬地。
然后测出来的电压也不一定就是线性变化的,往往是非线性。这就与实际值产生误差,因此赛前要选多个电压值,测试实际值与测量值的对应关系进行线性拟合。
还有就是单片机自带的ADC一般是12位,不一定够用。所以如果可以的话买一个高精度的16位或者24位ADC模块,这个需要额外的调试,有一点难度。

4、定时器与与FFT计算

去年与前年的话需要测量信号的频谱,这个要完成的就是固定频率采样、FFT计算。先说采样,要固定频率的话就必须使用定时器了,这里两种方法。
先说简单的,采用定时器中断,在中断时候进行ADC采样。这个方法的问题在于频繁进出中断需要耗费大量的时间,如果频率比较高的话,采样间隔短。那么说你进入中断,开始采样,但是你还没采样完,下一个中断已经就来了,会导致程序卡死。
最可靠的方法是ADC采用定时器规则注入触发,采样完触发DMA将数据搬移到数组里。这个采样频率可达到理论极限但是特别难调试。因为中间过程全是自动触发,没有中间变量,如果出现问题很难判断是定时器配置问题、规则注入错误、ADC没有采样或者是DMA没启动等等,只能慢慢看寄存器进行排除。
FFT计算的话固定的三个函数,用的时候从例程里copy一下,没啥可讲的。记得一点,频谱的幅度不等于实际的电压值,记得对幅值进行归一化,这个与上面说的偏置电压有关,是个固定值,自己测量吧。

5、液晶屏模块

这个淘宝买模块一般都带例程了,自己跑一遍,知道怎么画线画点画字符串。提前准备好显示电压值、画频谱的功能。特别是频谱,坐标轴、刻度不能少,这个是计分点。

6、串口、蓝牙模块/无线串口与上位机

先说串口,这个一般板子例程里都会给你重定义成printf了,直接用就行。无线串口就是串口,和串口一模一样没啥可说,买了就行。蓝牙模块一般是蓝牙串口模块,使用串口通信,数据收发跑通就行。要注意的点在于蓝牙配对,一般是和手机配对,那么你就需要使用AT指令配置蓝牙模块了,这个一定要提前准备好,修改蓝牙名称和密码,不要使用默认。比赛场上多组队伍,默认名称根本找不到自己的蓝牙。
然后与手机连接肯定是为了发数据,手机上蓝牙软件也要准备好,最低要求能显示数据。连续好多届有用蓝牙的题了。去年是测量题要求在手机上画频谱,所以有能力的提前准备一下。推荐一个软件“蓝牙调试器”,图标蓝色的。发数据到上面可以自己画波形图,但是它要求通讯协议,有帧头、帧尾、校验位。有空的可以调试一下,提前准备。

7、测量频率,输入捕获模式

去年比赛测量题的扩展部分需要,往年比较少用到,大部分开发板例程就有,有空看看。

8、其他

DDS和DAC有可能使用,但是根据往届来说概率不太大。可以提前备着。DDS在今年七月份的高频题就有需要。
麦克风阵列的话七月份题中,K210和配套的麦克风阵列,有测向例程,据说买了就能用,但是一套价格不便宜。算法的话GCC算法,CSDN有例程和博客可以自学一下。

物联沃分享整理
物联沃-IOTWORD物联网 » 电赛仪器仪表竞赛前软件准备指南

发表评论