基于S3C2410及嵌入式Linux的氢气浓度的检测系统的解决方案

发布者:太和清音最新更新时间:2014-10-20 来源: 21ic关键字:S3C2410  Linux  氢气浓度 手机看文章 扫描二维码
随时随地手机看文章

氢气是一种无色无味、携带极不方便、极易泄漏的气体,在室温和标准大气压下,氢气与空气的混合比例达到4.1%~74.1%时遇明火极易爆炸。为了减小使用氢气的安全隐患,开发出一套安全、可靠、灵敏度高的氢气浓度监测系统具有十分重要的意义。

1 系统总体结构设计

采集到的氢传感信号经过低噪声放大电路进行放大处理,并在低通滤波器滤除信号中的高频噪声。然后,经A/D转换器送入ARM处理器S3C2410,ARM 处理器再调用应用程序对采集到的数据进行数字处理,最后实时显示浓度值,并在浓度超出限定值时做出报警处理。整个系统框图如图1所示。

2 系统硬件结构设计

本系统中所选氢气传感器为瑞士Membrapor生产的H2/C-1000。它的主要指标有:测量范围O~1 000 mg/m3,最大负载2000 mg/m3,输出信号为30±10 nA每mg/m3,分辨率2 mg/m3,响应时间<45 s,温度范围-20~40℃,典型信号漂移<2%/月。可见,传感器输出的信号范围为0~40μA甚至nA级的微弱直流信号。这里首先利用I/V转换电路将微弱的电流信号转换为电压信号,再利用后级的差动放大电路将其放大到A/D能采集的电压范围。然后,将其经过二阶低通滤波处理后送入A/D转换器。最后由微处理器S3C2410处理采集到的数值信号。

2.1 微弱信号放大电路

根据弗里斯定理可知,I/V转换引入的外界干扰和噪声,对整个系统性能影响最显著,为此必须选用开环输入电阻高、输入偏置电流小、噪声小的精密运算放大器。这里选用斩波稳零的高精度运放ICL7650,其输入电阻为1012Ω,偏置电流为1.5 pA,输入失调电压为1μV,失调电压温度系数为0.01μV/℃,共模抑制比为130 dB。后级的差动放大选用内部具有三运放结构的仪用放大器AD620AN。它具有共模抑制比高,温度稳定性好,放大频带宽,噪声系数小、功耗低,差动输入、单端输出,电压增益由电阻RG确定,且连续可调等优点。系统的前端信号放大电路如图2所示。

输入电流I1进入放大器ICL7650的反向端,输出电压正比于输入电流,电压U1=I1R2。为防止产生高频振荡,在电阻R2上并接了电容C1。R1为 ICL7650的限流保护电阻。经过I/V转换后的电压信号U1和R4上所分得的电压一起,作为差动输入进入仪用放大器AD620AN,它的放大倍数仅由电阻RG(即R6)决定,增益公式为G=(49.4 kΩ/R6)+1。由于R4上所得的电压为一恒定值,而U1会随着输入信号的变化而变化,那么AD620AN的输出端电压信号U2即包含了一定的基底电压和被测信号量,对其进行滤波采样后,进行处理,可以从中分离出需要补偿的基底电压,得到实际的被测信号。由于基底电压是缓变的直流信号,在一定的时间 (min级)内为定值,因此可以忽略处理时间(ms级),保证实时动态补偿。电路中的R3和R5与G2组成低通滤波电路,可以防止高频噪声进入放大器,减小噪声干扰。

2.2 滤波电路

经过放大后的直流信号附有噪声干扰,对于传感器信号滤波最常用的是RC有源模拟滤波器,即用运算放大器和电阻、电容构成,具有结构简单、调整方便、成本低的特点。因此采用由2个2阶巴特沃斯有源滤波电路级联构成的截止频率为50 Hz的4阶巴特沃斯低通滤波器。

2.3 ADC与微处理器接口电路

