APP下载

ARM技术在步进电机控制系统中的设计研究①

2019-02-15

关键词:堆栈处理器芯片

董 莹

(青海民族大学, 青海 西宁 810007)

0 引 言

ARM处理器以其体积小、低耗能、成本低、性能高等优势广泛占领了在嵌入式系统领域。μC/OS-II 提供了如邮箱、队列、信号量、固定大小的内存分区等多项系统服务并在医疗设备领域、发动机控制领域、网络设备领域、自动提款机设置领域及工业机器人设计领域等诸多生活以及工业领域获得了广泛的应用。王燕东等人(2016)提出了三路步进电机控制系统的设计思路,在提高基础系统的实用性以及后期拓展功能的前提之下,完善了系统的实时性,提高了系统的可控性以及稳定性[1]。常博博等人(2017)介绍了控制系统的发展历程,针对不同的控制对象,将ARM技术应用于不同控制系统中,并提出了SoC功能的控制系统实际工作情况,并对芯片处理器的优势做出简单介绍[2]。张金玲等人(2017)将ARM技术应用于传感器控制系统中,设计了无刷直流电机控制系统,从而完成了控制系统实际运行过程中对于机器的转速以及电流调控[3]。综上所示,目前ARM技术在步进电机控制中的设计研究目前处于空白状态,笔者主要研究ARM处理器及其编程模型,及嵌入式实时操作系统μC/OS-II的内核结构,实现μC/OS-II在ARM上的移植,并在此平台上进行步进电机控制程序设计,控制步进电机启停、正反转及加减速。

1 μC/OS-II在ARM上的移植

1.1 OS_CPU.h的项目移植

μC/OS-II在应用于某一类特定处理器时的移植工作将工作重点设置在多任务切换上,这是由于计算机设备的读写寄存器是不能采用C语言完成代码保存与恢复工作的,也有一部分计算机处理系统只允许利用特定的处理器汇编语言来恢复处理器现场,在这两类情况发生时,需要采取μC/OS-II移植到ARM处理器的方式来解决问题,这一处理方式只需要修改三个与体系结构相关的数据文件即可达到效果。数据文件是来定义堆栈单位的,步进定义了需要保护以及恢复的数据类型,还提出了文件需要与寄存器长度一致的要求。处理器的堆栈增长方式有两种:从上向下和从下向上。此处选择1表示从上向下增长(高地址到低地址),反之0表示从下向上增长。

1.2 OS_CPU.c的项目移植

OS_CPU.c的项目移植工作由三个工作步骤组成,第一步需要完成任务堆栈初始化,这一步主要是通过调用OSTaskCreate()或OSTaskCreateExt()这两个具体函数来完成。第二部需要利用ARM体系结构,保存任务堆栈空间的初始化数据。第三步,在初始化工作结束后,需要将OSTaskStkInit()函数撤回到新的堆栈任务中,并完成任务的保存。OSTaskStkInit()初始化后的堆栈内容如图1所示。

图1 OSTaskStkInit()初始化后的堆栈内容关系

1.3 OS_CPU_A.s的项目移植

OS_CPU_A.s的项目移植共分为以下几步:首先需要确定时钟节拍中断服务函数,这一函数主要是用来确定系统的额外开销工作的,时钟节拍率与系统的额外开销呈正比关系。本次测试所设计的系统采用S3C2410的timer 0作为时钟节拍源。其次,需要进行OSTimeTick()函数的调用,如果在系统工作的过程中有优先级更高的任务插入,则需要中断嵌套的最后一层。最后需要退出临界区域,而宏ARMDisableInt需要在系统进入临界状态之前关闭中断状态,在系统退出临界区时重新恢复中断状态。

2 实验结果讨论

2.1 驱动电路设计评价

设计选用二相四拍步进电机系统,通过使用控制换相顺序的方式来完成对步进电机的控制,由于所使用的S3C2410 的GPIO驱动能力有限,所以使用ULN2003达林顿集成驱动芯片来驱动步进电机。ULN2003是高耐压、大电流、内部由七个硅NPN达林顿管组成的驱动芯片,其每一对达林顿都串联一个2.7KΩ的基极电阻。驱动系统要求信号必须为脉冲信号,没有脉冲的时候,步进电机静止,如果加入适当的脉冲信号,驱动系统就会以一定的角度转动,系统的转动速度与释放的脉冲的频率呈正比。ULN2003内部结构图如图2所示。

图2 ULN2003内部结构图

ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出等控制电路中,可直接驱动继电器等负载。ULN2003芯片内部结构及引脚如图3所示。系统中的步进电机的四相(实际工作模式为二相四拍)由0x28000006的bit0~bit3控制,bit0对应于MOTOR_A,bit1对应于MOTOR_B,bit2对应于MOTOR_C,bit3对应于MOTOR_D。通过编制脉冲分配控制步进电机。

图3 ULN2003芯片引脚

2.2 控制程序设计评价

系统在μC/OS-II平台上,设计步进电机的控制程序,能够控制步进电机转动和停止、电机正反转和电机转速。

1)步进电机使能控制函数,启动或停止步进电机运行。其参数可以为STEP_ MOTOR_ ENABLE或STEP_MOTOR_DISABLE。

2)步进电机正反转实现。系统中使用的步进电机工作模式为二相四拍。采用整步模式,该模式下的步距角为1.8°,正转相序为:0101-1001-1010-0110-0101,则反转相序就为:0101-0110-1010-1001-0101。

3)步进电机转速控制。设置步进电机转速,单位为每步l0ms,值越小,速度越快。

由主函数Main()建立两个任务TaskSTEP和TaskSEG,优先级分别为5和13。从串口打印输出任务运行的信息。TaskSTEP任务输出提示信息,控制步进电机的起停、正反转和加减速。TaskSEG任务输出程序运行时的信息,同时控制数码管。系统主函数Main,用来实现目标板的初始化,操作系统的初始化,建立任务等,OSStart()函数是操作系统启动函数,该函数永远不会返回,在调用OSStart()之前必须先调用OSInit()函数。高优先级的函数TaskSTEP(),用来启动时钟节拍定时器,开始多任务调度,从串口打印输出任务运行的信息,初始化步进电机,开始启动步进电机,根据按键来控制步进电机转动和停止、电机正反转和电机转速。

3 结 论

为实现嵌入式实时操作系统μC/OS-II的移植,通过修改三个和体系结构相关的文件,使得μC/OS-II成功移植到μC/OS-II到S3C2410处理器上。在研究中,通过对ARM及S3C2410处理器、系统硬件模块、系统硬件资源分配以及步进电机的研究,完成硬件系统的设计。完成了步进电机,扫描键盘电路的设计。软件部分,完成了电机模块、键盘模块、数码管模块功能实现的程序设计。这样移植就成功了,并控制步进电机启停、正反转以及加减速,完成了步进电机控制系统设计。

猜你喜欢

堆栈处理器芯片
基于行为监测的嵌入式操作系统堆栈溢出测试*
芯片会议
人体微芯片
关于射频前端芯片研发与管理模式的思考
基于堆栈自编码降维的武器装备体系效能预测
ADI推出新一代SigmaDSP处理器
一种用于分析MCS-51目标码堆栈深度的方法
火线热讯
基于堆栈的24点游戏解决方案
AItera推出Nios II系列软核处理器