半导体培养箱的ARM嵌入式控制系统研制
时间:2023-09-25 22:56来源: 作者: 点击: 次生物作为一种广泛应用于生物、农林等学科的实验设备,其传统的加热制冷方式具有噪音大、温控调节精度不高且污染环境等缺点。对此本文设计了一款利用材料作为温控元件的生物。在此设计中,一方面采用新型热电转换技术,通过材料的三种形式将热能和电能进行直接转换,以实现温度调节,并辅以湿度、光照的调节;另一方面采用9处理器作为硬件平台,移植开源的Linux操作系统,并研发了模糊PID。不仅减小了噪音,还降低了产品的成本,且具有控制速度快、精度高及性能稳定等特点,为的设计提供了一种新的思路。
1 半导体培养箱的硬件设计
该培养箱的硬件部分由信号采集模块、核心处理模块和控制模块组成,其中信号采集模块又分温度、湿度采集。温度采集是采用单总线数字温度传感器DS18B20,微处理器依据其器件寄存器内置序列号对所匹配的传感器进行读取,以此实现多点分布式应用;湿度采集是采用湿度传感器SHT11,微处理器采用二线串行数字接口和温湿度传感器芯片SHT11通信以完成湿度信号采集。核心处理模块采用基于920T 架构的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处理器,其拥有920T核,能运行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.1Linux软件平台的搭建
本培养箱的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为初始化模块驱动程序工作流程图。