文档详情

Linux步进电机驱动的设计(完全教材).ppt

发布:2017-08-12约8.75千字共27页下载文档
文本预览下载声明
第11章 步进电机驱动的设计 本章重点 Linux设备驱动程序的结构。 步进电机驱动的设计。 步进电机驱动程序的调试。 本章内容 11.1 步进电机概述 11.2 嵌入式Linux步进电机的驱动 11.3 步进电机驱动的设计 11.1 步进电机概述 在步进电机的设计中硬件设计和软件编程2大部分。在硬件设计方面,需要根据其功能设计驱动电路原理图、进行PCB的制作、电路板制作,购买元器件和焊接。硬件环境的搭建是软件调试的基础,是本设计的重要组成部分之一。基于操作系统的驱动程序的设计,首先就要搭建软件平台环境,需要有交叉编译器的安装、Bootloader的配置和移植、内核的移植、根文件系统的制作几个步骤,然后进行驱动程序的设计和编译调试。通常将硬件驱动程序编写成一种可加载的内核模块并进行开发和配置,这样用户就可以将硬件驱动程序作为一种独立的系统进行升级而不必对内核进行改动。 11.1 步进电机概述 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 虽然步进电机已被广泛地应用,但步进电机并不能像普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 11.1 步进电机概述 EELIOD 系统的步进电机使用的是四相步进电机,采用的电机控制芯片是 Allegro 公司的UCN4202A,它包含低功率 CMOS 逻辑控制部分和达林顿管输出驱动极,最大输出电流为 1.5A,使用单相或双相,半步激励方式,内设续流二极管和过热保护电路。 UCN4202A 的控制功能包括 PWM 波输入,电机转动方向,输出使能和复位功能。OE 端使用GPIO53控制,为高时,电机没有输出;为低时UCN4202A 开始工作。DIC端为方向端,为低时为正向,为高时为反向。 UCN4202A 的逻辑控制有 ABCD 四个相位,在正向时,单相激励的顺序是A-B-C-D,两相激励的顺序是AB-BC-CD-DA,而半步激励的顺序是A-AB-B-BC-C-CD-D-DA。当为反向时,同理就是从D相开始。以下是步进电机的电路连接图 11.2 嵌入式Linux步进电机的驱动 11.2.1 步进电机设备驱动程序设计流程 基于操作系统的驱动程序调用过程如图11.2所示。 11.2 嵌入式Linux步进电机的驱动 编写模块程序的时候,必须提供两个函数,一个是int init_module(void), 供insmod在加载此模块的时候自动调用,负责进行设备驱动程序的初始化工作。 init_module函数返回0以表示初始化成功,返回负数表示失败。另一个函数是void cleanup_module (void),在模块被卸载时调用,负责进行设备驱动程序的清除工作。 在成功的向系统注册了设备驱动程序后(调用register_chrdev成功后), 就可以用mknod命令来把设备映射为一个特别文件,其它程序使用这个设备的时候,只要对此特别文件进行操作就行了。 在内核升级到2.4版本后,系统提供了两个新的函数devfs_register和devfs_unregister,用于设备的注册与卸载。 11.2 嵌入式Linux步进电机的驱动 当设备驱动程序以模块形式加载时,模块在调用insmod命令时被加载,此时的入口地址是init_module函数,在该函数中完成设备的注册。接着根据用户的实际需要,对相应设备进行读、写等操作,同样在执行命令rmmod时调用函数cleanup_module,完成设备的卸载。 字符设备驱动程序设计的主要过程如下: 1.结构体设计 2.步进电机驱动读、写函数的设计 3.步进电机驱动程序的注册 4.步进电机驱动程序的卸载 5.步进电机驱动程序设计 11.2 嵌入式Linux步进电机的驱动 11.2.2 步进电机驱动程序需求分析 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超负载的情况下.电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数.而不受负载变化的影响。所以在驱动程序中只需要考虑这两个方面的影响。 本系统的步进电机的四相由硬件地址0bit0-bit3控制,bit0对应MOTOR_A, bit1对应MOTOR_B, bit2对应MOTOR_C,bit3对应MOTOR_D。本节所描述的驱动是针对整MO
显示全部
相似文档