氢气传感器输出信号频率一般都远小于1 kHz。根据香农采样定理可知,采样频率至少要大于信号最高频率的2倍。另外,为了满足最小2 mg/m3的分辨率,这里采用美国ADI公司推出的一款高速低功耗串行12位8 通道A/D转换器AD7888。它是单电源工作,电压VDD范围为2.7~5.25 V。AD7888有2.5 V的片内基准电压,也可以使用外部基准电压,范围从1.2 V到VDD。模拟输入电压从O到VREF,采样频率可高达125 kHz,可与多种串行接口(SPI/QSPI/MICROWIRE/DSP)兼容。

 本监测系统的核心处理器是三星公司推出的16/32位RISC处理器S3C2410。它为手持设备和一般应用提供了低价格、低功耗、高性能的小型微控制器解决方案。S3C2410提供了丰富的内部设备:分开的16KB的指令Cache和16 KB的数据Cache,MMU虚拟存储器管理,LCD控制器,支持NAND Flash系统引导,系统管理器,3通道UART,4通道的DMA,4通道PWM定时器,I/O端口,RTC,8通道10位ADC和触摸屏接口,I2C总线接口,USB主从机,USB设备,SD主卡和MMC卡接口,2通道的SPI以及内部PLL时钟倍频器等。

该系统利用SPI实现A/D转换器与ARM处理器的数据传输,其接口电路如图3所示。SPlCLK0为SPI串行时钟信号,SPIMISO0和 SPIMOSI0数据引脚用来发送和接收串行数据。nSS0作为SPI的片选信号,低电平有效。

3 系统软件结构设计

本系统在S3C2410上移植了韩国Mizi公司开发的Bootloader(VIVI)、嵌入式Linux-2.6.14内核以及cramfs根文件系统,构建了具有嵌入式Linux操作系统的软件环境。[page]

3.1 外围设备驱动程序设计

Linux设备驱动程序是为特定硬件提供给用户程序的一组标准化接口,它隐藏了设备工作的细节。但对于特定的硬件设备来说,其对应的设备驱动程序不同,所以不同外部设备驱动程序的开发是嵌入式软件设计过程中必不可少的一部分。

Linux常以模块的形式加载设备,便于多个设备的协调工作也利于应用程序的开发和扩展。设备驱动在加载时首先需要调用入口函数ini- t_module()。该函数完成设备驱动的初始化工作,比如寄存器置位、结构体赋值等。其中最重要的一个工作就是向内核注册该设备,字符设备调用函数 register_chrdev()完成注册,块设备调用函数reglster_blkdev()完成注册。相应地,设备驱动在卸载时需要调用 cleanup_mod-ule()。该函数完成相应资源的回收、设备的注销、释放主设备号和设备文件名等。字符设备利用 unregister_chrdev()注销设备,块设备利用unregister_blkdev()注销设备。

Linux内核中,每个设备驱动程序都对应一个file_operations数据结构。在file_operations数据结构中,定义了一些与此设备相关的打开、关闭、读/写、控制等功能函数,当用户进行系统调用时,将自动使用驱动程序中特定的函数来实现具体的操作。实际上,编写设备驱动程序的过程也就是实现struct file_operations结构中的部分所需函数的过程。

3.2 应用程序设计

有了设备驱动程序提供底层硬件与应用程序的接口,Linux系统访问底层设备就像访问普通文件一样。例如,打开设备使用系统调用open(),关闭设备使用系统调用close(),读/写设备使用系统调用read()和write()等。应用程序流程如图4所示。首先系统上电复位,程序初始化,然后扫描键盘值,看是否有键值按下。若有,则进行按键处理并按输入步骤设置程序;若无,则开中断并启动A/D转换,等待转换完成产生中断,进入中断服务程序。中断服务程序流程如图5所示。首先关闭中断,读取A/D采集数据,调用适用于缓变信号的中值滤波算法处理转换结果,将连续采样的5次采样值按大小排序,取中间值为本次有效值。然后,存储处理后的数据并送显示器显示。最后,从中断返回到主程序中,再判断当前数据是否超过设定的临界值。若大于临界值,作报警处理;否则就开中断,等待下一次转换结束。依此循环处理。

