基于手机通信的心电图机设计方案

时间:2012-10-18来源:网络


2 系统软件设计

软件设计包括下位机和上位机2部分。下位机主要负责接收上位机的设置电压值,并经过转换后输入到MAX522,从而输出设置电压。上位机则通过VUSB与下位机连接,并通过模拟的USB协议向下位机写入数据。

2.1 下位机软件

下位机软件流程图如图5所示。其中设备初始化包括单片机端口初始化、DAC初始化及VUSB端口初始化。在初始化之后,程序进入主循环,在其中加入了USB轮询函数usbPoll(),用来侦测USB事件。一旦侦测到上位机有USB通信请求时,usbdrv就会调用usbFunctionSetup()函数来处理请求。在此请求函数中接收上位机传来的数据并将此数据转换后写入MAX522数据端口,启动DAC输出电压。







图5 下位机软件流程。

设计中需注意以下几点:

1)单片机方面的VUSB 底层驱动函数使用AVRUSB,最新版本的AVR-USB为C语言编写并有详细的注释。开发平台为WinAVR.GCC项目文件夹中需包含驱动文件(usbdrv文件夹),并对usbconfig.h中的部分宏定义做一些修改。

#define USB_CFG_IOPORTNAME D//这个接口连接USB总线。当配置为D时,寄存器PORTD,PIND and DDRD将有效。

#define USB_CFG_DMINUS_BIT 1//位配置,是在USB_CFG_IOPORT 中连接USB D-的线。可以配置为接口的任何位。

#define USB_CFG_DPLUS_BIT 2//位配置,是在USB_CFG_IOPORT 中连接USB D+的线。也可以连接到任意口,但是注意D+一定要连接都中断口INT0

2)单片机在接收到读取数据命令时会自动调用usbFunctionSetup(uchar data[8]),在函数内把全局指针*usbMsgPtr指向所要发送的数据首地址,然后返回(函数返回值)所发送数据的长度就可以了。由于采用的是命令包方式传输数据,每次只能接收4个字节的有效数据,存储在data[2]~data[4]中。

3)初始化时需要将MAX522的输出置为关闭状态。

写入MAX522时首先写入8位控制字,然后写入8位DAC数据。

2.2 上位机软件

上位机用C# 语言进行编写,驱动采用一款名为LibUsbDotNet的开源USB上位机驱动库文件。此驱动库文件还提供了供。NET平台调用的USB接口函数。使用时需包含相应的动态链接库文件。

上位机软件主要包括显示设备连接状态、写入电压值及读取当前电压值等功能。上位机软件流程图如图6所示。







图6 上位机软件流程。

只有在总线请求为用户自定义类型(Vendor)时单片机才会调用usbFunctionSetup(uchar data[8])这个函数,所以传输数据是通过发送用户自定义类型的Setup数据包来实现的。读数据时设置此数据包为IN,同时写入需要读取的字节数。写入数据时设置数据包为OUT,4字节的有效数据则包含在所建立的8字节Setup数据包的data[2]~data[4]之中。

3 实验验证与分析

本数控直流稳压电源在使用之前需进行校零。在初始状态下,调节集成运放μA741的外接调零电阻使集成运放输出为0,调节射极输出器偏置电阻R13使输出电压为0.

在输出最大的情况下,调节输出集成运放的比例放大电阻R14,使得输出电压为12V.

校零之后将上位机设置电压值与实际输出电压进行对比实验,实验数据如表1所示。







表1 电压输出对比实验结果

所设计电压源实际输出值与设定值偏差较小,能够满足0~12V连续可调输出,步进值为0.1V的使用要求。

4 结 论

设计了一种以单片机为主,基于VUSB技术进行数据传输控制的数控直流稳压电源。输出电压值由单片机控制,步进调节方便,输出稳定。既可以作为单独的电源使用,也可以嵌入到其他需要步进电压模块的测试系统之中。

1 2

关键词: 设计 方案 心电图 通信 手机 基于

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版