基于MSP430的血糖仪设计

发布者:张延强最新更新时间:2011-03-14 手机看文章 扫描二维码
随时随地手机看文章

摘要:本文详细介绍了采用MSP430系列单片机设计的多功能血糖仪。此款血糖仪不仅能精确测量血糖、实时时钟,还具有温度显示和闹铃提示等功能。文章介绍了设计的原理和软硬件的设计,最后给出本设计最为核心和关键的计算公式。
关键词:MSP430;中文LCD显示;低功耗; RS232;计算公式

引言
    当前市场上血糖仪种类繁多,外形结构千奇百态,而价格和精度却大相径庭;且价格和精度难以兼得。原因在于没有找到一款合适的微处理器。另外,出于屏幕尺寸的限制,界面普遍采用英文字符显示,这给中国病人上带来一定的困惑。
随着电子技术的发展,微处理器功能日益增强,价格日趋降低。有必要选出一款功能强大而价格便宜的微处理器来重新设计血糖仪。本系统选用的MSP430系列微处理器使上述设想成为可能。
原理
    血糖仪是根据电生物化学原理——施加一定电压于经酶反应后的血液产生的电流会随着血液中的血糖浓度的增加而增加——设计的。通过精确测量出这些微弱电流,并根据电流值和血糖浓度的关系,反算出相应的浓度。所以,确定这个关系是问题的核心。但其关系复杂,受多方面因素影响。电压强度、所使用的试条以及检测的血液量都会对其产生影响。理论上需要在所有浓度点上大量实验才能确定最终的关系。在实际操作中,只需在选择若干重要浓度点做大量实验,并确定其与电流值之间的关系。而相邻浓度点之间用简单的线性关系取代。图1是本设计总结出一定量电压下的关系曲线。
系统硬件设计
    根据血糖仪功能的实际需求,结合MSP430系列单片机特点,采用型号为MSP430F435的单片机作为控制核心,其它模块还有电流检测、按键输入和电源、显示、扬声器及串口通信等。如图1所示。

 
图1 系统组成

MSP430F435单片机
    本系统选用的单片机MSP430F435具有16Kb Flash存储器、512B RAM、多达160段LCD驱动器、8通道/12位ADC及大量的I/O端口等,完全满足本血糖仪的各项功能需求。

 
图2 微处理器的端口设置

    主要端口设置如图2所示。其中COM0~COM3、S16~S39、R03~R33用于实现LCD显示; Port74和Port75用于串行通信;Port79~Port81为按键的输入端;Port76和Port77分别为运算放大器和RS-232芯片提供供电电压。Port78连接蜂鸣器;Port2和Port3为ADC输入;Port7参考电压输出;XOUT和XIN连接32KHz的晶振,这是系统的时钟源。

LCD显示
    MSP430F435具有液晶驱动功能,最大能支持160段LCD,并且具有功耗低等特点。本系统采用中文界面的LCD显示,这也是本款血糖仪的一大特点。此LCD有96码段,内容丰富、功能强大。极大地方便了国内病人的使用。

血糖检测
    从原理中已经知道,测量血糖时需要在相应的电极上施加一定的电压,而电压的稳定性将直接影响测量结果,因此,考虑从相对稳定的参考电压得到,而不是直接从供电电源中得到。

    MSP430单片机A/D采样的是电压值,而被检测的是微量的电流值;因而也需要将电流值放大并转换成相应的电压值。采用如图3所示的电路就能实现这一要求。其中,电阻R用于放大。此外,过少的血液量也将造成结果偏差;所以有必要设计一个用于检测血液是否足量的简单电路。而此电路完全可以用与图3相同的电路来代替。因此采用两个这样的电路就可以实现血糖测量。

 
图3 放大电路

其它模块
    本系统的供电电压为3V,采用两块电池。其中一块是主供电源;另一块为备用,以便设备在换电池时仍能正常工作。

    按键采用三个,分别是左键、右键和OK键;OK键主要用于开、关机和确认等,左键用于数字减或选项左移等,而右键则与左键相反。

    由于血糖仪中存有大量的测量结果,因此有必要增加串口通信功能,将这些结果上传到PC作进一步处理。而单片机本身就具有串行通信接口,只需将TTL电平转化为RS-232电平即可;这里采用SP3232芯片来实现这一功能。SP3232芯片所需的供电电压低,适合便携式设备应用。其外围电路的连接简单,仅需几个0.1µF的电容即可。
