基于STM32、STM8处理器万能试验机的多个功能模块设计

发布者:太和清音最新更新时间:2018-03-23 来源: eefocus关键字:STM32  STM8  万能试验机 手机看文章 扫描二维码
随时随地手机看文章

    基于STM32、STM8处理器,设计完成了万能试验机的多个功能模块。为了提高小信号的采集精度与速度,用多处理器设计了一种混合式的锁相放大器,并运用数字处理进行进一步处理,具有很高的性价比。在位移信号采集中。运用STM8S实现了低成本的设计。实验表明,本系统在速度与精度上满足万能试验机要求,总体性价比高。

    万能材料试验机是一种配备全数字化测量控制系统的试验机,主要用于橡胶、塑料、金属、水泥等材料拉伸剥离等力学性能试验。材料试验机作为一种精密测试仪器,对于材料科学的发展,工业产品和工程结构设计,有效的使用材料,改进工艺,减轻产品重量和缩小体积,提高产品质量和降低成本,以及保证产品安全可靠,提高使用寿命,都具有极其重要的作用。目前,国内传统的万能材料试验机在功能、精度、成本上都有不少改进的空间。本文基于意法半导体公司的STM32处理器作为采集控制系统的核心。在力传感器等小信号采集中,设计了一种混合式锁相放大器的方案,采用多个处理器完成小信号采集。利用8位单片机STM8S自带的编码器接口,通过PCI专用接口芯片,设计了一种高精度,接口电路简单,性价比高的万能材料试验机解决方案。

    1 系统总体设计和工作原理

    试验机的总体结构如图1所示,整个系统包括:主控制芯片STM32,数据采集部分,控制部分,与计算机通讯接口和无线手操器等5部分。数据采集包括测量力、形变、位移等量。力和形变两个量,为毫伏信号,为了实现高精度采集,同时保证一定速度,采用一种混合式的锁相放大器来完成。位移量信号经过光电隔离后,进入STM8S单片机,利用其自带的编码器接口模式进行采集,再通过IIC与STM32通讯。对于控制方式,有两种模式。对于伺服电机,通过定时器产生一定频率的脉冲信号,对于液压系统,通过DA来控制。与PC机的通讯,通过专用的PCI接口芯片,与SIM32连接。而对于手动控制实验的手操器,采用无线方式连接。

    2 高精度小信号采集模块

    试验机系统的一个重要指标就是力传感器等小信号采集的精度和速度。而且采集系统的速度与精度又直接影响到控制系统的性能。这些传感器满量程10 mV左右,要达到十万分之一的分辨率,就需要能测量出100 nV的信号。对于如此小的信号快速精确的采集是本系统的关键。如何把微弱的有用信号从背景噪声中提取出来,是小信号采集的关键。在微弱信号检测的各种技术中,检测精度比较高,应用最为广泛的是锁相放大器。

    锁相放大器是一种运用互相关原理,对检测信号和参考信号进行相关运算的设备。锁相放大器的基本原理如图2所示。锁相放大器的原理是基于这样的事实,噪声同时符合与信号既同频又同相的概率是很低的。锁相放大器包括信号通道、参考通道、相关器等几部分。信号通道将伴有噪声的输入信号进行放大、滤波等预处理,以滤除信号通带以外的噪声;参考信号提供与被测信号同频,并有一定相位差的信号;相关器包括相敏检波器(乘法器)和低通滤波器(积分器),经过相敏检波器会出现输入信号与参考信号的差频项与和频项。再通过低通滤波器滤除和频项,保留差频项,最后输出的直流信号只与被测信号振幅成正比。

    2. 1 锁相放大器硬件结构

    根据锁相放大器的相敏检波器的结构不同,可分为模拟锁相放大器和数字锁相放大器。模拟锁相放大器存在温漂、噪声、系统升级能力差等缺点,但是其速度相对较快。相比来说,数字锁相放大器抗干扰性能好,参数稳定,易于升级,但是由于要进行大量的运算,速度相对较慢。本系统采用混合式的设计方法,把运算量大的乘法运算用模拟器件实现,然后,经过AD采样后,对数据进行数字滤波。在保证性能的同时,最大程度提升速度。其整体结构如图3所示。

    本系统采用正交矢量锁相放大器的设计,这样的设计可以避免在测量时对参考信号进行相位调整,避免移相调节误差对测量精度的影响。信号通道由前置放大器、滤波器、主放大器等组成。前置放大器采用LTC6910,前置放大器必须具有低噪声、高增益等特点。LTC6910输入噪声密度为8 nV/,具有可编程的增益控制,最高达100倍放大。滤波电路采用TI公司的通用有源滤波器UAF42,其可配置成低通、高通、带通滤波器。具有集成度高、可靠性高、设计灵活的特点。

    主放大器采用PGA204,该芯片是TI公司的低成本多用途的可编程增益放大器。四级固定增益为1,10,100,1000。可根据测量信号的范围进行调整。而且PGA204内部电路由激光技术校正使得芯片具有低偏移电压及温漂,以及较高的共模抑制比。参考信号由控制器STM32产生,同时产生相位差为90度的两个参考信号。经过预处理的待测信号和两个正交的参考信号分别进入相敏检波器中。相敏检波器采用平衡调制解调器AD630。AD630内部是一个比较器控制的两路运放结构,外部电路简单,具有很宽的动态范围。在完成相敏检波后,进入高精度AD转换器,本系统选用TI公司的ADS1271。

    ADS1271是一款高带宽的24位AD转换器,实现了DC精度与AC性能的突破性结合。其具有105 kSPS的转换速率以及高达109 dB的信噪比。鉴于本系统要同时完成两次AD采集,选用两片ADS1271同时采集。在得到数字信号后,通过专用的数字处理单元,进行运算,最终得到待测信号的幅值。由于计算量大的乘法运算已经由模拟器件完成,此处的运算量不会太大,本系统选用性价比高的STM32处理器。

    2.2 锁相放大器原理及数字多点平均算法实现

    本系统在锁相运算的基础上,在对数字信号进行处理时,采用数字多点平均的方法,减少因AD采样带来的嗓音,提高采集系统的精度。在本系统中,设被测信号为:x(t)=S(t)+N(t)=Asin(ωt+φ)+N(t)。正弦参考信号与余弦参考信号分别为:r1(t)=Bsin(ωt)、r2(t)=Bcos(ωt)。待测信号与两参考信号的互相关函数分别为:

    乘法运算已经在相敏检波部分实现,在数字处理时只进行加法运算。由于在之前的AD采样中以及模拟器件引入的噪声,在计算积分时先对AD的采样值进行处理。本系统中运用数字多点平均的方法,这是利用同步累积原理的一种方法,是一种从噪声中提取有效信号的有效方法。其原理如下:设淹没在噪声中的信号为,每一个取样周期内取样i(i=1,2,…n)点,取样m个周期。本系统中,根据ADS1 271采样速率为105 kSPS,要达到500 Hz的最终采样速度。设计每周期采样30点,采样累计次数设为7次。锁相放大器中参考信号采样频率为3.5 kHz。这种设计是基于速度和性能的折中方面来考虑。

    对于线性累加平均,第k次取样中的第i个取样点的值为:

    在具体实现上,主控制器STM32在每个信号周期内完成30次采样,各次采样在固定的采样时刻,每一点进行各自累加,同时保存每次采样的值,在完成m个采样周期后,对数据作进一步处理,改为用去极值平均滤波,在一定程度上进一步改善滤波效果。计算出最后的积分数据后,按公式计算得到待测信号幅值。在每次信号开始的时候MCU0都要发送同步脉冲,保证累加的采样值不会出现错位。AD每完成一次采样,就中断通知专门进行数字处理的MCU1来进行数据读取,并进行累加,并保存所有采样值。为了提高处理能力,完成第m次采样后,把数据发送给MCU2进行最后计算待测信号的运算,MCU1继续进行采样的累加存储。

    试验中,使用力传感器进行测试,采样频率为500Hz,力传感器满量程30 kN。有效测力范围1%-100%,测量精度为0.5%。在不分档时,能达到二十万分之一的分辨率。在速度和精度上可以满足试验机的设计要求。

    2.3 编码器位移测量模块

    试验机测量中位移传感器(包括安装在横粱上和来自电机)和大形变传感器,通常使用增量式光电编码器。其是一种体积小、精度高、响应速度快和性能稳定的转速与位置传感器.它在测量领域得到了广泛的应用。增量式编码器是通过随转轴旋转的码盘给出两个相位相差90度的脉冲信号A、B,然后根据相位关系决定旋转方向,再用计数器对这些脉冲进行加减计数,以此来表示转过的角位移量。

    光电编码器的分辨率与每转输出的脉冲数有关,脉冲数越多,分辨率越高。而引入倍频技术,对编码器输出的信号进行细分,将进一步提高测量精度。常规的实现倍频的方法是,通过逻辑电路进行处理,或者是利用单片机经过一系列处理后实现。现在,市场上也出现了不少专门完成编码器信号处理的芯片,直接输出数字信号,比如奎克半导体的QA744808芯片。这些方法,要么成本高,要么处理相对复杂。本系统采用STM8S单片自带的编码器接口模式功能,实现了一种简单的编码器信号读取。近几年雕刚推出的STM8、SWM32系列的单片机,专门为电机控制加入了特别的设计,提高了电机处理能力,也加入了在电机控制中要用到的编码器接口。增量编码器可与MCU直接连接而无需外部接口电路。

    从A、B两路信号可以看出,一个脉冲周期里面,两路信号共发生了4次变化,如果能在两信号上升沿与下降沿都进行计数,就可以在一个周期里对编码器计数4次,从而实现了4倍频的目的。如图5所示,在STM8S中,选择双边沿计数模式,就可以轻松实现4倍频的功能,同时在发生输入抖动时,不会引起计数器加减变化,能有效抑制干扰。

    STM8S的编码器接口模式存在于TIM1中,在硬件连接上,编码器差分信号经高速光耦光电隔离,同时进行电平转化后,输入TIM1的TIM1_ CB1,TIM1_CH2引脚。通过配置TIM1_SMCR寄存器,使计数器同时在TI1,TI2边沿计数。根据两个输入信号的跳变顺序,产生计数脉冲和方向信号。在计数器溢出时,根据方向,对数值进行累计,可实现很大的量程。同时可以通过STM8S的一个引脚与STM32相连,通过中断信号,对编码器计数进行清零。

    在本系统中,设计了3路的编码器信号采集电路。通过IIC总线与STM32相连。在此使用了20引脚的STM8S103,成本菲常低,同时也结构简单,是一种不错的选择。

    3 结论

    本万能材料试验机系统设计中,实现了几个基本模块的功能,完成了一种性价比高的解决方案。在采集系统的核心采用混合式的锁相放大器来实现,同时运用数字处理,在速度和精度上得到了保证。并且,该方案对处理器行性能要求不高,从而用STM32处理器实现了锁相放大器的低成本应用。


关键字:STM32  STM8  万能试验机 引用地址:基于STM32、STM8处理器万能试验机的多个功能模块设计

上一篇:基于STM32的多色温多星等输出的单星模拟器设计
下一篇:用ARM Cortex-M0内棱的LPC1112的LED电子胸牌设计

推荐阅读最新更新时间:2024-03-16 15:58

STM32学习日志——主函数框架:时间轮
读大学时候,老师曾教了一种叫时间轮的方法,当时没好好学习。自己在写程序时经常乱用延时,一方面占用CPU资源,原本单片机可以执行更多的任务,却被用来延时,特别浪费,另一方面可能出现各种各样的问题。 使用时间轮的方法,可以使单片机像人一样,以时间为尺度,来规划任务。人可以决定今天几点吃饭,几点看书,几点睡觉。 而单片机依靠定时器的中断,每隔0.5ms进入一次中断,可以设定在任意的时间点执行合适的任务,比如需要usart发送比较重要的数据的,可以让它以1ms间隔发送,比如不重要的数码管显示,可以让他200ms执行一次。而这个框架可以直接套用于主程序。 配置定时器 主程序框架 主程序框架
[单片机]
STM32驱动LCD实战
01 驱动时序 我们通常说的MCU-LCD接口,就是8080接口,8080接口的详细介绍请看《STM32驱动LCD原理》。 下面是LMT028DN给出的8080模式总线时序 下面是总线时序中的参数 时序参数 Tast- 地址设置时间 Taht- 地址保持时间(写) Tchw- 芯片选择高脉冲宽度 Tcs- 芯片选择设置时间(写) Tcsf- 芯片选择等待时间(写) Twc- 写入周期 Twrh- 控制脉冲高电平时间 Twrl- 控制脉冲低电平时间 Tdst- 数据设置时间 Tdht- 数据保持时间 根据FSMC的配置和时序图,我们需要的3个时序参数是 3个重要参数 1、地址建立时间:5ns 2
[单片机]
<font color='red'>STM32</font>驱动LCD实战
STM32 UART串口通讯编程方法
在对通讯时间要求比较高的时候,就需要自己对UART的通讯底层直接进行操作。我以STM32单片机为例,讲一下比较快速的UART编程方法。——其实不止是STM32这么处理,我以前使用过51的单片机,TI的MSP单片机,三菱的16位单片机,都可以采用这种方法。 基本的处理思路如下: 1. UART接收的处理方法 打开UART的接收中断,每收到一个字节就放到接收缓冲区,同时更新接收指针。当连续100ms没有收到接收字符,则认为本次帧接收完毕,置位帧接收完成标志,由主程序进行处理。 2. UART发送的处理方法 将需要发送的数据放到发送缓冲区,设置发送长度。然后发送第一个字节,并打开发送中断。在发送中断中判断是否已经发送
[单片机]
基于STM32单片机的串口使用解析
STM32串口功能比较强大,但仅仅使用串口来说,是很简单的 我们要做的事 1.使能串口时钟 2.复位串口 3.设置串口波特率 4.设置数据长度,停止位 5.收发使能 6.串口使能 1 int main() 2 { 3 u8 buf; 4 sysclk_init(9); 5 6 RCC-》APB2ENR|=1《《14; //串口使能 7 8 RCC-》APB2RSTR|=1《《14; 9 RCC-》APB2RSTR&=~(1《《14);//复位串口,不复位会出错 10 USART1-》BRR=0x1D4C;//设置波特率 11 USART1-》CR1|=0x200c;//停止位在USART-》CR2中,默认为1位停止位 12 /
[单片机]
基于<font color='red'>STM32</font>单片机的串口使用解析
关于STM32启动文件的几个小问题
基于STM32芯片的工程代码里有个很重要的文件,即启动文件。该文件主要由汇编语言写成,文件名冠以.s结尾,它是芯片程序运行首先要执行的一个文件。其功能及作用简单点说就是做执行用户程序前的基本准备,比方执行复位程序初始化栈、堆,做时钟系统的默认配置、中断矢量表的定义与分配等。 网络上有些文章对该文件做了不错的整体性介绍,这里仅就该文件中的几个小问题一起交流分享下。【注:下面用到的工程是基于STM32F429的,使用IDE为ARM MDK】 怎么在编译后的MAP文件里看不到变量__heap_base? 有人发现在启动文件里明明有定义__initial_sp和__heap_base,可在MAP文件里只看到__initial_sp的地
[单片机]
STM32学习笔记(4) 高级定时器-两路互补的PWM输出(带死区和刹车控制)
1.实验目的 使用高级定时器,输出两路互补的PWM输出,需要有带死区和不带死区两种情况 2.实验效果 图1:不带死区的两路互补的PWM输出 图2 :带死区的两路互补的PWM输出 3.理论部分 3.1时钟源 内部时钟(基本定时器,通用定时器时钟源来自PCLK1,但高级定时器的时钟源来自PCLK2(72M)) 实践中几乎无需使用:外部时钟模式1、外部时钟模式2 3.2时基单元 组成: 16bit预分频PSC 16bit计数器CNT 8bit重复计数器RCR(高级定时器独有) 16bit自动重装载寄存器ARR 3.3输入捕获 作用:对输入信号的上升沿/下降沿/双边沿进行捕获,测量输入信号的脉宽,和
[单片机]
<font color='red'>STM32</font>学习笔记(4) 高级定时器-两路互补的PWM输出(带死区和刹车控制)
STM32 TIM1 做PWM输出问题
最近碰到一个奇怪的问题,stm32 定时器1 配置成PWM输出,仿真有波形输出,下载到板子上也有波形输出,但是断电复位后有时有有时没有,很不稳定,也不知道哪个地方出现了问题,最后在网络上查找问题发现作为高级定时器功能比较多配置也比较麻烦,其他人碰到到问题也是五花八门,一整天的时间没有解决,晚上思来想去很可能某些寄存器没有配置或配置不正确导致了这种问题的出现。 最后找到结构体 TIM_OCInitStructure 某些成员变量没有设置,因为是高级定时器配置方面还是有别于普通定时器的,其中的: TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCNPolarity = TIM_OCNP
[单片机]
STM32如何高效接收串口数据?
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 DMA,直接内存存取,可以用它的双手释放CPU的灵魂,所以,本文通过USART3进行串口收发,接受使用DMA的方式,无需CPU进行干预,当接受完成之后,数据可以直接从内存的缓冲区读取,从而减少了CPU的压力。 具体的代码实现如下: usart_driver.h 封装了接口,数据接收回调函数类型,基本数据结构等; usart_driver.c 函数原型实现,中断服务函数实现等; 拷贝这两个文件即可,可以根据目录下的参考用例,进行初始化。 头文件usart_driver.h已经声明了外部函数可能用到的接口; USART3_DR的地
[单片机]
<font color='red'>STM32</font>如何高效接收串口数据?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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