当前位置:首页 > 单片机 > 单片机
[导读]本文介绍了基于32位ARM芯片S3C44B0X的微伏信号在线监测系统设计。本设计采用三运放差动放大电路实现了对微伏信号的前置放大;采用μClinux操作系统和MicroWindows图形用户界面实现了数据显示、人机交互和故障自动报警的功能。

摘要:本文介绍了基于32位ARM芯片S3C44B0X的微伏信号在线监测系统设计。本设计采用三运放差动放大电路实现了对微伏信号的前置放大;采用μClinux操作系统和MicroWindows图形用户界面实现了数据显示、人机交互和故障自动报警的功能。本设计的应用为实现微伏信号在线监测提供了一种体积小、功耗低、操作灵活的解决方案。
关键词:微伏信号检测;ARM;差动放大;图形用户界面;

1     引言

在线监测系统中,待测信号幅值在50μV左右,而背景噪声幅值在50mV以上,用一般的采集和测量系统无法准确检测该信号。针对被背景噪声覆盖的微小信号,采用滤波降噪和差分放大手段,提高信噪比,保证待测信号能被准确采集;采用基于ARM核的32位微处理芯片S3C44B0X和基于μClinux操作系统的嵌入式图形用户界面MicroWindows,完成实时显示测量结果和实现故障自动报警,同时具有体积小、功耗低、操作灵活的特点,为实现微伏信号在线监测功能提供了一种良好的解决方案。

2     系统硬件设计

整个微伏信号在线监测系统硬件主要分为两个部分,即前置放大电路和基于ARM的数据采集与显示电路,如图1所示。

图1  系统方案示意图

2.1   前置放大电路

待测信号幅值为50μV,而背景噪声幅值在50mV以上,SNR(信噪比值)在1/1000以下,所以必须根据信号特点进行降低噪声功率,提高信噪比。通过实验,发现信号与噪声频谱不重叠,噪声频率主要集中在高频段。利用滤波器的频率选择特性,可设置低通滤波器,其通带范围能够覆盖信号的频谱,使信号通过滤波器衰减很少,同时噪声频率处于通带之外,通过滤波器后功率大幅度衰减,因此信噪比得以提高。

本设计采用二阶有源低通滤波器,经实验对比,取二阶有源低通滤波器的截止频率fH为200Hz,品质因数Q为0.707,可使SNR达10以上,SNIR(信噪改善比)达10000以上。

在实际应用中发现,待测信号和监测系统之间的参考零电势点之间存在电势差,由于两者由同一电源供电,因而形成“地环流”。电流从电源地线流入被测信号的接地点,然后通过信号地线流入监测系统,又通过监测系统的接地点回到电源地线,导致在线监测的过程中地线上出现很高的共模干扰噪声。在这样的工作环境下,使用普通的低温漂高精度运算放大电路,不能准确放大和测量待测信号。因此本设计采用高增益、高输入阻抗和高共模抑制比的三运放差分放大电路,消除共模干扰,如图2所示。

图2 三运放差分放大电路

集成运放A1和A2都接成同相输入、比例运算电路形式,这样电路输入阻抗很高。电路结构采用严格地对称形式,以使漂移、噪声、失调电压及失调电流等互相抵消。同时采用高精密电阻,以提高测量精度。将滤波后的信号线接入Vi+端口,而把信号地线接入Vi-端口,经过三运放差分放大电路输出电压为:

经实验对比,本设计在强干扰环境下,对微伏信号有较好的放大效果。经过前置放大后的信号,有效地消除了干扰和噪声,具有良好的线性关系,实验结果如图3所示。经过差动放大后的信号,再经过普通运算放大器进行电压平移和放大,即可成为符合A/D采集要求的0~2.5V电压单极性信号。

图3 前置放大电路的线性关系

2.2   数据采集与显示电路

本设计中数据采集和显示电路的核心器件采用32位ARM7内核嵌入式处理器S3C44B0X。S3C44B0X内置部件有8通道10位ADC(模数转换器)、8KB cache(高速缓存器)、内置SDRAM(同步动态存储器)、LCD控制器、2通道UART(通用异步收发器)、4通道DMA(直接存储器存取)、71个通用I/O端口等。

本设计中使用S3C44B0X完成A/D数据采集、LCD控制液晶显示器、键盘输入和故障报警四个主要功能。经前置放大电路处理完成之后的0~2.5V电压电极性信号,由S3C44B0X的10位精度片上A/D采集到CPU中。S3C44B0自带LCD控制器,利用DMA控制器从系统RAM中的显示缓冲区读取显示数据,提供给LCD控制器刷新液晶显示屏。键盘和报警电路利用S3C44B0通用I/O端口进行控制。

3     系统软件设计

本系统软件设计基于μClinux操作系统和MicroWindows图形用户界面。μClinux操作系统是从Linux内核派生而来,在标准的Linux基础上进行了适当的裁剪和优化,具有易配置、体积小、易移植的优点。用MicroWindows图形用户界面实现类似桌面电脑的视窗效果,易于实现人机交互。

系统软件包括操作系统自带的设备驱动程序、操作系统运行环境、根据用户需要自定义的设备驱动程序、封装了底层驱动的中间层接口程序、高级应用程序几个部分。在本系统软件设计中,分别在驱动层和高级应用层程序中实现,其中高级应用层程序框图如图4所示。

图4 高级应用程序框图

高级应用程序的设计以控制算法为核心,多个任务为控制服务。系统内核定时将测得的数据通过回调函数传递给高级应用程序。高级应用程序为每个被测通道分配一个数据缓冲区,数据缓冲区是个含有10个无符号整型数的数组,GCC编译器默认无符号整型数长度为16位。测量电路中ADC为10位模数转换器,缓冲区中的每个单元的低10位存储数值,最高位为1表示该数据无效或者已经被处理,为0表示该数据有效并等待处理,第10~14位表示数据编号,用以区分不同通道的数据。内核驱动程序把测量数据按格式准备好后,回调函数把数据传送给高级应用程序。应用程序只要使用“与”、“或”操作就可以提取数据类型、实际数据等信息。

3.1   自定义设备驱动

设备驱动程序是操作系统和硬件设备之间的接口,它主要完成对设备初始化、实现内核和应用程序与设备之间的数据交换、检测处理设备错误等功能。在μClinux操作系统使用设备文件的方式来进行设备管理应用,一个具体的物理设备被映射为一个设备文件,用户程序可以像对其它文件一样对此设备文件进行打开、关闭、数据读写等操作。

系统软件设计中的驱动层部分,除了使用μClinux操作系统自带的设备驱动程序以外,需要对外部设备编写自定义的设备驱动程序,以满足操作系统的要求。以字符设备为ADC为例,主要对其编写自定义的驱动程序。使用结构体file_operations{}作为ADC字符设备的函数接口,内核通过这个函数接口来操作设备。自定义后的file_operations{}结构体如下:

struct file_operations ADC_fops = {

       read:                     ADC_read,     //从设备中读数据操作

       poll:               ADC_poll,      //查询设备

       ioctl:              ADC_ioctl,     //进行读、写以外的IO控制操作

       open:              ADC_open,     //打开设备

       release:           ADC_release, //关闭设备

       ……};

编写自定义的驱动程序完成后,内核调用相应的函数即对ADC设备文件进行open、ioctl等具体操作。

3.2   图形用户界面设计

图形用户界面(GUI)把图形视窗引入到嵌入式平台上,其友好的界面为大多数用户所接受,也得到越来越广泛的应用。本设计采用MicroWindows来实现图形界面,以窗口形式显示测量数据及其它参数。MicroWindows是一个较早出现的、开放源码的嵌入式图形用户界面软件,它提供了比较完整的图形功能,支持多种外部设备输入,具有占用空间小、可移植性好的优点。在μClinux操作系统上使用MicroWindows易于图形程序的开发。

MicroWindows采用了层次化结构:在底层提供设备的驱动,在中间层通过一个可移植图形引擎实现绘制多边形、区域填充、使用颜色等,在顶层实现多种API以适应不同的应用环境。MicroWindows API 之间采用消息传递的基本通信机制。消息被储存在应用程序的消息队列中,不同消息对应不同的事件,核心的API通过传递对应相应事件的消息来实现各种功能,如窗口的创建、绘制、移动等等。

在本设计中,编写基于Microwindows的应用程序,基本结构为初始化、创建窗口与资源、进入消息循环三部分。主程序中相关部分如下所示:

int WINAPI WinMain()

{MwRegisterEditControl(NULL);   // 申明不使用控件

wndclass.style= CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;

wndclass.lpszClassName = szAppName;    // 创建窗口属性的结构体变量

RegisterClass(&wndclass);  

hwnd=CreateWindowEx();   //创建窗口

while (1)

{if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))    //消息查询

{TranslateMessage(&msg);DispatchMessage(&msg);}   //传递消息至窗口处理程序

ScanKey_function();   //扫描键盘

RxKeyvalue(hedit_Param);

……}}

在调用窗口创建函数CreateWindowEx()后,系统在内存中创建了一个虚拟的窗口,之后调用窗口显示函数ShowWindow()就可将虚拟窗口显示为可视窗口,成为Windows风格的视窗界面。在本设计中,主程序运行时不断调用提取消息函数PeekMessage(),查看消息队列是否收到任务信息,当有信息产生时,就执行对应的消息处理函数。同时,在消息循环里也反复调用键盘缓冲区查询函数RxKeyvalue (),查看是否有键盘输入,以便随时响应。

4.  抗干扰措施

在本设计中,采用低温漂的基准稳压电源为前置放大电路供电,并且在每个元件的电源管脚处加去耦电容。元器件选用高精度、漂移小的精密运算放大器;选用高精度、低温漂的精密电阻;信号线采用双绞线或屏蔽线。印刷板布线时,尽量缩短前置放大电路的信号线,并确保了电路接地、屏蔽良好。

5   结语

本文创新点在于设计和实现了一种基于ARM的微伏信号在线监测系统,以差动放大方式消除外界对测量信号的干扰,利用S3C44B0X微处理器和μClinux操作系统实现液晶屏显示数据、人机交互和故障自动报警功能,为实现微伏信号在线监测提供了一种体积小、功耗低、操作灵活的解决方案。本设计已投入使用,长时间工作稳定。

 

参考文献:

[1] Samsung公司,《S3C44B0 Microprocessor——Product overview》

[2] 万沛霖等,低噪声宽频带弱信号前置测量电路的研制,电测与仪表, No.429: 26-27,2001,

[3] 周立功等,《ARM嵌入式Linux系统构建与驱动开发范例》,北京:北京航空航天大学出版社,2006

[4] 张进等,基于ARM7的嵌入式系统中频率数据获取与共享,微计算机信息,No.11: 82-83,2006

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

奈飞(Netflix)今年早些时候从数据中看到了一个令人担忧的信号:用户访问该流媒体服务的频率下降了。该公司对其用户在四周时间里观看其内容的天数进行了跟踪,并担心访问频率的下降会增加用户取消订阅的可能性。在发现这一问题之...

关键字: 信号 流媒体 TI ST

物联网正在扩大规模并加速发展,进而驱动着全新的经济。而Arm生态系统正是这一巨大机遇背后的推动力。

关键字: ARM 物联网

ARM公司是一家知识产权(IP)供应商,它与一般的半导体公司最大的不同就是不制造芯片且不向终端用户出售芯片,而是通过转让设计方案,由合作伙伴生产出各具特色的芯片。

关键字: ARM

2018年10月26日,深圳星河丽思卡尔顿酒店,ARM中国CEO吴雄昂在ARM年度技术论坛上对记者如是说,彼时的吴坚定,温雅,意气风发。时隔两年,ARM中国CEO吴雄昂再次回到媒体视线,这一次,ARM中国与来自投资方和剑...

关键字: ARM 芯片 集成电路

喜欢折腾主机的小伙伴一定都知道X86和ARM架构的区别,前者在PC领域已经统治了几十年;后者则主要应用于移动领域,尤其是近几年,ARM的产品在终端应用特别是手持终端应用飞速发展。

关键字: 国产 ARM 主机

科技公司们认为,收购将使英伟达控制一个重要的供应商,该供应商向苹果、英特尔、三星电子、亚马逊和华为等公司授权基本的芯片技术,同时也向不计其数的中小技术企业提供授权。总部位于英国的ARM公司将芯片设计和相关软件代码授权给所...

关键字: 英伟达 ARM 半导体公司

在去年九月,英伟达宣布以400亿美金收购ARM时,就注定这场收购不会太顺利。因为一旦ARM成功被英伟达收购,这将使ARM改变在全球半导体市场中的中立立场,因为ARM的很多客户,都是英伟达的直接或者间接的对手。除此之外,还...

关键字: 英伟达 ARM 半导体

运放在没有输入的情况下,实际中仍会输出一个小电压。而这个小电压,会根据我们设置的放大倍数同等地被放大,同时,这个被放大的信号是有正、负之分的。

关键字: 运放 放大倍数 信号

大家好,我是鲏。认识我的朋友都知道,我是一个实践派,相比研究枯燥的理论知识,我更喜欢做自己想做的项目,用技术来实现自己的想法的感觉真的很棒。所以从大学期间一直到现在,除了工作中的项目外,我依然保持着自己做项目的习惯,有坚...

关键字: 系统设计 技术选型 需求分析

以下内容中,小编将对工控主板的相关内容进行着重介绍和阐述,希望本文能帮您增进对工控主板的了解,和小编一起来看看吧。

关键字: ARM 工控主板 主板

单片机

21600 篇文章

关注

发布文章

编辑精选

技术子站

关闭