系统软件设计
    系统软件采用C语言编写。其主程序框架如图4所示。

          
            图4 主程序框图

    对于便携式设备,电池寿命至关重要;设计时应尽量降低功耗,使系统尽可能长时间停留在低功耗状态。因此,考虑设备在适当的时候自动关机。这里采用了一个定时器。当定时器大于0时,系统处于开机状态;当定时器倒数到0时,系统自动关机。这个定时器是由单片机中的Basic Timer实现的。通过软件对Basic Timer控制寄存器进行设置,将信号源设为辅助时钟,大小为32KHz,并进行256分频,再对中断定时间隔控制位进行设置,使得中断每秒进行一次,并且每次到来时都对定时器减1,这样就实现了定时器每秒减1的功能。具体操作是这样:开机时,对定时器初始化一个大于0的值,比如30,并且在每按一次有效键时,系统重新初始化这个值。因此,当没有按任何有效键时,30秒后就会自动关机,从而实现省电目的。
系统也具有实时时钟功能,它的实现方式与上述的定时器类似。只是将“每秒减1”改为“每秒加1”;具体操作:每次中断时都对秒变量进行加1,当秒变量的值变为60时,就对分钟变量加1,而秒变量又重新从0开始计数;同样,当分钟变量累加到60时,就对小时变量加一,而自身又从0开始计数。依次类推,就可以实现实时时钟和日期功能。

    为满足个性化需要,还增加了时钟和单位设置、平均值和温度显示等功能。这里就不再赘述了。下面主要介绍一下测量模块。首先,初始化各个端口以及ADC寄存器;然后等待滴血。当检测到足量血时,断电并等待若干秒,使之与试条上的酶充分反应。随后加电并在一秒后迅速读取。图5是与本血糖仪配套使用的试条在不同浓度的血糖与酶反应若干秒后再加电产生的电流的变化曲线。由图不难看出,加电后一秒曲线就较为平稳,这也是本设计采用“加电一秒”后即可读取的原因。

计算公式
    这部分无疑是本设计的关键。表1是使用本设计的样机测得的部分数据。由表中的数据不难看出,血糖仪和血糖试条的测量重复性较好——CV<3%,远远高于国家标准<7.5%的要求。

表1 部分实验数据

浓度(mg/dl)
电流(µA) 50 100 200 300 400
1 3.003 6.752 13.101 16.861 19.836
2 3.028 6.678 12.368 17.130 19.621
3 2.918 6.800 13.272 16.764 20.366
4 2.893 6.910 13.028 17.179 20.622
5 3.064 7.081 13.614 17.574 20.341
6 2.881 7.106 13.211 17.264 20.268
7 3.075 6.703 12.905 17.628 19.645
8 2.905 6.849 13.150 17.029 20.158
9 2.991 7.130 13.233 17.081 20.024
10 2.901 7.240 12.964 16.838 20.952
均值 2.9659 6.9249 13.0846 17.1348 20.1833
均方差 0.0746 0.2001 0.3200 0.2924 0.4218
CV(%) 2.5153 2.8896 2.4456 1.7065 2.0898

    通过对数据进行三次曲线拟合,就可以得到血糖值和电流值之间的关系曲线图。图6是原始数据分段曲线和拟合曲线的对比图。容易看出两条曲线很吻合;因此在实际操作中可以用一个公式代替分段函数。这里的曲线公式为:
 
    其中,X是电流值,单位µA,Y是对应的血糖值,单位为mg/dl。在实际验证过程中,上述公式具有良好的精度。

 
图5 数据分段曲线和拟合曲线的对比图
结语
    此款血糖仪采用MSP430F435作为其核心控制单元,它具有12位A/D转换;采样精度达到1/4096。除了基本功能外,系统还增加了闹铃提示和串口通信功能,使用户不仅可以定时测量,而且还可以通过串口将测量结果保存到PC,再通过相应的软件,对数据作进一步处理。本文总结的公式经临床证明具有良好的精度。此外,中文字符界面也极大地方便了用户使用。
参考文献:
1 MSP430F43X/F44X data sheet    TI. Corp.
2 沈建华,杨艳琴,翟骁曙. MSP430系列16位超低功耗单片机原理与应用,2004.11 
引用地址:基于MSP430的血糖仪设计

上一篇:基于DSP的数字预失真系统设计
下一篇:基于GSM短消息接口的MC3一体化遥测系统

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved