两相四线步进电机之欧阳学创编

上传人:无*** 文档编号:64793677 上传时间:2022-03-22 格式:DOC 页数:18 大小:73.50KB
返回 下载 相关 举报
两相四线步进电机之欧阳学创编_第1页
第1页 / 共18页
两相四线步进电机之欧阳学创编_第2页
第2页 / 共18页
两相四线步进电机之欧阳学创编_第3页
第3页 / 共18页
点击查看更多>>
资源描述
两相四线励石玆式步进电机工作原创作:欧阳学时间:2021.03. 03本章将介绍在嵌入式平台UP - NETARM2410-S中步进电机的实现。步进电机在各个领域诸如机器人、智能控制、工业控制等方 面都有着广泛的应用空间,本章着重介绍步进电机的工作原理及编程实现步进电机驱动的方法,主要内容如下:1步进电机的概述1步进电机的工作原理1和微处理器的总线连接方式1驱动程序的编程1 Linux下用软件的方法实现步进电机的脉冲分配,用软件的方法代替硬件的脉冲分配器1. 步进电机概述步进电机是一种能够将电脉冲信号转换成甬位移或线位移 的机电元件,它实际上是一种单相或多相同步电动机。单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。多相步进电动机有多相方波脉冲驱动,用途很广。使用多相步进电动机时,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电动机各相绕组。毎输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会转过 一定的甬度(称为步品巨甬)。正常情况下,步进电机转过的总玮度和输入的脉冲数成正 比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严 格的对应关系,不受电压波动和负载变化的影响。由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。1.1步进电机的特性步进电机转动使用的是脉冲信号,而脉冲是数字信号,这 恰是计算机所擅长处理的数据类型。从20世纪80年代开始开发出了专用的IC驱动电路,今天,在打印机、磁盘器等的OA装宣的位宣控制中,步进 电机都是不可缺少的组成部分之一。总体上说,步进电机有如下优点:1. 不需要反馈,控制简单。2. 与微机的连接、速度控制(启动、停止和反转)及驱动电路的设计比较简单。3. 没有玮累积误差。4. 停止时也可保持转距。5. 没有转向器等机械部分,不需要保养,故造价较低。6. 即使没有传感器,也能楙确定位。7. 根据给定的脉冲周期,能够以任意速度转动。但是,这种电机也有自身的缺点。8. 难以获得4交大的转矩9. 不宜用作高速转动10. 在体积童量方面没有优势,能源利用率低。11. 超过负载时会破坏同步,速工作时会发出振动和噪声。1.2步进电机的种类目前常用的步进电机有三类:1、反应式步进电动机(VR)。采用 高导磁材料构成齿状转子和定子,其结构简单,生产成本低,步品巨甬可以做的相 当小,但动态性能相对较差。2、永磁式步进电动机(PM) o转子采用多磁极的圆筒形的永磁铁,在其夕卜侧配置齿状定子。用 转子和定子之间的吸引和排斥力产生转动,转动步的玮度一般是7.50o它的出力大,动态性芳邑好;但步品巨甬一般比较大。3、混合步进电动机(HB)。这是PM 和VR的复合产品,其转子采用齿状的稀土永磁材料,定子则为齿状的突起结构。此类电机综合了反应式和永磁式两者的优点,步距甬小,出力大,动态性能好,是性能较好的一类步进电动机,在计算机相关的设备中多用此类电机。2、步进电机的工作原理现以反应式三相步进电机为例说明其工作原理。三相步进电机的定子铁丿上有六个形状相同的大齿,相邻 两个大齿之间的 夹甬为60度。每个大齿上都奈有一个线圈,径向相对的两个线圈串联起来成为一相绕组。各个大齿的内表面上又有若干个均匀分布的 小齿。转子是一个圆柱形铁心,夕卜表面上圆周方向均匀的布满了小齿。转子小齿的齿距是和定子相同的。设计时应使转子齿数能被二整除。但某一相绕组通电,而转子可自由旋转时,该相两个大齿下的各个小齿将 吸引相近的转子小齿,使电动机转动到转子小齿与该相定子小齿对齐的位置,而其它两相的各个大齿下的小齿必定和转子的小齿分别错开正负1/3的齿距,形成“齿错位,从而形成电磁引力使电动机连续的苔K_转动下去。和反应式步进电动机不同,永磁式步进电动机的绕组电流 要求正,反向流动,故马区动电路一般要做成双极性驱动。昆合式步进电动机的绕组电流也要求正,反向流动,故驱动电路通常也要做成双极性。2.1、步进电机的励磁方式步进电机有2相、4相和5相电机。在4相电机中有4组线圏,若电流按顺序通过线圈则使电机产生转动。2相电机中有2组线圈。从图9.3可以发现,在各线圏中引出中间端子,因此若以中间端子为基准即可实 现4相,称这4为A、B、C、D的励磁相。本实验使用的就是这种方式的4相电 机,而励石玆方式中有1相(单向)励磁、2相(双向)励磁和1一2相(单-双向)励磁方式o此夕卜,如果转动的方向不正确,可以交替1、2端子或3、4号端子(1). 1相励磁方式按ABCD的顺序总是仅有一个励磁相有电流通过,因此,对应1个脉冲信号电机只会转动一步,这T吏电机只育邑产生很小的转矩并会产生振动,故很少使用oABCDTl 1 000T2 0 1 0 0T3 0 0 1 0T4 0 0 0 1图2.T1-T4表示脉冲周期;ABCD表示电机的各相,1表示此时有一*脉冲,0表示没有(2) . 2相励磁方式按AB、BC、CD、DA的方式总是只有2相励磁,通过的电流是1相励磁时通过电流的2倍,转矩也是1相励石玆的2倍。此时电机的振动较小且应答频率升高,目前仍广泛使用此种方式。ABCDT1 1 1 00T2 0 1 1 0T3 00 1 1T4 1 0 0 1图3.T1-T4农示脉冲周期;ABCD表示电机的各相,1表示此时有一个脉冲,0表示没有脉冲(3) . 1-2相励磁方式即实验中所有的励磁方式,它按A、AB、B、BC、C、CD、D、DA的顺序交替进行线圈的励磁。与前述的2个线圈励磁方式相比,电机的转速是原来的1/2,应答频率范围变为原来的2倍。转子以滑动的方 式转动。ABCDTl 1 000T2 1 1 0 0T3 0 1 0 0T4 0 1 1 0T5 0 0 1 0T6 00 1 1T7 0 0 0 1T8 1 0 0 1图4.T1-T8表示脉冲周期;ABCD表示电机的各相,1表示此时有一个脉冲,0表示没有脉冲3. 与微处理器的连接方式步进电机并不是直接与CPU相连的。由于开发板上外部设备很多,各功能模块与微处理器的连接方式有专用线路,局部总线与扩展总 线。3.1局部总线与扩展总线局部总线与微处理器直接相连,扩展总线通过一个总线控制器74LVCH6245与局部总线相连。从CPU 出来的数据、地址、读写控制等信号构成局部总 线。NANDFLASH、SDRAM和网卡芯片AX88796直接挂在局部总线 上的。局部总线经过四片74LVCH16245驱动后作为扩展总线弓I到其他外设 以及168Pin扩展槽。由于数据线是双向的,所以16245芯片必须有方向控 制信号,这里采用经过隔离后的写控制信号OE作为数据线所在16245芯片的方向控制线。当OE有效时16245芯片把扩展总线上的数据传输到局部总线上;当OE无效时反之。另夕卜,必须注意,当系统对局部总线上的芯片读数据 时OE 样会起作用,这样就必须对局部总线和扩展总线进行总线仲裁,这里是外设所具有的四个片选信号nGCSl、3、4、5用74HC21相与后作为数据线所在的16245芯片的输出使能控制线,只有当系统对扩展总线读操作,也就是上述四个片选之一有效时,16245才能对局部总线输出数据,否则无论OE如何都呈现高 阻态O如下图:注:LDATA表示局部总线的数据线;DATA表示扩展总线 的数据线。74LVCH16425芯片共有四块,限于篇幅仅举一片为例,其它三片芯片,一片用于数据线的低位连接,两片用于地址线的连接。注:由于片选线使用的负逻辑电平有效,所有此处用的是 与门3.2 芯片 74HC573扩展总线连接在芯片74HC573上,扩展总线的DATAO-DATA7分别接在74HC573的八个数据输入端上。74HC573芯片是由8个三 态门组成的寄存器,它起到暂时保存信电和隔离,皂线的作用。芯片的输出IO0IO3用于DA数模转换,IO4IO7用于步进电机的控制。描述:这个芯片采用的是八进位的D鬲虫发器,它可以驱动电容式或电阻式的负载。因此它特别适合应用于缓冲寄存器、IO端口、双向的总线控制器、和操作 寄存器。当寄存器的使能端(LE)为高电平时,Q输出端和 D输入端一一对应;当LE为低电平时,输出端管脚Q输出的是寄存器中已披设定的值。当一个能开启缓冲功能的负逻辑管脚(OE)为0时,无论是在正常逻辑状态还是在高阻抗状态下,都芳邑放遂八位的输出数据。在高阻抗状态下。输出并没有负载或者进行控制总线。高阻态和改进的总线驱动可以在不拉起元件的 情况下控制总线传输。OE端并不影响寄存器内部的操作。当输出端呈高阻状态时旧的数据可以被保存或者新 的数据进行输入。3.3步进电机模块的驱动电路74HC573芯片的输出IO4IO7用于用来驱动步进电机的转动。数据线要首先接在步进电机模块的一个接口上。接口对信号进行放大,使之育巨够驱动步进电机。放大后的信号就可以直接的来使步进电路进行工作了 3.4、开发板中的步进电机本开发板中T吏用的步进电机为四相步进电机。转子小齿数为64。系统中釆用四路I/O 进行并行控制,ARM 控制器直接发出多相脉冲信号,在通过功率放大后,进入步进电机的各相绕组。这样就不再需要脉冲分配器。脉冲分酉己器的 功育邑可以 由纯软件的方法实现如上图所示。四相步品巨电机的控制方法有四相单四拍,四相单、双八拍弄口四相双四扌白三种控制方式。步距甬的计算公式为:Ob = 3600 / mCk其中:m为相数,控制方法是四相单四拍和四相双四拍时C为1,控制方法是四相单、双八拍时C为2, Zk为转子小齿数。本系统中采用的是四相单、双八拍控制方法,所以步距甬为3607512o但步进电机经过一个1/8的减速器引出,实际的步品巨甬应为 360。/512/8。开发平台中使用EXI/O 的高四位控制四相步进电机的四个相。按照四相单、双八拍控制 方法,电机正转时的控制顺序为A-ABB-BC-C-CD-D-DAO EXI/O的高四位的值参见下表:十六进制二进制通电状态1H0001 A3H 0011 AB2H 0010 B6H0110BC4H0100CCH 1100 CD8H 1000 D9H 1001 DA表5.电机正转时,EXIO的高四位的值反转时,只要将控制信号按相反的为页序给出即可。可以通 过宏SETEXIOBITMASK(bit,mask) (EXIO.h)来设宣扩展I/O口,其中mask参数为0xf0o本实验使作的是1 - 2相励磁方式,还可以使用1相励磁方式和2相励磁方式。火1相励磁方式的顺序是ABCD,因此只要设宣数组char stepdata=Ox 10,0x20,0x40,0x80即可火2相励磁方式的顺序是AB, BC, CD, DA,因此只要设宣数组char stepdata= 0x30,0x60,OxcO,0x90即可火要实现电机的反转,只需将上面数组的值按相反的页序須E列即可4、驱动程序的编程驱动程序采用C语言进行编程,下面是驱动程序中几个證要的函数。static intdo_stepmotor_run(char phase) 通过调用这个函数使步进电机转起来unsigned intbak; 变量bak用于存放从寄存器中读出的值bak = readw(s3c2410_exio_base); 调用内核函数将基地址为s3c2410_exio_base 寄存器的值读出并放在bak中DPRINTK_STEP(ns3c2410_exio_base content is %xnH, bak);调试输出语句tiny_delay(5); 延时函数, 有延时功能 bitops_mask_bit(phase, OxfO, &bak);清除4 - 8位然后再设宣phase传进来的位(也是4 - 8位)DPRINTK_STEP(s3c2410_exio_base content is%xnH, bak);调试输出语句tiny_delay(5);writew(bak, s3c2410_exio_base); 调用内核函数将bak的值写入相应的寄存器中bak = readw(s3c2410_exio_base); 再次将寄存器的值读出DPRINTK_STEP(s3c2410_exio_base content is %xn bak);利用调试语句再次将修改后的寄存器中的值输出,以验 证其正确性 tiny_delay(5);DPRINTK_STEP(” n”);return 0;驱动程序主要通过上面这个函数来T吏步进,电机转动。控制电机的是一个寄存器(地址是s3c2410_exio_base=0x08000100),只要给它 适当的值电机就可以运动起来。这个函数通过传递变量phase从应用程序获得数据。然后使用函数readw()把寄存器的值就读出并送给bak;通过函数bitops_mask_bit()修改bak的值;最后由writew()写回到寄存器中。5、应用程序的编程1、步进电机模块步进电机模块和DA模块是使用Bankl地址空间扩展出来的IO口。共同使用驱动s3c2410-exio.oo在驱动程序中,与步进,电机相关的主要在函数s3c2410_exio_ioctl:2、对应的应用源程序#include #include #include #include #define STEPMOTOR_IOCTRL_PHASE 0x13staticintstep_fd = 1;char *STEP_DEV=,7dev/exio/0raw*; 定义一* 指针指向步进电机的驱动 程序/* a, AB, B, BC, C CD, D, DA */charstepdata= Ox 10,0x30,0x20,0x60,0x40,OxcO,0x80,0x90;各个相位对应的值void Delay(int t) /延时函数 inti;for(;t0;t)for(i=0;i400;i+);/ 匕卜匕匕上匕匕立匕匕卜上匕匕!rw*int main(intargc, char *argv)int i = 0;if(step_fd=open(STEP_DEV, O_WRONLY)0) printf(nError opening /dev/exio/Oraw devicenn); return 1;/火扌丁开设备的驱动程序,由于LINUX把所有的设备都模拟成 文件。step_fd=open(STEP_DEV,0_WRONLY)实际调用的函数为:staticint s3c2410_exio_open(structinode *inode, struct file*filp)驱动程序中的设备打开程序火/for (;) for (i=0; isizeof(stepdata)/sizeof(stepdata0); i+) ioctl(step_fd, STEPMOTOR_IOCTRL_PHASE, stepdatai);/火程序进入一个死循环,这样可以(吏电机在没有人为停止 的状况下,一直的转动下去。火第二层for语句循环一次即电机转动一周。函数ioctl () 对应函数火s3c2410_exio_ioctl ()火而这个函数最终将调用函数do_stepmotor_run(char)arg);使步进电机转动起来。火/printf(nDelay(100)nM);Delay(lOO);close(step_fd); 程序结束时关闭设备 printf(nStep motor start running!nH); return 0;时间:2021.03. 03创作:欧阳学
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!