毕业设计 基于AVR无线收发模块的脉搏监测系统的设计


🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于AVR无线收发模块的脉搏监测系统的设计

1  硬件设计

1.1 采集部分

 图1.1脉搏信号采集电路

    脉搏信号采集电路如图1.1所示,LM393的UA接为单位增益缓冲器以产生2.5V的基准电压。

    由于红外接收二极管在红外光的照射下能产生电能,单个二极管能产生O.4 V电压,0.5 mA电流。图4-1中D2是红外接收二极管(BPW83型)和D1是红外发射二极管(IR333型),他们的工作波长都是940 nm,在指夹中,红外接收二极管和红外发射二极管相对摆放以获得最佳的指向特性。红外发射二极管中的电流越大,发射角度越小,产生的发射强度就越大。在图4.l中,R5选100 Ω是基于红外接收二极管感应红外光灵敏度考虑的。R5过大,通过红外发射二极管的电流偏小,BPW83型红外接收二极管无法区别有脉搏和无脉搏时的信号。反之,R0过小,通过的电流偏大,红外接收二极管也不能准确地辨别有脉搏和无脉搏时的信号。当红外发射二极管发射的红外光直接照射到红外接收二极管上时,UB的反相输入端电位大于同相输入端电位,Vi为“O”。当手指处于测量位置时,会出现二种情况:一是无脉期。虽然手指遮挡了红外发射二极管发射的红外光,但是,由于红外接收二极管中存在暗电流,仍有lμA的暗电流会造成Vi电位略低于2.5 V。二是有脉期。当有跳动的脉搏时,血脉使手指透光性变差,红外接收二极管中的暗电流减小,Vi电位上升。因为红外线是不可见光,在接上电源时不能直观的知道他是否导通,因此在R5后面节上一个指示灯来判别他是否正常工作。

    因此脉搏信号的采集实际上是通过红外接收二极管,在有脉和无脉时暗电流的微弱变化,再经过UB的放大而得到的。所采集到的信号为2μV左右的电压信号。

1.2 滤波部分

     按人体脉搏在运动后最高跳动次数达240次/分计算来设计低通放大器。低通滤波器是一种用来传输低频段信号,抑制高频段信号的电路,当信号的频率高于某一特定的截止频率fh时,通过该电路的信号就会被衰减,而频率低于fh的信号则能无阻通过该滤波器。能通过的信号频率范围定义为通带:阻止信号通过的范围定义为阻带,通带与阻带的分界点就是截止频率fh。A0为通带内的电压放大倍数,称为通带电压增益。当输入信号的频率由小到大增加到使滤波器的放大倍数等于0.707A0时,所对应的频率就是截止频率fh。

   图4.2为压控电压源(VCVS)有源二阶低通滤波器电路。他由两节RC滤波电路和同相比例放大电路组成,信号从运放的同相端输入,故滤波器的输入阻抗很大,其输出阻抗很小。运放OP07与R13和R14组成电压控制的电压源,因此称为压控电压源LPF。优点是电路性能较稳定,增益容易调节。令w0=1/RC,称为特征角频率:Q=1/(3-Auf),称为等效品质因素;则 A(s)=Auf*w0^2/(s^2+w0*s/Q+w0^2)=A0*w0^2/(s^2+w0*s/Q+w0^2)用s=jw代入上式,可得到幅频响应表达式:20lg|A(jw)/Auf

 图1.2 滤波电路

   由上面截止频率计算公式,图4.2的截止频率为:

fh=1/(2*3.14*R12*C)=1/(6.48*10*10^3*0.47*10^-6)=33.8Hz采集到的信号由J1接入,这个信号中含有几种干扰信号,主要有50Hz的电源信号干扰,所以这部分的主要任务就是把主要干扰滤掉。因此滤波电路的截止频率为33.8Hz,于是对于50Hz的干扰则不能通过滤波电路输出。而放大倍数A=U1/U0,在这个电路U1/U0=R14/R13=235,所以图4.1不仅只是滤波作用,还可以对电压进行放大作用。然而对于50Hz干扰信号来说,16.4Hz已经足够消除他了,对于2uV这样弱的信号来说235倍的放大是远远达不到单片机最小识别高电平(3V)信号的,所以必须还要一个放大电路。可以用个精密的滑动变阻器来代替R13,提高放大倍数。

1.3 放大部分

由于脉搏传感器阻抗高的特点,可以采用传统的同相放大电路如图4.3所示,因为同相比例运算电路在输入差摸信号的同时伴随着共摸信号输入,因此共摸抑制比成为影响运算误差的重要因素。所以当开环差摸增益Aod,共摸抑制比Kcmr越大,相对误差δ的数值就越小。

  图1.3

    信号经过滤波电路之后,电源50Hz的强干扰信号都已经被滤掉。他从C9的2端输入,而C9则对信号再次过滤,把前面留有的暗电流进一步滤掉。运放OP07、R15与R17组成一个放大倍数可调的主电路。为了防止放大电压高过单片机可以处理的+5V电压,于是只给运放OP07提供5V是供电电压,这样就可以让信号放大超过5V时,也只有5V。经过滤波放大电路之后的信号有高低电平,可以让MCU系统识别了,但还不是很完美的方波,因此在通过一个波形整形电路,把他整成一个完美的方波信号。

1.4 555施密特整形电路

555构成了施密特电路的基本电路如图4.4.1所示:

施密特电路的工作特点是:

    1、有两个稳定状态,但是这两个稳定状态要靠输入信号来维持,而且转换也要靠输入信号的转换来实现

2、输出电压和输入电压具有迂回特性,抗干扰能力强。

施密特电路的用途是:

    (1)整形:将不好的矩形波,变为较好的矩形波。

(2)波形转换:将三角波、正弦波和其它波形转换为矩形波;转换后的输出波形与输入波形相同。

555的内部与外部引脚结构如图4.4.2所示:    

     555定时器构成施密特触发器的电路图如图4.4-3所示,波形图如图4.4-4所示。施密特触发器的工作原理和多谐振荡器基本一致,原则也基本相同。只不过多谐振荡器是靠电容器的充放电去控制道路状态的翻转,而施密特触发器是靠外加电压信号去控制电路状态的翻转。所以在施密特触发器中,外加信号的高电平必须大于等于2/3V ,低电平则必须小于等于1/3V ,否则电路不能翻转。   

    由于施密特触发器采用外加信号,所以放电端7脚就空闲了出来。

因此整形电路如图1.4.3所示:信号从J1通过,整形后基本是个方波从J2输出,进入到下一个部分。

图1.4.3

1.5 下位机处理部分

    下位机单片机部分又分为:单片机复位电路、数码管显示部分电路、无线发送模块部分、以及单片机的晶振和中央处理部分。

1.5.1 单片机复位电路

    复位电路图如4.5.1所示:

 图1.5.1

      复位电路有多种,如上电复位,按键复位等,由于VCC(5V电压)是对整个下位单片机部分的供电,因此如果采用上电复位,那么整个模块在复位时就会使整个电路处于开,或者通的两个状态,所以考虑到整个电路的供电问题,采用按键复位 ,这样可以在复位时候,不需要复位的部分还可以继续处于通电状态。复位电路中安装发光二级管的作用是,指示电路是否正常得到供电,也可以用来判断复位电路的按键是否已经按下,即是否复位。RST是接到单片机上的复位键。

1.5.2 数码管显示部分电路

    按人体最高时候心跳240次/分的要求,数码管最少用到3位,由于考虑到硬件的制作过程,因此选择4位数码管来显示。其原理图如图1.5.2所示

  图1.5.2

    图1.5.2中,J2是一个4.7K的排阻与单片机的PA与VCC口相连,然后跟数码管相连,数码管是采用共阳的,共阳的数码管因为有较高的电源电压,所以亮度比共阴的亮。用单片机的PC口的PC4-PC7口来做数码关的片选信号接入端。在调试数码管的时候写的程序就必须符合接入管脚的要求,否则数码管就会显示不正常,或者不显示的现象。三级管(8550)则可以选择个人熟悉的来代替。排阻对数码管的作用也是比较大的,如果选择的排阻阻值过低,那么可能因为电路中电流过大,而烧坏数码管,选择的阻值过大而又可能由于输出电流过小而,使数码管显示暗淡,或者不显示。

1.5.3 无线发送模块部分

    CC1100无线收发模块,他有自己的工作范围,以及引脚电路,所以使用时要特别注意,否则容易被烧坏。前面虽然介绍了他的主要功能、内部结构以及管脚图和使用说明等,但他在电路中实际用到的管脚如图4.5.3.1所示,只用到10个引脚,所以在制作电路的时候要对他合理的封装。图1.5.3.2是无线发送模块在下位机的连接图。

图1.5.3.1                         图1.5.3.2

    图4.5.3.2的左端电路是无线模块,他的引脚通过J4的那个排针接到单片机的I/O口上,分别对应为PB7-SCK、PB6-SO、PB5-SI、PB3-GDO0、PB2-CSn、PD2(INT0)-GDO2。图中最右端就一个提供给CC1100供电的电路,因为这个芯片所用到的最佳电压为VDD=3.3V,所以采用电阻分压法提供VDD,由电路可以知道:

因此VDD=5*39/(39+20)=3.305V

1.5.4 单片机的晶振和中央处理部分

     单片机的晶振和中央处理部分电路图如图4.5.4所示:由于ATmega8515的使用晶振范围是0-8MHz,所以在选择晶振的时候必须在其范围内,否则就容易出错。考虑到写程序的时候用到定时器定时,因此选择6MHz的晶振,中央处理部分主要负责处理从PB0进来的方波信号,这个信号是经过前面的555施密特整形电路整成方波之后送给单片机,因为方波有就是我们所知道的矩形波,它的高电平也达到单片机的要求,所以ATmega8515通过程序可以直接处理他,并将处理出来的信号传给CC1100和数码管,让CC1100发送给上位机的接收部分,而数码管则显示1分钟内脉搏跳动的次数。

  图1.5.4

1.6 上位机部分

上位机部分包含无线接收模块部分、数码显示部分(数码显示部分原理跟下位机是一样的)、接收数据处理部分、串口部分。整的这部分它完成的主要功能是接收下位机发送过来个数据,并用数码管显示,看是否接收到的数据跟发送的数据比配,通过串口与PC机进行串口通讯,因为CC1100无线模块不能跟PC机直接通讯。下面分开说明每个部分的作用以及对应的原理图。

1.6.1 无线接收模块部分

    无线接收模块部分与无线发送模块部分连接电路是一样的,不同的是他只是做为一个接收,他们两个和起来才能完成无线传送的功能。他与MCU的接口电路与下位机部分的接口电路基本是一样的,只是两种单片机的I/O口的名字不一样。接收模块部分原理图如图4.6.1所示。

 图1.6.1

1.6.2 接收数据处理部分

    接收数据处理部分,其原理图如图4.6.2所示。他由单片机,复位电路已经晶振电路组成,信号经过CC1100接收之后,传给它处理,他主要是负责对进来的信号进行重处理:把接收到的信号放到用数码管显示出来,人为的观察是否与下位机的数据是否一样,不一样则重新发送。在一个是他通过MAX232芯片以及串口接口和串口程序跟PC机进行通信。从而达到整个监测系统的完整行。

   图1.6.2                                        图1.6.3.1

1.6.3 串口部分

    它的原理图如4.6.3.1所示。在图中可以知道只有一个芯片——MAX232,这个芯片前面已经介绍,他放在这里的主要作用是,通过单片机的RXD与TXD两个引脚(一个输入,一个输出)经过串口接口与PC口通讯。

    串口通讯应用:

串行通信是指数据的各位是一位一位得按顺序传送的通讯方式。它的突出优点是只需要一根传输线,甚至可以利用电话线作为传输线,这样就大大降低了传输成本,特别使用于远距离通讯。其缺点是传送速度较低。假如并行传送N位数据所需要的时间为T,那么串行传送的时间至少为NT,而实际上总是大于NT。

1、串行通讯的两种基本方式:

围绕着当两个设备进行串行通讯时,如何才能保证接受机接受到正确的字符这个问题,通常采用通讯双方都认可的两种传送方式(即通信方式)。

异步传送方式

在异步传送方式中,字符是按帧格式进行发送的。每帧的格式如图3.1所示。在帧格式中,先是一个起始位“0”,然后是5至8位数据。异步传送方式规定低位在前,高位在后;接下来是奇偶校验位(可略);最后一位是停止位“1”。异步通信的帧格式如图4.6.3.2(a)所示。

n-1                 第N个字符(一串行帧)         n+1

 P  

1

0

D0

D1

D2

D3

D4

D5

D6

D7

P

1

0

D0

   起始位        数  据   位            校验位      停止位

                     图1.6.3.2(a) 异步通信的帧格式

这种传送方式利用每一顿的起、止信号来建立发送与接收之间的同步。其特点是:每一帧内部各位均采用固定的时间间隔,但帧与帧之间的时间间隔是随机的。接收机完全靠每一个帧的起始位与停止位来识别字符传送是正在进行还是已经结束,或是一个新的字符。这也就是“异步”的涵义所在。必须指出,在异步传送时,同步时钟脉冲并不传送到接收方,即双方各用自己的时钟源来控制发送和接收。

同步传送方式

同步传送方式是一种连续传送的方式,它不必像异步传送方式那样要在每个字符都加上起止位,而是在要传送的数据块前加上同步字符SYN,而且数据没有间隙,如图4.6.3.2(b)所示,使用同步传送方式,可以实现高速度,大容量的数据传送。

开始                                                         终止

同步字符

同步字符

数据段

CRC字符#1

CRC字符#2

图4.6.3.2(b)  串行通讯的同步传送方式

在同步传送中,为了保证接收正确无误,发送方除了传送数据外,还要将时钟信号同时传送。

在串行通讯中有一个重要的指标叫做波特率。它定义为每秒钟传送的二进制数码的位数,以位/秒作为单位。波特率反映了串行通讯的速率,也反映了对传输通道的要求,波特率越高,要求传输通道的频带就越宽。在异步通讯中,波特率为每秒传送的字符数和每个字符位数的乘积。

2、串行口的工作方式

串行口控制寄存器SCON格式如图4.6.3.2(c)所示:

          D7   D6    D5    D4    D3    D2   D1   D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SCON

图1.6.3.2(c)串行口控制寄存器SCON格式

SM0,SM1为串行口工作方式选择位。可选择四种工作方式,如表4.6.3.3所示。表中f为单片机时钟频率。                

SM0

SM1

方 式

功   能

波特率

0

0

0

同步移位寄存器

   f/12

0

1

1

10位异步收发

   可变

1

0

2

11位异步收发

 F/64或 f/32

1

1

3

11位异步收发

可变

表4.6.3.3串行口工作方式选择

由于本次设计只用到方式1,故在此详细介绍工作方式1。

在方式1状态下,串行口为8位异步通信接口。一帧信息位10位:1位起始位(0),八位数据位(低位在前)和1位停止位(1)。TXD位发送端,RXD为接收端,波特率可变。

发送:

串行口以方式1发送时,数据由TXD端输出,CPU执行一条写入SBUF的指令后,便启动串行口发送,发送完一帧信息时,将发送中断标志TI置1。

  方式1发送时的定时信号,即发送移位脉冲,是由定时器1送来的溢出信号经过16或32分频(取决于SMOD的值)而取得的,因此其波特率是可变的。

接收:

方式1接收是在REN位置1的前提下,从搜索到 起始位而开始的,在无信号时,RXD的线的状态为1,当检测到存在由1到0的变化时,即认为收到个字符的起始位,接收过程随即开始,在接受移位脉冲的控制下,把接受到的数据一位一位地移入接收寄存器,直到9位数据(包括1位停止位)全部收齐。在9位数据收齐之后,还必须同时满足以下两个条件,这次接收才能被真正确认:

    当满足两个条件:(1) RI=0;(2) SM2=0或接收到地停止位为1时,便将接收移位寄存器中的8位数据存入串行口数据缓存器SBUF,收到的停止位则进入RB8,并使接收中断标志RI置1。若这两个条件不满足,则所接收的数据无效,串行口接着又开始寻找下一个起始位,准备接收下一帧数据。

2  系统调试与验证

2.1硬件调试

   硬件调试主要有以下几步:

  ·检查电路原理图是否有错误;

  ·根据电路原理图检查PCB图是否有错误:

  ·制板,根据PCB图检查PCB板是否有错误,主要检查是否有线粘连;

  ·焊件,测试各个元件管脚连接是否有错误,并检查是否有虚焊脱焊的问题

  针对不同模块的硬件除了以上的调试外还应该有相应的调试方法。

2.1.1 采集部分

   采集部分是整个电路的关键部分,因为如采集不到信号,那么就无法进行下面的所以步骤,而这部分的信号又是比较弱,容易受干扰,所以在调试过程中是比较难以调试。由于对仪器的要求也很高,所以只能粗略的调试。将手指放于做好的光电传感器之间,然后就用示波器接到采集部分的信号输出,观察是否有1Hz左右频率的信号。由于红外光穿透过来引起接收管的吸收减弱了好多,所以输出的电压值很小,所以比较难区分出来的信号是不是脉搏信号,只有通过滤波放大部分的处理之后才能知道他是不是脉搏信号,因此滤波放大部分的调试同样很重要。

2.1.2 滤波部分

    滤波部分的调试,主要是看他是否能满足设计时候低通的要求,首先用函数信号发生器产生50Hz的信号,让他通过滤波部分,用示波器观察其输出端,是否还有50Hz的信号出来,如果有说明滤波不合格,需要更改,如果没有则慢慢减少信号原的输出频率,直到观察到输出的波形没有失真的时候,记下此时信号对应的频率。如果接近开始我们设的理论值,那么说明,滤波部分没有问题,假如有40Hz以下的频率可以正常通过时,这个滤波电路还是可以用的,因为他可以有效的减少电源50Hz的干扰信号了。经过EWB仿真如图2.1.2所示:当频率接近33Hz的时候,他几乎衰减到0。所以滤波部分没问题。

  图2.1.2   

2.1.3 放大部分

    对于弱信号的处理,放大电路部分是不可少的 ,为了把电压提升到单片机能认识的最小高电平3V,因此对脉搏采集的信号(大约2uV)就必须把放大倍数到1.5*10^6以上,这部分的输入信号也是先通过函数信号发生器或者能产生uV级的电压原做为信号的输入。在用示波器或者电压表来测量输出的电压,其实最好是用函数信号发生器提供类似脉搏信号的信号,这样就可以使测量脉搏信号好调动一点。利用电路中的精密可调电阻,来改变电路中的电压放大倍数。    

2.1.4 555整形部分的调试

     这个部分虽然没有前面两个部分电路那么重要,使用他是为了让单片机能更好的处理信号,因此对他的调试只用看他是否能对1Hz-4Hz,3V左右的3信号进行整形。如果能整成放波,那么就可以使用。那样的信号用函数信号发生器来产生。用示波器来观察其输出。

     经过测试,可以知道这个电路可以对1Hz-4Hz,3V这样的信号(三脚波。正弦波)整成一个方波。

2.1.5 下位机处理部分

    这部分的调试主要是检测单片机有没有能工作、数码管部分能否亮以及提供给CC1100的电压是否在CC1100的工作范围内。所以首先用电压表来测量要接CC1100模块的部分管脚——VDD是否为在1.9-3.6V之内,最好是3.3V。如超过3.6V为避免烧坏CC1100芯片必须改装电路,然后检测单片机的各各引脚看是否导通,检测晶振电路部分是否起振,方法是用万用表来检测连接晶振的两个管脚是否是2.2V左右的电压,最后编辑一个另数码管全亮的简单程序,来检验数码管的好坏,

    用以上方法,可以知道这部分硬件没问题。

2.1.6 上位机处理部分

    这部分的调试方法跟6.1.5下位机处理部分方法是一样的,不同的是它多了串口部分,串口这部分的硬件调试主要是看连线部分是否能连对,不能真正的判别他能否正常工作,最初调试硬件并没有编写上位机程序的时候,我们采用“串口调试助手”等终端软件来对串口进行调试。而我们的目的是要实现全双工通信,可在调试过程中,发现只能实现单工通信。也就是说当单片机正在向上位机传输数据时,上位机向单片机发出一个命令字,原本按设想单片机应该按此命令字来传输另一组数据。可在实际调试时单片机没有响应此命令,而是继续原操作。

    于是,从硬件和软件两方面来检测与串口有关的电路及程序。通过对硬件电路板的详细测量和分析,发现串口部分电路并没有出现错误。借助示波器来观测单片机的串口,发现数据也能正常传输出来。从而确定是软件上出现了问题,软件又分为上PC机的软件和单片机的软件。由于上位机用的是经典的调试串口的终端软件,所以实验时排除了上位机软件有错误的想法。为了检查出错误的所以,专门编写了一段针对串口传输数据的程序,通过参数的变化、波特率的调整、查询/中断方式的运用等方法,最终发现当只传输有限长的数据或者传输速度非常慢的时候可以进行双全通讯,可无论在理论上还是实际经验中都不应该是这样的。最后想到问题可能出在调试串口的终端软件上,于是换了一种调试串口的终端软件。这样问题得到了解决,达到了预想的全双工通讯。所以他的好坏最终是用软件与硬件结合测试法对他进行调试。

    通过对整个调试过程的分析,发现当串口的传输速率过快时,最初用的调试串口的终端软件会出现程序死锁的状态,导致单片机和上位机在用串口通信的时候不能实现全双工通信。     

2.2 软件调试

由于程序调试是否成功,这是关键的一步,因为单纯的硬件无法实现预期的目的。因此,对程序的调试就特别重要。调试这阶段发生过的故障如:子程序在运行时破坏现场,缓冲单元发生冲突,零位的建立和清除在设计上有失误,堆栈区域有溢出等问题。

采用单步运行方式和断点运行方式对没个子程序进行调试,单步和断点调试后,再进行连续调试,这是因为单步运行只能验证该子程序的正确与否,而不能确定定时精度、CPU的实时响应等问题。待全部完成后,应反复运行多次观察。

2.2.1下位机处理部分

     这部分软件的主要实现的功能是,利用计数/定时器来对进入到单片机里的高电平进行读数:每来一个高电平计数器就加1,而相应的定时器也启动,并将计到的数显示在数码管中。对程序的调试则是用整体调试方法——整体编译。因为编译器能指示那里出现问题,这样就不用到单步的调试方法。以下是用AVR系列的编译器来演示调试,先打开编译器如图2.2.1.1所示。然后在它的Project菜单栏里建立工程目录,之后就在File菜单那里建立一个新的编程画面并在里面写如程序后保存,并编译,如程序没有错误,则如图2.2.1.2所示,如有错误则如2.2.1.3所示。编译通过之后就自动生成“.Hex”文件,然后通过AVR独有的下裁器:SLISP,对已经编译好了的程序下到Atmega8515单片机上。无线模块的程序调试也可以在这个编译器上进行调试。

图2.2.1.1

图2.2.1.2

图2.2.1.3

2.2.2 上位机部分

    由于上位机是用AT89S52来代替Atmega8515的。而他们的编译器不同所以对串口调试的时候要用到AT89S52的编译器——KeiluVision2,他们的操作大部分都是一样的,只是有一点的小区别在于他在建立工程文件的时候需要选择选用的芯片,如图6.2.2.1所示。还有一点是它需要输出进行选择,如图6.2.2.2表示没选上。图6.2.2.3所示表示选上“Create HEX Fi:”这项了。

图2.2.2.1

如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值