UEAL第1届电子设计大赛第三轮单片机主观题

  • barrettzxn
  • LV5工程师
  • |      2015-06-20 09:04:25
  • 浏览量 1321
  • 回复:0

                                     UEAL第1届电子设计大赛第三轮单片机主观题

                                                                                        医院病床呼叫系统

摘要 

本系统的主机与从机均以STM32RBT6为控制芯片,主从机间的有线通信使用MAX485,无线通信使用nRF24L01无线模块。主从机之间通过有线或无线的信息交互,最终实现一个主机和两个从机之间的呼叫与应答。

关键字:STM32RBT6  MAX485  nRF24L01    

1系统方案

1.1 主控芯片的选择

方案一:选择MSP430f5529作为主控芯片,该型号单片机低功耗功能强大,基本满足本题目从机功耗5mA的要求。但是该单片机主频有限,可能会导致整个系统反应变慢,无法在极短时间内完成主机与从机之间的通信。假如传输语音信号,430单片机可能会出现问题。

方案二:选择STM32RBT6作为主控芯片,该单片机总线时钟可达72MHz,且引脚较多,易于扩展,速度快,符合系统控制要求,但是功耗较大。

综合考虑,我们选择方案二。

1.2 无线通信模块的论证与选择

方案一:使用FST-4模块,该模块成对使用,只能接收或者发送,传输距离远,但是信号传输不稳定,受外界干扰较大,假如在同一个空间之内有较多的电磁干扰,则接收的信号很容易出错。同时,使用该模块需要自行编写通信协议,比较繁琐。 

方案二:使用蓝牙模块,该模块数据传输快速稳定,传输距离较远,但是蓝牙模块只能进行单对单的信息交互,无法实现多个从机与主机间的信息交互。

方案三:使用nRF24L01模块,该模块使用SPI通信,数据传输速度可达2Mbps,数据传输比较稳定,距离较远,抗干扰能力较强,并且该模块可支持主机与多个从机间的通信。

综合考虑,我们选择方案三。

1.3 有线通信模块的论证和选择

方案一:使用单片机自带的SCI模块通信,使用该方案的优势是使用方便,无需任何外设,但是由于输出功率限制,信号无法通过5米以上双芯线进行传递,更无法在实际病床呼叫系统中使用。

方案二:使用MAX485驱动芯片,驱动复杂,优点是使用差分线传输数据,所以可以使主从机间的有线通信距离加长,如果硬件处理得当,最远可以实现1.2Km的传输距离,同时连接32个驱动器和收发器。

综合考虑,我们选择方案二。

1.4 系统总体方案

系统实现框图如图1所示。

                             图1医院病床呼叫系统总体系统框图

 

系统总体方案及工作原理说明如下:从机通过无线模块nRF24L01或有线模块MAX485对主机进行呼叫,主机接收到后作出响应(蜂鸣器和LED灯),从机在确认主机已接受信号后,也作出同样的响应。主机根据接收到的信号以及接受的时间,对呼叫的从机进行排序,并在OLED上显示出来。

 

2 理论分析与设计

2.1 nRF24L01工作原理

发射数据时,首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TX FIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TX FIFO中数据保留以便再次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。

接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RX FIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。

 2.2 MAX485工作原理

MAX485工作在5V单电源下。采用单一电源+5 V工作,额定电流为300μA,采用半双工通讯方式。它完成将TTL电平转换为RS-485电平的功能。MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,一般可选100Ω的电阻。

 2.3组成方案

根据比赛要求,最终决定方案为:控制芯片采用STM32RBT6,有线通信部分使用MAX485芯片,无线通信部分使用nRF24L01模块,提示部分采用蜂鸣器。

3 电路与程序设计

3.1 电路设计

3.1.1 MAX485工作电路如图(1),供电以及使能部分使用5V电压

 

图(1)MAX485工作电路

3.1.2 nRF24L01模块工作电路如图(2)

 

图(2)nRF24L01模块工作电路

 

3.1.3主板工作电路及PCB如图(3)。

(a)电路原理图

(b)PCB版图

图(3)主板电路及PCB

 


3.2 程序结构与设计

程序流程图如图(4)所示。

 


4 测试方案与测试结果


测试结果分析:

当主机与从机间进行无线通信时,随着距离的增大或遮挡物的增多,出现错误的概率会增加,这是因为nRF24L01模块债这些情况下,传输数据的误码率会增大,造成结果的错误。

    本项目设计的病床呼叫系统实现了一个主机和2个从机的互相应答,并能够分别实现有线和无线的双向通信,主机能够在极短的时间内回应从机的请求并做出指示,在安全的前提下提高效率。

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子