中断服务程序流程

4 实验

在容积约70 m3的密闭实验室中,利用化学制氢法制取约40 ml氢气,再用该系统来检测环境中氢气浓度值,实验界面如图6所示。在界面中,显示了当前时间、当前环境浓度值、超限与否提示、当前通道以及1 h内的浓度变化曲线。监测系统的准确度、灵敏度、实时性等各项指标基本达到设计要求。

实验界面

结语

本文介绍了信号的前端调理电路,为微处理器S3C2410移植了嵌入式Linux操作系统,并在该系统下完成了设备驱动程序和应用程序的设计;利用软件算法对A/D转换后的信号进行了数值处理,最后介绍了图形用户界面,可动态显示当前氢气浓度值。该系统较好地满足了对现场环境中氢气浓度的实时动态监测要求,系统体积小,功耗低,成本低;还可根据需求灵活配置,适合便携式移动应用的场合,且具有良好的准确性、实时性和稳定性。

关键字:S3C2410  Linux  氢气浓度 引用地址:基于S3C2410及嵌入式Linux的氢气浓度的检测系统的解决方案

上一篇:基于自编程功能的MCU Bootloader设计
下一篇:WiFi控制的无线音乐播放系统设计

推荐阅读最新更新时间:2024-03-16 13:43

S3C2440 Linux驱动移植——SD卡驱动
开发板:TQ2440 内核:Linux 2.6.32 PC OS:Ubuntu 11.04 本文将对SD卡驱动的移植做简要介绍。 1. 添加板级信息 打开arch/arm/mach-s3c2440/mach-smdk2440.c。 添加如下结构体: /* Added by Yan Jun for SD/MMC driver */ /*********************************************/ #include plat/mci.h static struct s3c24xx_mci_pdata s3c_mci_data = { .no_detect =
[单片机]
S3C2440 <font color='red'>Linux</font>驱动移植——SD卡驱动
基于S3C2410及嵌入式Linux氢气浓度的检测系统的解决方案
氢气是一种无色无味、携带极不方便、极易泄漏的气体,在室温和标准大气压下,氢气与空气的混合比例达到4.1%~74.1%时遇明火极易爆炸。为了减小使用氢气的安全隐患,开发出一套安全、可靠、灵敏度高的氢气浓度监测系统具有十分重要的意义。 1 系统总体结构设计 采集到的氢传感信号经过低噪声放大电路进行放大处理,并在低通滤波器滤除信号中的高频噪声。然后,经A/D转换器送入ARM处理器S3C2410,ARM 处理器再调用应用程序对采集到的数据进行数字处理,最后实时显示浓度值,并在浓度超出限定值时做出报警处理。整个系统框图如图1所示。 2 系统硬件结构设计 本系统中所选氢气传感器为瑞士Membrapor生产的H2/C-1000。它的
[单片机]
基于<font color='red'>S3C2410</font>及嵌入式<font color='red'>Linux</font>的<font color='red'>氢气</font><font color='red'>浓度</font>的检测系统的解决方案
分享给初学者们的ARM与嵌入式linux的入门建议
大部分 嵌入式开发 初学者都在问有没有关于ARM与嵌入式linux的入门建议吗?我也知道大家这样问的原因,所以这里做一个总结供大家参考。事先声明下,以下的步骤都是针对 Linux系统 的,并不面向WinCE。想要面向WinCE入门建议的朋友勿进。   第一,学习基本的裸机编程。   对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制led。学过一段时间ARM的人都会笑这样
[单片机]
嵌入式linux 系统下的触摸屏驱动系统设计
  文章首先介绍了触摸屏的实现原理,然后介绍了触摸屏芯片AD7873 的特性,在此基础上设计了ad7873 与i.MX27 和触摸屏的连接 PCB 图,最后依照硬件连接图设计了嵌入式Linux 下的驱动,并成功通过了tclib 触摸屏专业 测试 软件的测试,在家庭智能网关系统的测试中也成功运行,实现了从硬件到软件的嵌入式下触摸屏的驱动系统设计。   1 引言   随着 计算机 技术的发展和普及,触摸屏技术得到了越来越广泛应用,在各种手持设备中,如手机、MP4、掌上游戏机、掌上PDA 等,由于其方便、舒适,使其完全摆脱了键盘和鼠标的束缚,使人机交互更为直截了当。而在微软最新开发的windows 7 操作系统中,就有其值得骄傲
[电源管理]
嵌入式<font color='red'>linux</font> 系统下的触摸屏驱动系统设计
S5PV210开发 -- Linux dd命令
昨天群里有人询问,为什么破坏 BootLoader 破坏不掉。 出现错误:dd: writing '/dev/mtdblock0': Operation not permitted 我说需要插着 SD卡才可以。(这个也不对,不插SD卡也可以,那这个错误还是没有搞清楚) 然后我们来看一下它操作指令: busybox dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1 count=1 conv=sync 为了确保执行数据有效,再执行 sync 同步一下,即可破坏掉前一个块的数据。 进而引出了我们今天要讲的 dd命令。 参看:Linux dd命令
[单片机]
S5PV210开发 -- <font color='red'>Linux</font> dd命令
基于Linux和MCU的心电监护仪设计
  随着人们生活节奏加快,人口逐渐老龄化,心脏疾病成为危害人类健康和生命的主要疾病之一。心电监护系统为心脏病人诊断和治疗提供了一个有效的手段,对心脏疾病的防治和诊断具有重大的意义,本介绍一种基于Linux 和MiniGUI 的心电监护系统,能够满足患者随时随地对心电进行方便快捷的监测,及时地发现异常情况并采取有效的措施,从而更好地保护人们的身体健康。   1 硬件系统设计   本系统采用S3C2440 处理器作为控制中心,S3C2440 是基于ARM920T 内核的16 /32 位RISC 嵌入式处理器,最高主频可达532MHz,提供64MSDRAM、64M Nand Flash 以及2M Nor Flash 的存储设备,独立
[单片机]
基于<font color='red'>Linux</font>和MCU的心电监护仪设计
嵌入式Linux在IOP331上的移植实现
引言 虚拟磁带库是指对于用户端(备份服务器/网络端)体现为常规磁带库,但是使用磁盘阵列为存储介质的备份设备。它不仅大大提高了系统的可靠性和可用性,而且对于那些主要使用磁带为数据存储介质、现在想更换为磁盘阵列但又不想全部更换原有设备的用户来说具有非常重要的意义。虚拟磁带库的实现,依赖于以下三项核心技术:嵌入式微处理器、存储协议微处理器和嵌入式操作系统。嵌入式微处理器作为系统的主控单元,实现人机交换及存储协议处理器的控制,同时也是嵌入式操作系统的运行平台;存储协议微处理器实现与存储介质之间的数据传输;嵌入式操作系统主要实现内存管理与进程调度,为设备驱动程序与用户应用程序提供软件平台。本文首先介绍Linux操作系统和Intel
[嵌入式]
嵌入式Linux下IC卡接口设计与驱动开发
引 言 随着现代工业社会逐步向信息社会的过渡,信息将扮演愈来愈重要的角色,成为现代经济生活中的成功要素。IC卡作为卡基应用系统中的一种卡型,是利用安装在卡中的集成电路(IC)来记录和传递信息的;具有存储量大、数据保密性好、抗干扰能力强、存储可靠、读写设备简单、操作速度快、脱机工作能力强等优点,其应用范围极为广泛。 我们基于公用电话IC卡的应用,开发了多媒体信息终端产品,在传统公用IC卡电话功能的基础上增加了上网、邮件、电子支付、信息浏览等各种多媒体功能,统一采用公用电话IC卡进行收费。目前设计的IC卡读写器和驱动软件已经应用于我们的多媒体终端产品中。 1 嵌入式Linux下设备驱动模块简介 Linux系统将设备分成三种
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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