元器件交易网-中发网全新升级平台
关注我们:
首页 > 技术资料 > 正文

基于STM32的矿用本质安全型电源的设计原理详解

  0.引言

  Small RTOS 对RAM 需求小,非常适合单片机这类资源比较少的系统上。RTOS 具有多任务处理,较强的实时性,可裁减的内核,使得实时应用程序的设计、扩展和维护变得更容易。RTOS 思想的引入,一改传统单片机软件设计方法,使其不再是单一线程结构方式,通过应用程序分割为若干独立的任务,RTOS 使得应用程序的设计过程大为简化。本文结合基于单片机的电子存包柜的软件设计,简要分析了Small RTOS 的设计思想及消息队列通信机制的应用。

  1. Small RTOS51 的基本原理

  Small RTOS51是一个很小的内核,完全集成在KEIL C51编译器中,仅占用较少的程序存储空间,可以在没有外挂数据存储器的51单片机系统中运行。内核负责系统的初始化和开放、调度其它任务,根据各个任务的优先级,合理地在不同任务之间分配CPU 的时间,内核一般都能提供任务调度和中断服务等功能。把一道程序和一个任务对应,把任务中的每个分开的、独立执行的部分称之为线程。所有的事件驱动和时间驱动都体现在设置相应的任务标识和线程标识。当硬件环境一定时,依据这些标识,通过安排系统内中断响应方式和调整任务调度算法,采用设置环境变量的方法,使中断退出后可以任意返回到多个设置入口中的某一个去执行,有效地解决了前台和后台任务线程的灵活切换这一关键问题。Small RTOS 51 的用户任务具有运行态、就绪态、等待和挂起、中断服务程序。任何一个时刻,任务的状态就是这四种状态之一。为了节省内存,OS 不能动态的建立和删除任务,用函数OSSTART()启动多任务环境后,OS 就把所有的任务建立起来,并把它们设为就绪状态,开始运行优先级最高的任务。只有当所有的优先级高于它的任务转为等待时。就绪的任务才能进入运行状态。调度程序将“任务就绪表”中的最高优先级别的任务作为下个要执行的任务。

  任务调用 os_wait 函数,挂起当前任务,等待一个或几个间隔(K_IVL)、超时(K_TMO)、信号(K_SIG)事件。如果所等待的事件已经发生,继续执行当前任务;如果所等待的事件没有发生,则置相应的等待标志后,挂起该任务,转任务切换程序段切换到下一任务。

  Small RTOS51 通过执行函数init ( )来给寄存器赋初值,调用函数OSSTart ( ) 来初始化每一个任务的堆栈并执行第一个任务,而选择第一个任务执行的理由是该任务的优先级别。在选择过程中就完成了任务的调度。

  1.1 任务之间的通讯

  任务之间的通讯采用消息队列,经过3步:创建消息队列OSQCreate(),向消息队列发消息OSQPost(),取消息OSQPend()。调用OSQPost ( )函数发送消息时,如果已经有任务在等待该消息,则立即转向等待该消息的任务,如果消息队列已满,则无法传递该消息,返回一个错误信息。如消息队列未满,同时也没有其他任务等待该消息,则入列。值得注意的是,当队列满时,该函数并不挂起当前任务,因此调用该函数的任务应当判断返回条件,如果消息满,则应挂起当前任务。接收消息时,如果消息队列空,则取消息的任务将挂起,直到该消息队列中有消息时才会继续执行。

  2. 应用实例

  2.1 硬件平台

  以应用在大型超市、书店的电子式存包柜为例,系统框图如下;

  该电子存包柜可以控制的最大货物存储箱数为 32 个,分左右各16 个箱子,上图只画出16 路控制。控制芯片采用AT89C55 单片机,配有实时时钟模块、条码读入器、液晶显示模块、热敏打印机组成,设计为三块PCB 板。

  1 主控板,进行用户的存包和取包人机交互,保存存包密码,显示用户取*程中的密码输入以及全部32 个存包箱的状态。

  2 门控制板由三部分组成,第一部分箱内物品检测,包含16 路红外线检测输入、16 路红外发射控制驱动。第二部分16 路继电器控制,开箱控制由16 个小直流电机构成16 个箱子的开门控制。第三部分箱门状态检测,检测16 个箱门的开/关。

  3 存取包的条码打印、语音提示,整个系统由 4 个单片机配合工作,主控单片机管理存包用户的操作并记录其历史参数,然后向从单片机发出指令,分配空箱并打印输出存包条,给用户。

 

  过压保护及其恢复电路

  调节图4 中的变阻器R5设定过压保护值为12.5 V,本安电源的输出Urout经过R44、R47的分压通

  过U7和设定值相比较。当分压值大于设定值时,BH1 输出为低电平,本安电源输出为零。调节R37使得本安电源输出为零时U6的反向输入端电压大于同向输入端的电压。当Urout=0 时,D7、D8导通,比较器的输出BH1为高电平, 那么本安电源有输出,如果Urout仍然大于保护值,U7

  输出BH1为零,D7、D8导通U6输出BH1为高电平, 如此反复直到本安电源输出在正常范围内。第2 级过压保护及其恢复电路同理。

  图4 过压保护

  2 软件保护

  图2 的主回路中有BPC1 和BPC2 这2 个管脚和STM32 普通的GPIO 管脚相连。图3 中的AD0

  管脚是第1 级过流保护的监视管脚,AD1是第2 级过流保护的监视管脚。图5 中的AD2、AD3、AD4、AD5是过压监控管脚。它们分别连接到STM32 的AD 转换管脚,经过AD 转换后,判断本安电源是否过压、过流然后控制主回路中得BPC1、BPC2 两个管脚,确保本安电源工作在安全范围。

  图6 是软件保护的程序流程图, 因为AD 转换是多路的,所以在数据传输的时候采用DMA 传输,在STM32 初始化的过程中除了包括系统时钟RCC、通用输入输出端口GPIO、嵌套向量中断控制器、定时器、串口、AD 转换的初始化,也要包括DMA传输的初始化。完成初始化后启动AD 转换,把转换结果进行相应的处理后判断是否超出过压过流限定值, 如果超过就清零BPC1、BPC2, 当软件保护把BPC1、BPC2 置零后,恢复只能由硬件电路来完成。

  图5 软件保护

图6 软件保护流程图

  图6 软件保护流程图

  3 结语

  从软件和硬件2 个方面介绍了本安电源,硬件方面介绍主回路、过流保护、过压保护及其恢复

  电路的工作原理, 软件方面主要是通过STM32 进行控制的,可以加上通信模块ADM2483,通过串口把AD 采集的结果通过MODBUS 通信传到上位机,可以实时地观察到本安电源的输出情况,同时可以充分利用芯片的管脚。测试该本安电源工作正常,保护及时,作为传感器,弯道报警器的工作电源。

  • 微笑
  • 流汗
  • 难过
  • 羡慕
  • 愤怒
  • 流泪