基于STM32闭环张力控制系统设计

发布者:sjp5035022最新更新时间:2018-03-20 来源: eefocus关键字:STM32  闭环张力控制系统 手机看文章 扫描二维码
随时随地手机看文章

    张力控制系统广泛应用于印刷等轻工业领域中,在收取和放卷材料时,为保证生产的质量及效率,保持恒定的张力是很重要的。在印刷过程中或者是印刷完成之后,最后的一道工序一般就是将加工物卷绕成筒状。在这一过程中,卷绕的好坏将是决定产品质量的关键,卷得太紧,容易使材料变形、拉断,卷得太松又容易使材料不紧凑,不利于搬运和运输,因而为了达到使卷绕紧凑,保证产品的质量,都要求在卷绕过程中,在材料上建立一定的张力,并保持张力为恒定值。有时恒定的张力值与材料卷绕的直径必须保持对应关系,因为不同材料的柔韧度也各不相同,而当以固定张力卷绕比较柔的材料时,内层材料就会被外层压至变形。为了避免这种情况的发生,系统需要测量出卷绕材料的直径,实时控制材料受到的张力。
    随着印刷行业逐步结构化与系统化,对材料张力的控制有了越来越高的要求,由于印刷工艺流程各不相同,张力控制方法也就千差万别。目前应用的张力控制系统,根据其测量控制的原理结构,主要有以下3种:间接法张力控制系统;直接法张力控制系统;兼有间接法和直接法的复合张力控制系统。间接张力控制不需要安装张力传感器,降低了控制设备成本。然而间接张力控制只能满足一般的张力控制要求,在实际应用中达不到令人满意的精度;直接法张力控制虽然成本较高一些,但可以更为精确地完成控制过程,而且有极快的响应速度,这里采用的就是直接法张力控制。该系统设计是以STM32RTC6为主控芯片,运行时钟频率高达72 MHz。主控芯片集合了许多高性能外设资源,减少了相应电路的设计麻烦,正常工作电压为3.3 V,具有很强的功耗控制功能。

1 张力控制系统组成
    在印刷行业中,为了达到生产的要求,经常需要对一些带状的材料控制它们的张力,张力控制系统是一种由单片机或者一些嵌入式器件及外围电路开发而成的系统。首先直接设定要求控制的张力值,让张力传感器采集的信号(一般为毫伏级别)作为张力反馈值,比较两者的偏差后,经内部智能PID运算处理后,调节执行机构,自动控制材料的放卷、中间引导及收卷的张力,达到系统响应最快的目的。在特殊的情况下,用户也可以直接设定一定的输出量给执行机构(经常为磁粉的电流量)。图1为印刷机张力控制系统的基本环节。
1.1 张力的产生
    如图1所示,先分析左边材料放卷的情况,假设材料放出放卷轴的张力为T,其线速度为牵引辊的工作速度v1,放卷筒的线速度为v2,材料的横截面积为S,设材料的弹性模量为E,从牵引辊到放卷筒的长度为L,t=L/v1为材料由牵引轴传送到放卷筒的时间,根据胡克定律得:
    
    由此可知,若需控制张力,就必须控制牵引辊与放卷筒的速度差,可见张力控制系统实际上也是线速度跟踪系统。材料的张力在控制过程是一个积分环节。一般情况下,在设备启动时卷材的放卷速度是小于牵引轴的工作速度,以使材料中产生张力,当张力达到我们要求合适时,我们就稳定材料的放卷速度,这样,材料就可在此张力下稳定运行了。材料的收卷过程也与此类似。我们控制速度的执行机构为磁粉,放卷过程中,选用磁粉制动器,收卷过程中,则选用磁粉离合器。

a.JPG

  1.2 张力的测量

  由图1所示,张力的测量主要是通过张力传感器获得。为了准确测量材料的张力,材料必须以120的包角经过张力传感器上的滚轴。通过力的合成计算原理(平行四边形原则),张力传感器上的所受的力则为材料的张力与滚轴的重力之和。我们通过计算方法去掉滚轴的重力信号,而采集到的张力信号参与后面的控制过程。

  2 实现方案

  2.1 硬件设计方案


  市场上张力传感器,也叫压力传感器。根据测量的压力而反馈电压的量程范围,它有两种型号,分别叫应变式压力传感器和差动式压力传感器。应变式压力传感器的电压量程通常为0~13 mV,而差动式压力传感器的电压量程通常为0~150 mV。为了满足用户的不同选择,信号放大电路中必须要有两种放大倍数,使系统可以正常的运行。

  为了使采得的模拟电压可以比较精确的放大,放大电路必须有较高的性能。毫伏信号的放大,必须有较高的共模制比、较低的线性误差、低失调漂移增益等要求。一般的放大器都达不到这种要求,仪表放大器不仅具有以上较高的性能,而且它的闭环增益是由反相输入端与输出端之间连接的外部电阻决定。因此,这里采用了具有差分输入的单端输出的闭环增益仪表放大器件AD620AN。外接的闭环放大电阻则选精度为1%的两个电阻,以实现两种不用的放大倍数。然后用跳线帽开关选择合适的放大倍数。

  ST公司的STM32是目前最流行的控制芯片,它使用的是ARM最新及先进的Cortex_M3内核;在性能上,它不仅具有杰出的功耗控制功能,而且同时集成了多种有用外设,如:3个12位最高的1 MHz的ADC外设、两个12位DAC、从256 K至512 K字节的大容量程序存储器、64 K的SRAM等等;它的最高工作频率可以达到72 MHz。在程序的设计方面,ST公司提供了一套完善的固件库,将各个寄存器操作用函数封装起来,操作方式非常规范,程序设计较其他控制芯片也就相对容易。在STM32众多芯片型号中,STM32F103RCT6是最合适的一款,它不仅包含所有需求的外设,而且价格低廉。在张力控制过程中,实时采样放大的模拟电压量可以用12位高性能ADC转变成相应的数字量,从角速度检测器输入的数字信号通过光电隔离器耦合接入控制器。角速度检测器分为两种,一种叫接近开关,另一种叫编码开关,在滚轴转动的过程中,滚轴上的齿使得它们有高低电平的数字量变化,而达到测量的效果。为了方便用户操作,这里提供了良好的人机界面。首先,提供了按键与编码器的组合的输入方法;其次,用液晶显示实测张力和设定张力,同时,数码管还可以显示当前的输出百分比。

  在张力控制过程中,控制张力执行单元为磁粉,磁粉分为两种:一种叫磁粉离合器,另一种叫磁粉制动器,它们分别是用在卷材收卷和放卷的过程。磁粉通过万向联轴器与收卷筒和放卷筒相连,磁粉里填入的是微细铁磁粉末。在额定扭矩下,磁粉的特性公式Ma=K*If(K为常数,If为接入的激磁电流),由此可知,磁粉的扭矩与接入的激磁电流成线性关系。磁粉离合器有主动端和从动端,在没有激磁电流的情况下,从动端不随主动端转动,在通有一定的激磁电流时,里面的磁粉磁化,将主动端的扭矩按照一定的比率耦合到从动端。磁粉离合器只有一个输出轴,当没有接入激磁电流时,磁粉没有磁化,输出轴的扭矩很大,而接入了激磁电流后,磁粉离合器的输出轴就会有线性的扭矩输出。

  市场上经常用到的磁粉供电电压在24 V左右,满载电流可达4 A到6 A。这给恒流输出电路提高了难度。STM32控制输出的PWM波通过恒流模块的放大供给磁粉工作。这里就必须用到耐压36 V以上的场效应管,控制器输出的PWM波也必须经过一定的电压和电流的放大才有能力控制场效应管的开断。

  2.2 软件设计流程

  STM32芯片的软件编写,可以使用程序编写软件keil uvision4。keil uvision4不仅对Cortex_M3内核有很好的支持,而且配置和使用也较为方便,同时还包含有STM32的固件库函数。张力控制的软件是整个控制过程的灵魂,在合理的硬件电路上,它主宰着所有的控制流程。当芯片上电工作时,我们必须把系统时钟和一些需要用到的外设进行初始化。然后利用时间片轮转的方式实时地控制输入、输出和显示模块。

  系统初始化是为芯片可以正常的工作做准备。这里首先要初始化系统的时钟,把工作频率由8 M(外接8 M石英晶体)倍频到72 M,然后初始化内部FLASH的读写权限,最后使能总线上用到外设的时钟。使能外设定时器3,开启PWM功能。

  由图1可知,控制器要处理两个外部输入信号,一是测量角速度,我们可以通过测量滚轴旋转一周所花的时间得到。这里使能了外部中断和定时器2中断,当滚轴转动时,轴上面的齿会使角速度测量器反馈给控制器一个上升沿,在下一个上升沿来时,我们可以利用定时器2得到两次上升沿经过的时间,从而计算出滚轴的角速度。在给定了滚轴的直径后,可以进一步推算出滚轴的线速度;二是测量张力,正确利用STM32控制器的外设ADC,首先要把硬件对应接入的GPIO引脚配置成模拟输入模式。配置好ADC和DMA的工作模式,利用DMA功能把转变成的数字量搬到固定的寄存器里,方便之后的数学运算。

  在完成输入信号的读取后,控制器要对张力采样的信号进行数字滤波,然后与用户设定的张力值作比较,通过PID调节,控制输出PWM波。利用定时器2采集到的时间量结合用户设定的滚轴直径和材料厚度等参数可以推算出材料的长度。当收卷筒收到用户需求时,如果开启满料报警,就可以提醒用户更换卷筒了;同理,放卷时可以开启少料报警。当测量的ADC数字量很小时,若开启了零张力报警,可以提醒用户工作异常。


    程序在运行时,我们可以在FLASH里开辟一段存储空间,把用户设定好的参数保存在这里,每次开机时,就可以先从这段存储空间读取参数,这样系统就不仅可以准确运行,而且减少了很多设置麻烦。然而系统在运行时,也有可能会突然停电,这时必须可以保存卷径(收卷简或放卷简的直径),下次开机时卷径就不必从初始值计算。STM32带有可编程电压监测器,这里可以开启电压监测中断功能,这样就可以在掉电的瞬间利用片内空白FLASH储存当前卷径。下表1为张力控制过程中用户需设定的部分参数。

c.JPG

    
    从宏观上,程序设置了3层页面。最上一层是工作页面,系统在正常运行时,处于该页面;第二层是参数选择页面,用户在这里选择需要修改的参数;第三层就是参数修改页面,用户可利用编码器修改参数的大小,编码器旋转的快慢对应着设定值变化的快慢,用户也在这里对系统进行调零和定标。由于张力传感器测量的是滚轴的重量和卷料的张力总和,而调零则是先测量滚轴的重量;定标则是利用已知重量的法码挂在滚轴上得到的信号量,如此,就可以准确测量出卷料的张力。

3 张力控制过程
    如图2所示,张力的控制过程可以分为四个阶段:预备阶段,启动阶段,运行阶段,停机阶段。t0以前为预备阶段,t0到t1为启动阶段,t1到t2为运行阶段,t2到t3为停机阶段,t3时间过后系统又重新进入了预备阶段,而T0为用户设定张力。用户可以通过设置表中的参数完成控制过程,预备阶段可以说是等待阶段,用户此时要把卷料准备好,而系统有一定的预备输出预热磁粉。在满足启动条件时,系统就进入了启动阶段,这里有两种启动方法,一是电平启动,即用户可以用开关开启系统;二是速度启动,即当滚轴速度达到一定值时,系统自行进入启动阶段,用户按需求设定的启动输出使设备开始运转。经过启动时间,系统就进入运行阶段,此时STM32控制器进行PID调节自动跟踪,当所测张力调节到设定值时,输出基本保持稳定状态。当卷材收取或放出完毕后,若是电平启动,则可以关闭开关停机系统,若是速度启动,则当速度降为设定值时自动停机。停机时的停机增益是指运行阶段输出值的增加倍数。

d.JPG

    
    除了以上自动张力控制外,还有另一个控制方法,即可以人为给定输出值。人为给定输出值是只在特殊情况下才会用到。然而做作为输出的一种手段,也是必不可缺的功能。在张力控制过程中,也必须满足在手动和自动的切换过程中,不会对输出值有太大的变化,不然会至使卷料拉断或松弛,造成巨大的损失。

   4 结论
    基于STM32闭环张力控制系统可以精确的控制张力,在印刷等轻工业中有着非常广阔的前景。它不仅在信号的采集时有较高的精度,在控制过程中也有极强的稳定性和可靠性。在配置参数时也非常灵活,可以满足多种用户的需求。在精度要求高的张力控制系统中,值得推广应用。


关键字:STM32  闭环张力控制系统 引用地址:基于STM32闭环张力控制系统设计

上一篇:基STM32单片机的单线CAN总线隔离中继器设计
下一篇:Cortex--M0单片机二-十进制整数转换的快速算法

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

STM32 HAL库 硬件I2C 从机主机防BUG程序
前言 最近死磕了5天的STM32F1硬件I2C从机的程序,天天早上8点到凌晨,几乎全程心流状态。终于在结合各方资料及自己的思考后,做出了稳定的硬件I2C代码(这个文章中应该是目前为止能查到的最详述可用的硬件I2C代码),经过I2C主机发出的各种奇怪的信号蹂躏后,通讯都可以恢复正常,不会被卡死。证明该方案拥有极高稳定性。 需要注意我这次使用的是 STM32F103C8T6 的兼容型号 GD32F103C8T6 。要问他的兼容性有多强,连I2C bug都能做到一样,哈哈。我当初用GD想着硬件I2C应该能舒服用了,万万没想到,兆易连i2c 硬件BUG都复制了。 大家不要纠结于单片机的型号,我推测应该STM32FXXX 家族硬件I
[单片机]
<font color='red'>STM32</font> HAL库 硬件I2C 从机主机防BUG程序
STM32 在 MDK环境下 插入汇编
先在网上查有的说是__asm{NOP;},从intrins.h里调用,可犄角旮旯全找了,也没看到什么intrint.h的文件。如果直接用,就出现 error: #1113: Inline assembler not permitted when generating Thumb code 最后搜索这条错误,知道是因为__asm( 指令 );这种语法是内联汇编(inline assembly)的语法。而RMDK下,内联汇编仅支持ARM汇编语言,不支持Thumb或者Thumb-2汇编语言;但内嵌汇编器支持Thumb和Thumb-2。 __asm放到一个单独的子函数再被调用就没问题了 如下: __asm void nop(void)
[单片机]
stm32中pwm频率和占空比设置
对于72M频率来说,计算pwm频率是: 频率: //Fpwm = 72M / ((arr+1)*(psc+1))(单位:Hz) 占空比: //duty circle = TIM3- CCR1 / arr(单位:%) 这样每次改变频率和占空比都要手动算一下,非常不方便。 下面进行改进: //PWM输出初始化 //arr:自动重装值 //psc:时钟预分频数 void set_pwm1(u32 arr,u16 psc) { double T_ARR,DPwm_CCR2; T_ARR=(double)72000000/arr; DPwm_CCR2=(double)(T_ARR * psc)/1000
[单片机]
STM32 之 UART1(2)
(2)Init_External_Device.c C语言: Codee#14663 #include includes.h /******************************************************************************* == 全局变量 == *******************************************************************************/ //=== UART1_RX变量,TX变量 ======================================
[单片机]
STM32按键控制开关灯
1.按键操作的原理 1.在stm32f103rc中,存在三个按键(不包括复位),分别为key0(PC5),key1(PA15),wkup(PA0),按下key0和key1时对应的io口输出低电平,按下wkup对应io口输出高电平 2.所以可以采用库函数读取io口的电平,从而用不同的情况来控制灯的开闭 GPIO_ReadInputDataBit(GPIOX,GPIO_PIN_a)读取相应接口电平 #define KEY0 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5) #define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15) #defi
[单片机]
stm32时钟系统复习
1、参考资料 《STM32F1开发指南-库函数版本》-4.3小节 时钟系统 《STM32中文参考手册V10》-第六章 复位和时钟控制 RCC 2、时钟系统总结 1. STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。 ①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。  ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。   ③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。WDG   ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。RTC 
[单片机]
STM32按键总结(低电平有效及上升沿有效)
低电平有效的按键 #define KEY1 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_10)//读取按键0 #define KEY2 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)//读取按键1 #define KEY3 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)//读取按键2 #define KEY4 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_11)//读取按键3(WK_UP) #define KEY5 GPIO_ReadInputDataBit(GPIOC,GPIO_Pi
[单片机]
STM32 KEIL下的堆栈设置问题
刚接手 STM32 时,你只编写一个 int main() { while(1); } BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-data=1632 编译后,就会发现这么个程序已用了1600多的RAM,要是在51单片机上,会心疼死了,这1600多的RAM跑哪儿去了,分析map,你会发现是堆和栈占用的 在startup_stm32f10x_md.s文件中,它的前面几行就有以上定义,这下该明白了吧。 Stack_Size EQU 0x00000400 Heap_Size EQU 0x00000200 顺便记号,关注此帖:
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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