基于嵌入式系统的足底压力检测系统文档格式.docx
- 文档编号:6493549
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:52
- 大小:761.95KB
基于嵌入式系统的足底压力检测系统文档格式.docx
《基于嵌入式系统的足底压力检测系统文档格式.docx》由会员分享,可在线阅读,更多相关《基于嵌入式系统的足底压力检测系统文档格式.docx(52页珍藏版)》请在冰点文库上搜索。
1.ThispaperdesignedthesensorsusedinplantarpressuremeasurementssystembasedonICSensors1451SensorCore.DataacquisitionmoduleisbasedonAD7705DACchipasthecore,whichisa16-bitlow-frequencymeasurementofdual-channeldifferentialDconverter.
2.C8051F020,whichisthecentralprocessingchipwithmanyperipheralfunctions,isresponsiblefordataacceptance,processing,sending.
3.AftertransplantationofμC/OS-IItoC8051F020,thesystemachievedmultitaskingmutuallyschedulingandimprovedtheefficiencyofthesystem.ItcompletedthedatatransmissionthroughtheSPIbusandtheserialcommunicationinterface.
4.ItusedtheLCDtodisplaydata,whichisconvenientandefficienttothedisplaydatachanges.
Keywords:
Plantarpressuremeasurement,μC/OS-II,C8051F020,LCD
第1章绪论
1.1课题背景
人一生行走的距离能够绕地球两周半以上,因此站立与步行伴随人的一生,当人站立或步行时,由于自身重力的原因,就产生了足底压力。
依据现代医学研究,足底压力的变化往往伴随的疾病的产生。
在过去的几十年间,足底压力的分析已经从理论变为诊断疾病的工具。
当足部患有疾病或者自身的运动状态改变时,足底压力都会因此而改变。
因此研究人体不同状态下(正常人与病人之间、站立和步态之间)的足底压力的变化,可以用来进一步分析并获得人体各部位的受力变化情况和生理、病理理学参数,从而可以与病史、以及其他检查联合使用对人体健康程度进行诊断[1][8]。
当前,人体足底压力检测已经用于许多领域,例如生物力学研究、医学检测、运动学、鞋的功能检测等方面,在这些方面都具有很高的科研价值[2]。
足底压力检测主要集中在以下几个方面。
1.在医学检测方面。
当今社会,我国的糖尿病患者越来越多。
据统计,15%-20%的糖尿病患者在糖尿病中后期将发展成足溃疡,但是足底压力正常的糖尿病患者却不会发生溃疡,因此足底压力改变与糖尿病足的发生有密切关系。
检测足底压力是否增高可用于预测糖尿病足溃疡,是足溃疡发生的独立危险因素,相关性高达70%-90%[3]。
因此早期检测足底压力,对充分评估糖尿病足溃疡形成的风险并进而纠正这种危险性有重要意义。
再例如,脑瘫病人的足底压力检测可对脑瘫病人步态及足底压力分布进行评价,并可对矫形前后进行分析比较,以利于矫正尖足、稳定踝关节,更好地进行站立、行走训练[4]。
除了上述之外,骨科和矫形外科中对关节疾患程度和手术术后疗效的定量化评定、康复医学中智能化假肢的设计都与足底压力检测有很大关系。
2.在运动学方面。
足底压力检测技术能够很好的揭示运动员的动作是否合理等运动规律。
比如检测运动员在训练中的足底动力学参数的变化,可以揭示运动员在运动过程中足底压力分布的特点。
这是因为在运动中,运动员的技术和足底压力分布有密切的关系。
通过分析运动员的足底压力随时间的变化,能够判断运动员的技术动作是否合理,从而对运动员的技术动作做出指导作用。
3.在鞋的功能检测方面的应用。
在日常生活中,人的足底每天都累计承受几百吨的压力,因此对鞋子舒适度、稳定性有很高的要求,可以根据足底压力的大小与分布来进行鞋底的设计。
足底压力检测技术应用于鞋的设计,对指引大众科学穿鞋,以及对提高鞋子的舒适度产生巨大的作用。
1.2本课题国内外研究现状
1.2.1国外研究进展
国外对足底压力的研究起步早,测量足底压力的方法很多,技术也不断的改进。
常用的足底压力分布系统有平板式和鞋垫式。
国外的生产厂家主要有Tekscan,Rsscan,Novel等[5]。
足底压力检测系统的压力传感器主要采用压阻材料传感器和电容传感器。
很多公司产品的压力传感器密度很大,如Teksan公司的产品的传感器密度为4个/平方厘米,但由于鞋垫式传感器厚度低于2毫米,所以传感器相对容易损坏。
比利时的RSscan公司的footscan足底压力分布和步态分析系统,传感器厚度2.2mm,传感器密度4个/平方厘米,引出厚度1.5mm,压力范围1-60N/平方厘米,最小分辨率为25g,一致性为+25g,采样频率为500Hz[6]。
F-Scan公司的系统为955个导电橡胶和炭制作的压力敏感元件制成的压力分布检测鞋垫。
1.2.2国内研究进展
国内对足底压力检测相对比较晚,只开始了不到30年。
近年来,由于足底压力检测技术的不断发展以及国外先进系统的引进,也研究了不少此类产品。
国内已研制成功的主要有压力鞋垫、光学压力测量仪、测力板和测力台[6]。
但是很多足底压力检测系统使用专用数据采集设备来采集足底压力数据,系统结构比较简单,虽然易于实现,但其价格过高、精确性差、体积过于庞大,很难普及使用[7]。
综上所述,国外的足底压力检测系统价格昂贵。
国内足底压力检测技术虽然已经有了很多研究成果和发现,但仍有一些问题尚待解决。
例如存在成本高、寿命短、精度低、不稳定、控制系统简单、难于扩展等问题。
1.3本课题研究的意义及内容
大部分的传统医疗电子设备采用无操作系统的方式控制。
主程序一般都是无限大的循环,子程序利用多个中断操作完成任务。
但在大规模和复杂的系统中,很难保证实时性,并且不利于系统的扩展。
随着嵌入式技术的快速发展,具有体积小、功耗低、性能稳定、抗干扰强、内核可裁剪等特点的嵌入式系统在医疗电子设备的研发中越来越受青睐。
针对上述分析,本文采用了实时操作系统μC/OS-II。
μC/OS-II操作系统是一款多优先级可剥夺的实时多任务操作系统,其具有体积小巧实用,可裁剪性强等特点。
以μC/OS-II为基础设计的足底压力检测系统能够克服传统医疗仪器稳定性差、扩展性差、实时性差等特点,代表当今医疗仪器的发展方向。
本文的研究主要内容如下:
第一章主要阐述了本课题的背景及来源;
国内外足底压力检测系统的发展情况。
结合以上介绍本课题的研究的意义和内容。
第二章主要介绍μC/OS-II嵌入式操作系统的结构与通信方式。
第三章主要介绍足底压力检测系统数据采集控制模块的硬件电路;
分别介绍各个功能的独立电路设计方案,并简述整个电路的抗干扰措施。
第四章主要介绍足底压力检测系统的软件设计。
包括μC/OS-II如何移植到C8051F020单片机,各个硬件设备的驱动程序和基于μC/OS-II嵌入式操作系统的软件设计方案。
第五章结果数据分析。
分析结果,验证系统的可靠性。
第六章结论与展望。
总结全文的研究成果和尚待完善的任务。
第2章μC/OS-II系统解析
本章详细阐述了基于μC/OS-II嵌入式实时操作系统内核结构和通信方式。
2.1μC/OS-II简介
μC/OS-II的是μC/OS改进版本,美国嵌入式系统专家JeanJ.Labrosse在1992年的《嵌入式系统编程》杂志上发布,己经有了上百个成功的商业应用案例,在40多种处理器上成功移植。
μC/OS-II是一款免费公开源代码的实时嵌入式内核,它具备嵌入式实时系统所需的基本功能。
μC/OS-II的功能核心部分代码短小精悍,只有8.3K字节,经剪裁后用户系统中实际的代码甚至最少仅需2.7K字节。
由于μC/OS-II的开源特性,用户可以方便得到廉价的解决方案,用户还可以针对自己的硬件优化代码,以获得更好的性能[8]。
本文中μC/OS-II实际上是一个实时操作系统内核,μC/OS-II可以管理64个任务,包含了实时内核、任务管理、时间管理、任务间通信与同步(信号量、消息邮箱、消息队列)和内存管理等功能。
由于μC/OS-II良好的可扩展性和源码开放,用户可以根据需要实现多种功能。
μC/OS-II的大部分代码是C语言写成的,只有与处理器体系结构相关的少部分代码用汇编语言完成。
所以μC/OS-II的移植性很强,可以在各种微处理器、DSP上运行。
μC/OS-II的移植相对比较简单,只要编写4个汇编语言的函数、6个C函数、定义3个宏和1个常量。
这些宏和函数都非常简单,其中的5个C函数甚至只需声明不必包含代码。
用户可以根据需要自己编写移植代码[6]。
作为一款公开源代码的实时的嵌入式内核,μC/OS-II对我们学习和掌握实时操作系统的特点提供了极大的帮助。
μC/OS-II本身也因此获得了高速的发展,许多工程师已经成功地把μC/OS-II应用于自己的系统之中。
随着μC/OS-II的不断完善,它必将有更广阔的市场。
2.2μC/OS-II的内核结构
2.2.1临界段
操作系统都有临界段,μC/OS-II进入临界段的方式为关中断,当执行任务后再打开中断。
操作系统的其它的任务或中断服务程序就不能进入临界区,保证临界区代码的执行。
关中断的时间关系到用户系统对实时事件的响应性,因此μC/OS-II必须要使关闭中断的时间下降到最短。
对μC/OS-II来说,关闭中断的时间与CPU的体系结构和编译器的生成代码质量有关[9]。
CPU都具有关中断/开中断指令,本文使用的开发环境KeiluVision3中带有的C编译器,能够使用C语言实现关闭中断/打开中断的操作。
在μC/OS-II中定义两个宏用来关闭中断/打开中断,不一样的C编译器可以选择不一样的办法关中断和开中断。
这两个宏调用分别是OS_ENTER_CRTICAL()(开中断)和OS_EXIT_CRTICAL()(关中断)。
因为不同的处理器对应不同的宏定义,每个系统都要在OS_CPU.H中能够定义相应的宏。
在C8051F020处理器的OS_CPU.H文件中如下定义:
#defineOS_ENTER_CRITICAL()EA=0//关中断
#defineOS_EXIT_CRITICAL()EA=1//开中断
2.2.2任务管理与状态
μC/OS-II最多拥有64个任务。
本设计使用的版本中,系统保留了4个最高优先级的任务和4个最低优先级的任务,还剩下56个任务可以使用。
μC/OS-II拥有两个自动生成的任务:
其中OSTaskIdle()为系统的空闲任务,它的优先级最低;
另一个为统计任务OSTaskStat(),优先级次低,能够计算系统CPU的使用率[10]。
μC/OS-II提供了任务管理的各种函数调用,分别如下函数:
1.OSTaskCreate():
建立一个新任务。
任务的建立既能够在运行的任务中建立,也能够在多任务系统启动之前建立。
不可以在中断处理程序中建立任务,而且每个任务也可以是无限循环的结构。
2.OSTaskSuspend():
挂起任务。
函数把自身挂起的时候传递的参数为OS_PRIO_SELF,并且只有其它的任务调用OSTaskResume()才能唤醒被挂起的任务。
3.OSTaskResume():
唤醒一个被OSTaskSuspend()函数挂起的任务。
OSTaskResume()也是唯一唤醒挂起任务的函数。
4.删除任务OSTaskDel():
删除任务是指任务将返回到睡眠状态,而不是指任务代码被删除了,只是任务的代码不再被内核调用。
5.中断级的任务切换:
μC/OS-II内核的中断服务子程序操作如下:
保存所有CPU寄存器;
调用OSIntEnter()函数或者OSIntNesting++;
开放中断;
执行相关代码;
关闭中断;
调用OSIntExit()函数;
恢复全部CPU寄存器
RETI;
OSIntEnter()函数将OSIntNesting的值加1。
OSIntNesting是中断嵌套层数的变量。
通过OSIntEnter()和OSIntNesting作用,μC/OS-II在发生中断嵌套的时候,不进行任务调度。
当系统执行完中断嵌套的任务后,μC/OS-II调用OSIntExit(),回复中断之前的状态。
μC/OS-II主要有五种任务状态,分别为睡眠态、就绪态、等待状态、运行状态和被中断状态。
μC/OS-II内核调用OSStart()启动多任务系统。
首先OSStart()函数运行状态为就绪态中优先级最高的任务。
其它低优先级的就绪任务只有当所有优先级高于此任务的任务变为等待状态或者被删除,才可以进入运行态。
在任意的时刻,任务状态必须是五种状态之一。
μC/OS-II控制下的任务状态转换如图2-1所示:
图2-1任务的状态转换图
2.2.3任务调度
μC/OS-II运行就绪态中优先级别最高的那个任务。
首先找到任务优先级最高的任务,然后任务调度运行的工作是由调度器完成的。
当系统中没有用户自己定义的中断服务程序时,任务间的切换一般会调用OSSched()函数。
任务间的切换步骤是这样的:
voidOSSched(void)
{
关闭中断
如果(不是中断嵌套并且系统可以被调度)
确定是不是优先级最高的任务
如果(最高级的任务不是当前的任务)
调用OSCtxSw();
}
开中断
开始时判断要进行任务切换的条件,假如上述条件允许发生任务调度,然后执行OSCtxSw()函数。
这个函数才是真正完成任务调度的核心函数。
OSCtxSw()主要用汇编语言完成。
2.2.4时间管理
在μC/OS-II里面,系统时钟节拍是非常重要的,可以说是操作系统的脉搏。
μC/OS-II用硬件定时器产生一个周期性中断来实现系统时钟。
它应该在每秒钟发生10-100,最小的时钟单位就是两次中断间隔的时间,这个最小时钟单位叫做时钟节拍。
时钟节拍的实际频率取决于用户对定时器的编程。
μC/OS-II要求用户在定时中断的服务程序中,调用系统提供的与时钟节拍相关的系统函数,这些服务函数分别为:
OSTimeDly(),OSTimeDlyHMSM(),OSTimeDlyResume(),OSTimeGet(),0STimeSet(),这五个函数可以在OS_TIME.C文件中找到[11]。
2.3任务间的通信与同步
μC/OS-II作为多任务系统,任务之间都需要通信来保持同步。
μC/OS-II一共有三种通信方式,分别为信号量、消息邮箱、消息队列[12]。
主要用于任务之间的互相联系和对临界资源的访问。
每个通信方式都有相应的创建、等待、发送的函数。
例如一个任务需要等待另一个任务或中断服务子程序给它发送信号。
2.3.1信号量
信号量是任务间通信的最基本方式之一,被广泛用于对共享资源的访问、任务与中断服务程序之间的调度安排以及任务与任务之间的同步。
其特点如下:
1.μC/OS-II的信号量有两部分构成,分别是16位的计数器和等待此信号量的等待任务表。
2.信号量分为互斥型的信号量和计数式的信号量两种。
等待信号量的任务根据信号量的值来完成系统操作。
3.任务要得到信号量的问题。
等待任务必须等待得到信号量。
当得到的信号量大于0时,信号量有效,信号量的值减1,并使任务继续执行。
当信号量等于0时,等待任务进入等待信号量的任务表中。
4.释放信号量。
当任务执行释放信号量时,假如内核中没有任务等待此信号量,则信号量加1;
假如有任务在等待该信号量,则启动优先级最高的任务进入就绪态,信号量不变。
μC/OS-II提供了OSSemAeeept()、OSSemPend()、OSSemPost()、OSSemCreate()和OSSemQuery()五个函数对信号量调度。
其过程如图2-2。
图2-2信号量接收和发送
2.3.2消息邮箱
消息邮箱是μC/OS-II中的任务之间的一种通信手段,用于任务与任务之间或任务与中断之间传递一个指向了特定数据结构的指针型变量。
内核通过调用OSMboxCreate()函数建立消息邮箱,并指定指针的初始值,指针的初始值也可以为NULL,函数的返回值是消息邮箱的指针。
任务通过调用函数OSMboxPost()向消息邮箱发送消息,如果邮箱中存在消息,返回错误码,否则发送成功;
通过OSMboxPend()函数请求消息邮箱,此函数的作用就是查看邮箱指针是否为NULL。
不是NULL,调用函数的任务成功得到邮箱中的消息指针,操作成功。
如果为NULL,则使任务进入等待状态。
如图2-3所示:
图2-3消息邮箱的发送与接收
2.3.3消息队列
内核使用消息队列可以在任务之间传递多条消息。
消息队列有三部分组成,分别是事件控制块、消息队列和消息。
消息队列可以设定容量,容纳多条消息,相当于多个邮箱组成。
创建一个消息队列之前必须先并定义一个指针组,然后把各消息数据缓冲区的首地址放入此数组中,最后调用函数OSQCreat()完成创建消息队列。
任务通过调用OSQPost()函数向消息队列发送消息。
当任务向消息队列中发送消息时,如果为满,返回错误码,表示已满;
如果不满,则操作成功并返回。
任务请求消息队列需要调用OSQPend函数。
当任务从消息队列中接收消息时,每个消息都有一张等待消息的任务表。
如果消息为空,则等待消息的任务被放入等待消息的任务列表中。
如果不为空,则把消息传递给等待消息的任务中优先级最高的任务[27-31]。
如图2-4所示:
图2-4消息队列的发送与接受
2.4本章小结
本章介绍了μC/OS-II的内核特点,详细介绍了内核结构的临界段、任务管理与状态、任务调度、时间管理等。
在任务的通信与同步中详细介绍了信号量、消息邮箱、消息队列的作用原理,并结合图形分析。
第三章嵌入式足底压力检测系统的硬件设计
3.1系统硬件基本功能和总体框图
3.1.1系统硬件基本功能
本设计技术研发分为:
传感器鞋垫设计和信号处理与控制系统两部分。
最终生产出标准化、系列化的足底压力检测系统。
足底压力检测系统的基本功能是通过四路压力传感器(ICSensors
1451压力传感器芯体)采集足底压力信号,采集到的足底压力模拟信号通过两支16位AD7705模数芯片转换为数字信号传送到C8051F020单片机,压力值最终在OCMJ8X15B型号的LCD液晶显示。
3.1.2系统硬件总体框图
本系统的结构部分主要有足底压力检测鞋垫单元、模数转换单元、中央控制单元、显示单元四部分组成。
总体框图如图3-1所示:
图3-1嵌入式足底压力测量系统的硬件设计总体框图
Ø
足底压力检测鞋垫单元主要有四支只ICSensors
1451压力传感器芯体和鞋垫组成,分别采集足跟、足弓、第一二跖骨、第三四跖骨四个点的足底压力信号(参见图3-3)。
摸数转换单元为AD7705芯片。
每支AD7705芯片接收两支传感器的传来的信号。
中央控制单元是以C8051F020单片机为核心,接收数字足底压力信号,并把信号送到LCD液晶上显示。
显示单元中选取了OCMJ8X15B液晶屏。
通过便携的LCD液晶屏及时的显示结果。
3.2系统CPU
本足底压力采集系统的MCU使用了具有CIP-51内核的片上系统(SoC)芯片C8051F020。
C8051F020单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。
其最大特点是集成了多种的功能,代表着当今单片机技术和嵌入式系统技术的发展方向[13]。
3.2.1C8051F020单片机的介绍
C8051F020单片机是一款高度集成的片上系统。
它具有64K字节可在线系统编程的FLASH存储器,4352(4096+256)字节的RAM。
总线接口类型丰富,拥有两个UART串行接口、SPI(串行外设接口)和SMBus(系统管理总线)/I2C(集成电路间总线)。
此外,它还具有5个通用的16位定时器、5个捕捉/比较模块的可编程计数器/定时器阵列、片内看门狗定时器、内部振荡器(频率有2M、4M、8M、16M)等多种功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 嵌入式 系统 足底 压力 检测