半导体培养箱的ARM嵌入式控制系统研制
扫描二维码
随时随地手机看文章
生物培养箱作为一种广泛应用于生物、农林等学科的实验设备,其传统的加热制冷方式具有噪音大、温控调节精度不高且污染环境等缺点。对此本文设计了一款利用半导体材料作为温控元件的生物培养箱。在此设计中,一方面采用新型半导体热电转换技术,通过半导体材料的三种形式将热能和电能进行直接转换,以实现温度调节,并辅以湿度、光照的调节;另一方面采用ARM9处理器作为硬件平台,移植开源的Linux操作系统,并研发了模糊PID控制系统。不仅减小了噪音,还降低了产品的成本,且具有控制速度快、精度高及性能稳定等特点,为培养箱的设计提供了一种新的思路。
1 半导体培养箱的硬件设计
该培养箱的硬件部分由信号采集模块、核心处理模块和控制模块组成,其中信号采集模块又分温度、湿度采集。温度采集是采用单总线数字温度传感器DS18B20,微处理器依据其器件寄存器内置序列号对所匹配的传感器进行读取,以此实现多点分布式应用;湿度采集是采用湿度传感器SHT11,微处理器采用二线串行数字接口和温湿度传感器芯片SHT11通信以完成湿度信号采集。核心处理模块采用基于ARM920T 架构的S3C2440AL处理器为CPU的核心板,负责完成数据的运算与扩展外围通信接口、USB接口、扩展接口、多媒体接口等硬件资源,且该核心板还具有支持触屏控制等功能。控制模块以继电器电路为主体,核心处理模块输出的控制信号,经继电器电路接执行元件,实现对热电半导体、超声波加湿、T4灯等工作状态控制。本培养箱的硬件结构如图1所示。
1.1信号采集模块
信号采集模块的功能采用上述DS18B20芯片和SHT11芯片来分别采集培养箱内的温度和湿度。DS18B20由美国DALLAS公司生产,具有微型化、低功耗、抗干扰能力强、器件唯一编码、支持分布式寻址等功能,适用于各类温度测控系统。其内部有控制电路、64 bit光刻ROM和温度转换器等。收发提供9~12 bit可编程设备温度读数。电压范围为3.0 V~5.5 V,测量温度范围为-55℃~125℃,-10℃~85℃范围内精度为±0.5℃。通过软件修正可达±0.062 5℃。本设计采取由数据线寄生电源供电,在培养箱内设置有2个DS18B20以进行多点检测,并通过计算此2点的温度平均值作为箱内的温度检测值[8]。
SHT11是瑞士Sensirion公司生产的具有I2C总线接口的单片全校准数字式相对湿度和温度传感器。该传感器将温湿度传感器、信号放大器、A/D转换、I2C总线接口集成于一片芯片上(CMOSensTM技术),具有数字式输出、免调试、免标定、免外围电路及全互换的特点。其二线串行接口SCK支持CRC传输校验,传输可靠性高且测量精度可编程在线调节。该芯片集成电容性聚合体湿度敏感元件,将湿度转换成电信号,并将此信号经放大后输入一个14位的A/D转换器,最后经I2C总线数字接口输出数字信号。
1.2 核心处理模块
核心处理模块采用Samsung公司的S3C2440AL处理器,其拥有ARM920T核,能运行32 bit RISC指令集指令及16 bit的精简Thumb指令代码,具有16 KB数据CACHE与指令CACHE,具有MMU(Memory Management Unit)功能。该处理器主频可达400 MHz,并支持SPI、IIC等多种总线扩展方式[1],能够满足培养箱控制系统的要求。根据培养箱硬件设计的实际要求,此系统由两片32 MB的SDRAM和一片64 MB的NAND Flash组成了最小系统,并将启动代码存放在NAND Flash的起始段中。系统扩展外围接口,其中:处理器的标准串行通信接口UART0外接MAX232芯片与宿主机相连,作为调试串口;处理器的两路通用串行总线USB(Universal Serial Bus),一路USB HOST用于U盘接口,一路USB Slave实现数据的传输;LCD接口接东华3.5英寸LCD触屏; GPIO(通用输入/输出口)支持与硬件的数据交互、控制硬件工作和读取硬件的工作状态信号等功能,根据设计需要,扩展GPIO定义如表1所示。
1.3 控制模块
控制模块的功能是对温度进行准确控制,使用的温控元件为热电半导体。半导体制冷原理建立在三个效应基础上:塞贝克效应 、帕尔帖效应和汤姆逊效应,构成了热电设备的理论基础。其原理是当一块N型半导体材料和一块P型半导体材料联结成电偶对时,若此电偶对接通直流电流后,其内部就会产生能量的转移:电流由N型元件流向P型元件的接头吸收热量,成为冷端。由P型元件流向N型元件的接头释放热量,成为热端。利用此原理实现制冷或加热,具有无污染、无噪声、体积小及质量轻等特点[9]。图2是半导体制冷的工作原理图。
2 半导体培养箱的软件设计
培养箱的软件平台选用开源嵌入式Linux操作系统,其内核稳定、功能强大,可裁剪并对底层硬件有丰富的函数支持。本培养箱的软件设计首先完成Bootloader下载、Kernel内核的配置、裁剪、编译与移植并制作YAFFS根文件系统,然后开发对温、湿度传感器及热电半导体等底层硬件的驱动程序,以及基于Qt/Embededded的应用程序设计,实现了GUI人机交互接口和培养箱软件工作算法,并采用以模糊自适应PID算法为核心的控制算法。培养箱软件设计的整体框架如图3所示。
2.1嵌入式Linux软件平台的搭建
本培养箱的嵌入式Linux软件平台是在PC机上的Federa 12操作系统下建立,具体内容如下:(1)建立交叉编译环境。为了能在宿主机的平台上编译出可在目标机体系结构平台上运行的程序,需要建立交叉编译环境,包括可用于目标平台ARM的编译器arm-gcc、相关的链接和运行库-Glibc以及二进制文件处理工具-Binutils等,这些GNU软件都是在i386平台上使用。本设计以EABI _4.3.3为交叉编译工具,修改PATH参数完成配置。(2)制作Bootloader。Bootloader是嵌入式Linux系统的引导加载程序,是系统上电后运行的第一段代码。它可以初始化必要的硬件设备,创建内核需要的基本信息,从而将系统的软硬件环境带到一个合适的状态,便于引导和加载操作系统。本设计采用支持Nand Flash启动和USB下载内核镜像文件系统的u-boot。(3)Linux内核的配置、裁剪和编译。Linux内核配置系统由Makefile、配置文件(config.in)以及配置工具三部分构成,其中Makefile定义内核的编译规则,配置文件给用户提供的选择功能,配置工具包括配置命令解释器和配置用具界面。本设计使用Linux-2.6.30.4内核版本,针对交叉编译要求,定义Makefile的CROSS_COMPILE=arm-linux-,并根据实际需要完成内核配置,最后制作内核镜像文件[4]。(4)制作根文件系统。文件系统负责管理系统的数据与文件。YAFFS是专门为NAND闪存设计的嵌入式文件系统,适用于大容量的存储设备。而且此系统提供了损耗平衡和掉电保护等功能,可以方便地集成到系统中去,具有速度快、占用内存少的特点,因此选用Busybox- 1.13.0制作的YAFFS作根文件系统。
2.2 系统内核层的驱动程序设计
系统内核层的程序主要为外接硬件设备的驱动程序,是内核与设备之间的交互层。Linux支持三类设备:字符设备、块设备和网络接口。在Linux操作系统中,每个硬件设备的应用程序可以利用open( )、release( )、read( )及write( )等函数对硬件设备进行操作[6]。内核层的驱动程序主要指DS18B20、SHT11、热电半导体与超声波加湿等硬件设备的驱动程序,它们分别定义在三个源文件中,其中ctrb.c中包含热电半导体、超声波加湿、T4灯及风扇等设备的驱动程序,18b20.c与sht.c分别为DS18B20与SHT11传感器的驱动程序。上述设备均属字符型的驱动设备, 在系统启动后利用insmod指令将其动态加载到内核中。驱动程序包括初始化模块、卸载模块、读模块和写模块。其中初始化模块主要包括初始化内部数据结构、硬件以及使用设备前应该完成的工作;读写模块主要负责对DS18B20与SHT11的读写。在Linux2.6内核中CPU使用虚拟地址访问外部设备, ctrb_ioctl()函数实现用户程序通过访问设备文件的方式对设备的间接操作。由于驱动程序属于内核层,程序最后要将数据从内核态拷贝到用户态,供应用程序使用。图4为初始化模块驱动程序工作流程图。[!--empirenews.page--]
2.3 系统应用层的程序设计
应用层的程序设计主要是在Qt/Embedded平台上完成的,负责设计触摸屏的应用程序GUI,另外通过调用驱动程序以实现硬件平台的工作算法。Qt/Embedded是由Trolltech公司开发的面向嵌入式的Qt版本。它通过Qt API与Linux I/O以及Framebuffer直接交互,拥有较高的运行效率,其类库采用C++封装且完全面向对象以实现真正组件编程。其开发套件使用C++语言编程,具有功能强大、使用简单、控件资源丰富且可移植性好等特点[7]。
本系统主程序的触发来自两方面。其一是按照系统时钟,依据时序触发各事件并完成相应的处理;另一方面由用户界面操作触发。根据设计要求,系统主程序采用双线程工作方式,分别定义Ctrb_n 与SensorT继承QThread实现双线程。 QThread代表在程序中一个单独的线程控制[4],在多任务操作系统中,它和同一进程中的其他线程共享数据,但运行起来就像一个单独的程序一样。QThread不是在main()中开始,而是在run ()中开始运行的。
在工作算法中添加模糊PID自适应控制,使控制器能够在线自动调整比例系数Kp、积分系数Ki和微分系数Kd,以期获得最佳的温度控制。在PID控制器中,比例系数Kp值的选取决定于系统的响应速度,积分控制Ki用于消除系统的稳态误差,微分系数Kd在于改变系统的动态特性。调节初期选取较大的Kp值以提高响应速度,较小的Ki值以防止积分饱和,Kd=0以保证系统的稳定性;在调节中期,随着误差的减小Kp也逐渐变小,Ki值加大以尽量消除余差,Kd值取较小值以调节系统的动态特性;在调节过程后期,Kp值调到较小值以保证系统的平稳性,Ki值取适中以消除余差,Kd值取小值以控制过程的制动作用[5]。主程序的工作流程如图5所示。
3 结果分析
在室温为33℃时,设定目标温度为48℃,分别采用普通PID算法与模糊自适应PID算法测得实验数据,并利用MATLAB对所测实验数据进行比较分析,得到图6所示的温度变化曲线。
从图6可知采用普通PID控制时,具有调节速度慢、超调量大以及精度不高等特点;而ARM实现的模糊PID控制,其调节时间相对于普通PID控制而言减小了5 min, 超调量变小, 平稳性更好,且控制相对误差达到±1.1%。热电半导体的应用,相对于传统的加热制冷设备,在减小噪音和环境污染等方面有很大的改进,从而提高了控制质量,降低了能耗。
本文实现了一种基于ARM9与嵌入式Linux操作系统并采用新型热电半导体为温控元件的控制方案,经反复实验调试该培养箱已达到相对误差±1.1%的控制要求,所设计的控制方案具有温度调节响应快、超调量小、性能稳定等特点。该方案具有低功耗、无污染及触屏控制等优点,具有良好的市场潜力。
参考文献
[1] 张晓林.嵌入式系统应用[M]. 北京: 高等教育出版社,2008.
[2] 崔光照,陈富强. 基于ARM9的无线传感器网络网关节点设计[J]. 电子技术应用,2008, 34(11):115-118.
[3] 艾红,王洪涛. 基于ARM的嵌入式远程监控系统[J].电子技术应用,2008,34(9):66-69.
[4] 周慧玲,王智威,张凤英,等. 基于ARM7和ZigBee技术的物流机械设备测振系统的设计与实现[J].测控技术, 2010,29(2):33-35.
[5] 诸静.模糊控制原理与应用[M].北京:机械工业出版社,2005.
[6] 毛德超, 胡希明.Linux内核源码情景分析[M].杭州: 浙江大学出版社,2001,9.
[7] SLOSS A N,SYMES D,WRIGHT C. ARM嵌入式系统开发—软件设计与优化[M].沈建华,译.北京:北京航空航天大学出版社, 2005.
[8] 宋戈, 鹤松.51单片机应用开发范例大全[M].北京: 人民邮电出版社, 2010.
[9] 刘辉. 半导体多级制冷器的设计与性能优化[D] .上海: 同济大学, 2008.