开环控制系统主要由中央控制器、驱动器、传感器以及步进电机四大部分组成。本系统采用ARM920t内核的S3C244 0A微处理器作为控制系统的中央控制器,该芯片主频MHz,可达到533MHz,内含多种设接口,存储器使用64MB的Nand Flash和64MB的SDRAM。图1所示为控制系统框图。
本系统主要控制两个两相混合式步进电机,分别代表X轴和Y轴带动传能光纤进行激光雕刻。系统采用8路I/O口进行脉冲输出,每4路接一个步进电机驱动器,通过功率放大后,进入步进电机的各项绕组。电机有半步、整步两种工作模式,整步模式的步距角为1.8,半步模式的步距角为0.9,整步一周共200步。如:半步模式的两步进电机正转脉冲为{0x11,两相步进电机0x33,0x22,0x66,0x44,Oxcc,0x88,0x99};整步模式为{0x11,0x22,0x44,0x88,0x11,0x22,0x44,0x88},一个步进电机运作时,只对脉冲时序的高或低4位操作,另外4位为0。而改变脉冲的顺序,即可改变转动方向。在整个控制系统中,数据处理在Linux应用程序中完成,步进量传递给Linux驱动程序后,由驱动程序完成脉冲输出。通过软件来完成脉冲分配,可根据应用系统的需要,随时改变对步进电机的控制。
Linux操作系统将所有的设(而不仅是存储器里的文件)都看成文件,两相步进电机以操作文件的方式访问设。应用程序不能直接操作硬件,而是使用统一的接口函数调用硬件驱动程序。设驱动程序是操作系统内核和硬件之间的接口。Linux设驱动与内核接口可分为三大方面:a.与系统启动代码的接口对设进行初始化;b.与内核接口通过数据结构file.operrations来完成;c.与设的接口对设进行读写操作。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。而脉冲信号的频率和脉冲数是控制电机的两个重要方面。本系统步进电机4路脉冲输出由硬件地址0x28000006的bit0~bit3控制,bit0对应MOTOR A+,bit1对应MOTOR B+,bit2对应MOTOR_A-,bit3对应MOTOR_B-。这里针对整步模式下的步进电机进行脉冲分配信号,半步模式的步进电机正转导电状态时的控制顺序为A+_A+B+_B+_B+A-_A-_一A-B-_B-,整步模式的步进电机正转导电状态时的控制顺序为A+_B+_A-_B-。
因此在程序中需要通过编制脉冲分配信号来控制步进电机,并通过修改脉冲分配信号来实现对步进电机方向的控制。图2是用软件形成环形脉冲的流程图。
系统中的步进电机只响应应用程序传送给驱动的步进量和部分参数,只能顺序地进行控制操作,因此它可作为字符设来进行驱动。在驱动程序中,需要提供几个操作函数的入口点,分别为open、read、write、ioet1等。而ioct1函数尤为重要,系统通过调用这个函数可以控制步进电机的转动。
利用应用程序传递给stepper ioct1的参数arg来判断转动方向。编写ioctl函数用来接收应用程序对于步进电机的控制。以下是部分驱动程序代码:
设卸载与前面提到的设注册是相反的过程。当从系统中卸载一个模块时,主设号要得到释放。这一操作可以调用以下函数进行模块清除:
首先,编译步进电机模块,打开内核中drivers/char/Konfig文件,两相步进电机添加如下语句:
后,回到内核源代码根目录位置,执行make modules,就可生成系统所需要的内核模块文件stepper module.ko了。至此,完成了步进电机模块驱动的编译。之后,便可使用insmod、rmmod命令分别对模块进行加载、卸载了。
本文归纳了驱动程序开发的一般流程,并结合步进电机的驱动阐述了驱动程序的编写。与原有通过操作PC机来控制步进电机相比,本文是在Linux操作系统支持MMU的情况下完成了对步进电机的控制。
以上信息由无锡惠斯通电机科技有限公司整理编辑,了解更多步进电机,两相步进电机,混合式步进电机信息请访问http://www.huistong.com