📄 a_control_system_based_on_arm_and_ucos-ii.txt
字号:
基于ARM和uC/OS-II的电液比例控制系统的设计
作者:蒙娟 所属分类: 自动化/计算机技术
所投刊社及刊社评语
《微计算机信息(嵌入式与SOC)》旬刊
摘要 摘要:针对传统电液比例控制系统的性能较差,本文提出了一种基于ARM和uC/OS-II的电液比例控制系统的设计,并详细介绍了以ARM内核微控制器LPC2292和电机驱动芯片LMD18200为核心的硬件电路,以及嵌入式操作系统μC/OS-II在ARM7上的实现。 关键词:ARM;电液比例控制;LMD18200;μC/OS-II
正文 字体大小:大 中 小
1引言
在现代工程机械中,电液比例控制系统具有控制精度高、安装使用灵活以及抗污染能力强等多方面优点,因此应用领域日益拓宽。传统的电液比例控制系统采用8位或 16位的单片机作为控制器,使用单任务顺序机制,系统的实时性、安全可靠性较差,运算处理和资源管理能力都很有限。本文采用Philips公司的 ARM7TDMI内核微处理器LPC2292作为控制器,电机专用芯片LMD18200作为PWM驱动器,μC/OS-II作为操作系统大大提高了系统的稳定性、可靠性和实时响应能力。
2系统工作原理
电液比例控制系统是根据输入电信号的大小按比例连续地控制液压系统的压力、流量或方向等参数【3】。通常,电液比例控制系统主要由操作手柄、控制器、PWM 驱动电路、比例电磁铁、电液比例阀以及执行机构等部分组成。在一般的工程机械场合,电液比例控制系统采用开环控制均能满足要求,只需采用电流闭环以稳定输出量。电液比例阀控制方式大多采用PWM技术进行控制,通过改变PWM信号的占空比来调整比例电磁铁的平均电流,以降低摩擦、减少电磁铁的滞环和死区现象,提高电液比例阀的响应速度。
3硬件电路设计
综合电液比例控制系统的功能需求,整个系统的控制电路包括外扩FLASH、SRAM、模拟量输入、数字量输入、键盘输入、PWM输出、LCD显示、数字量输出、CAN总线通信等 部分组成。其硬件电路框图如图1所示:
图1 电液比例控制系统硬件电路框图
3.1 LPC2292简介【2】
LPC2292是一款基于16/32位ARM7TDMI-S,支持实时仿真和跟踪的CPU,并带有256kB嵌入的高速Flash存储器和16KB的静态RAM。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大60MHZ的时钟速率下运行。LPC2292具有ISP和IAP功能,包括多个32位定时器、8路10位ADC、2路高级CAN通道、2个UART接口以及多达9个的外部中断。更重要的是,LPC2292带有6路PWM输出和高达112个GPIO口,使LPC2292成为电液比例控制系统控制器的首选。
3.2 系统存储器电路的设计
大多数的ARM 微处理器片内存储器的容量都不太大,需要用户在设计系统时外扩存储器。本文扩展了一片1M×16的CMOS多功能FLASH SST39VF160和一个512K×16的高速CMOS静态RAM IS61LV51216,用以缓冲数据和存贮程序。LPC2292带有外部存储器接口EMC模块,管脚地址输出线是A[23:0],其中地址位A[25:24]用于4个存储器组的译码(CS[3:0])。通过EMC可以扩展4个Bank寄存器组(Bank0-Bank3),每个寄存器空间大小为16M字节。为了方便程序的调试及最终代码的固化应用,使用了LPC2292的 Bank0和Bank1的地址空间,并通过跳线将片选信号CS0和CS1分别分配给SRAM和FLASH。在调试程序时,分配SRAM为Bank0地址,因为Bank0可以进行异常向量表的重新映射操作;在固化代码到FLASH时,分配FLASH为Bank0地址,因为Bank0可以用来引导程序运行。由于SST39VF160和IS61LV51216都是16位总线接口,所以使用LPC2292的地址总线A1-A20与它们相连。
3.3 LPC2292与LMD18200的连接
电液比例控制的核心是控制电液比例阀的电流,其驱动电流一般为1A左右,需要对LPC2292输出的PWM信号进行放大,还要设计电液比例阀的相关保护电路,以避免过流、欠压、短路、回流等现象。本系统中,采用美国国家半导体公司推出的直流电机驱动芯片LMD18200作为PWM驱动器,内部电路如图3所示。LMD18200具有很强的驱动能力,瞬间驱动电流可达6A,正常工作电流可达3A,还具备温度报警、过热与短路保护的功能。
LMD18200可提供双极性驱动方式或单极性驱动方式,本系统中的电液比例阀为单极性控制,故 LMD18200采用单极性方式。其控制信号由方向信号和幅值信号组成,幅值信号由PWM的占空比决定,方向信号由DIR的电平决定,零脉冲代表零电压。本文将LMD18200的DIR脚直接接地,实现LMD18200的单极性控制,将LPC2292的P0.7、P0.8、P0.9、P0.21配置为PWM输出,再经过光电隔离输出到LMD18200的PWM输入端,实现LMD18200的幅值控制。LMD18200的第8脚是电流取样信号,每输出1A电流,脚8输出377nA的取样电流,将这个信号反馈到LPC2292的模拟通道中,形成电流闭环回路,以加快电液比例阀的响应、启动和增强低频稳定性。同时在阀的输入端设计了续流二极管以保护电液比例阀。
图2 LMD18200内部电路
3.4 LCD显示模块
液晶显示模块采用320×240液晶显示模块SED1335,内嵌64K RAM,其特点是:有较强功能的I/O缓冲器;操作指令功能丰富;四位数据并行发送,最大驱动能力为640×256点阵;图形和文本方式混合显示等。 SED1335与ARM的接口采用直接访问方式。SED1335的数据线DB0-DB7与LPC2292的D0-D7相连,SED1335的A0、WR、RD分别与LPC2292的A0、WE、OE相连,SED1335的片选信号CS是经过LPC2292的CS3和A23-A21进行地址译码后选中。
3.5 其他模块
整个系统的电源来自车载的+24V,而系统需要提供的电源有:LPC2292的内核供电电源为1.8V,I/O口供电电源为3.3V,系统部分外设的供电电源为5V,这些都由+24V转化而来。系统还设计了CAN总线收发器,采用了TI公司的SN65HVD230,外围监控器件SP708和串行时钟芯片S3530等相关电路。
4软件设计
电液比例控制系统的软件设计包括μC/OS-II在ARM7上的移植和应用程序的编写。其开发环境采用的是ARM公司推出的ARM核微控制器集成开发工具 ADS1.2。ADS支持软件调试及JTAG硬件仿真调试,支持汇编、C、C++源程序,具有编译效率高、系统库功能强等特点【1】。
4.1 μC/OS-II简介【4】
μC/OS- II是基于优先级的抢占式实时多任务操作系统,是一个完整的、可移植、可固化、可裁减的多任务内核。绝大部分μC/OS-II的代码是用ANSI C语言编写,与硬件相关部分用汇编语言编写,可用于各类8位、16位和32位单片机或DSP等不同架构的微处理器。μC/OS-II可以管理64个任务,具有实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列)和内存管理等系统功能。至今,从8位到64位,μC/OS-II已在超过 40种不同架构的微处理器上运行。
4.2 μC/OS-II在ARM7上的移植
根据μC/OS-II的要求,移植μC/OS-II到ARM7TDMI上需要提供3个与处理器相关的文件【5】。
1, OS_CPU.H(C语言头文件)
OS_CPU.H 文件主要是定义与编译器无关的数据类型、堆栈类型、堆栈增长方向和SWI服务函数。在ARM7处理器中,用户任务可以使用两种处理器模式:用户模式和系统模式,各种方式对系统资源有不同的访问控制权限。为了使底层接口函数与处理器状态无关,同时不需要知道函数的位置,移植中要使用软中断指令SWI作为底层接口,使用不同的功能号区分不同的函数。
2,OS_CPU_C.C(C程序源文件)
OS_CPU_C.C文件中主要是任务堆栈初始化代码、软中断异常处理程序、开关中断、钩子函数和移植增加的特定函数。根据ARM内核的特点,增加了处理器模式转换函数和两个任务初始化指令集设置函数。它们都是通过SWI转换到系统模式,通过软件中断服务程序实现的。
3,OS_CPU_A.S(汇编程序源文件)
OS_CPU_A.S文件主要包括软件中断的汇编接口、任务级任务切换函数OS_TASK_SW和中断级任务切换函数OSIntCtxSw以及启动最高优先级就绪任务函数。
4,中断及时钟节拍
在本系统的移植中,只使用了ARM的IRQ中断。编写中断服务程序代码比较简单,关键在于把程序与芯片的相关中断源挂接,使芯片在产生相应的中断后会调用相应的处理程序。这需要做两方面的事:一是增加汇编接口的支持;二是初始化向量中断控制器。至于时钟节拍服务程序是通过在中断服务子程序中调用 OSTimeTick()实现的。不过,值得注意的是,用户必须在多任务系统启动以后再开启时钟节拍器,否则容易造成用户应用程序的崩溃。
4.3 应用程序的编写
根据电液比例控制系统所要实现的功能,并考虑到系统的实时性和可靠性,进行任务划分、创建任务并确定每个任务的优先级。按优先级高低顺序排列,并行存在以下七个任务:起始任务,监控任务,键盘扫描任务,模拟信号采集任务,PWM输出任务,液晶显示任务,通信任务。其中,起始任务包括启动时钟节拍,创建邮箱、消息量,初始化统计任务,创建其他任务等;监控任务检测数字式传感器输入的信号,比较是否属于危险操作,是否需要报警等;键盘扫描任务主要对键盘阵列进行处理,当检测到有键按下时进入该按键子程序;模拟信号采集任务主要是采集手柄信号并进行AD转换;PWM输出任务根据控制算法输出占空比可调的PWM 信号;液晶显示任务显示当前时间、系统状态和一些人机对话框;通信任务通过CAN总线实现前端单元和电液比例控制系统的信息交互,数据上传等。编写好这些任务的代码、相关的调用程序和中断服务程序后,启动操作系统应用程序就开始运行。软件流程图如图5所示:
图3 软件流程图
5结语
本文详细介绍了基于ARM和μC/OS-Ⅱ的电液比例控制系统的设计思路。采用ARM核LPC2292嵌入式微处理器,可以使系统小型化、功能集成度高、便于提高性能以及和各种外设的扩展。采用嵌入式实时操作系统μC/OS-Ⅱ,便于多任务的管理调度。经过实验表明,本系统具有精度高、可靠性好、运行稳定、实时性好、抗干扰能力强等特点,可以在多种工程机械领域中推广应用。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -