步进电机驱动模块设计
S和STM32的智能步进电机驱动控制模块设计

论文作者签名: 指导教师签名:
日期: 日期:
年 年
月 月
日 日
杭州电子科技大学硕士学位论文
基于 CAN-BUS 和 STM32 的智能步进电机 驱动控制模块设计
研 究 生: 马丹丹 指导教师: 张文超 教授
2013 年 2 月
Dissertation Submitted to Hangzhou Dianzi University for the Degree of Master
I
杭州电子科技大学硕士学位论文
ABSTRACT
The stepper motor with open-loop control, no accumulated error, accurate positioning, plays an important role in the automation and control systems. Instrument with a precision positioning system, the stepper motor is increasingly showing its excellent features. With the development of the national economy, the multi-stepper motor drive control system is the current mainstream applications, while a system of machine performance is closely related to the quality of its pros and cons of the drive control architecture mode. Therefore, it is very necessary to research and explore multiple stepper motor application architecture. The traditional control of stepper motor driver architecture adopts centralized concurrency control mode, there is a lack of real - time and poor , new stepper motor application architecture is proposed for the status quo - serial distributed control architecture . The text distributed intelligent stepper motor drive control system design based on the STM32 series chip and CAN bus , serial distributed control architecture with outstanding reliability , flexibility , real-time , compared with the traditional centralized parallel control architecture . This paper has carried on the related to stepper motor, and combined with subdivided driving technology, for instruments and meters, etc of stepper motor applications, designed a distributed intelligent drive control system. Mainly includes the upper machine under the control management interface to write, a main node, the child node hardware design and the realization of CAN communication. Lower machine through the RS232 serial port and PC communications, as research is convenient, PC is adopted to be as the superior machine. On the PC side, the control software programmed in LabWindows/CVI, can be used to control the operation of the various nodes,set run or stop、forward or inversion、the steps、subdivided level,etc. Lower machine each node can communication through CAN bus in a timely manner, and each node has the intelligence, the master node send only a command, a specific control can be performed by independent child nodes. Each node of main controller adopts the high performance and low power consumption STM32F103ZET6 chip, child nodes motor driver module selects the THB7128 high subdivision for two phase hybrid stepping motor driver chip, subdivided level can up to 128, the system will become perfect with the improve of stepper motor positioning accuracy. The system has over current protection, short circuit protection, and other functions. The purpose of this article is to develop a set of superior performance, easy operation, simple structure, good commonality distributed intelligent stepper motor drive control module.
步进电机驱动控制系统设计(有程序)

步进电机驱动控制系统设计(有程序)⽬录⼀前⾔ (1)⼆总体⽅案设计 (1)1⼯作原理 (1)2⽅案选择 (1)2.1时钟脉冲 (1)2.2脉冲分配器 (1)2.3驱动器 (1)3 总的框架 (2)三单元模块设计 (2)1单⽚机模块 (2)1.1复位控制 (3)1.2单⽚机频率 (3)2接⼝ (3)3驱动器ULN2003 (4)4按键模块 (5)5步进电机 (5)5.1⼯作原理 (5)5.2 28BYJ48型四相⼋拍 (7)四整机调试与技术指标测量 (8)五设计总结 (8)参考⽂献 (9)附录1电路原理图 (10)附录2 源程序 (11)⼀、前⾔步进电动机是⼀种将电脉冲信号转换成机械位移的机电执⾏元件,是机电⼀体化的关键产品之⼀, ⼴泛应⽤在各种⾃动化控制系统中。
随着微电⼦和计算机技术的发展,步进电机的需求量与⽇俱增,在各个国民经济领域都有应⽤。
⼆、总体⽅案设计1、⼯作原理步进电机是⼀种将电脉冲转化为⾓位移的执⾏机构。
通俗⼀点讲:当步进驱动器接收到⼀个脉冲信号,它就驱动步进电机按设定的⽅向转动⼀个固定的⾓度(及步进⾓)。
您可以通过控制脉冲个数来控制⾓位移量,从⽽达到准确定位的⽬的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从⽽达到调速的⽬的。
2、⽅案选择(1)时钟脉冲通常有两种⽅法实现:⽅案⼀直接有硬件组成如:多谐振荡器 LC 等。
⽅案⼆⽤软件的⽅式形成优点便于随时更改,调整。
为了⽅便我们选⽤软件⽅式有单⽚机实现。
(2)脉冲分配器⽅案⼀硬件环形分配器:由计数器等数字电路组成的。
有较好的响应速度,且具有直观、维护⽅便等优点。
⽅案⼆软件环分:由计算机接⼝电路和相应的软件组成的。
受到微型计算机运算速度的限制,有时难以满⾜⾼速实时控制的要求。
由软件完成脉冲分配⼯作,不仅使线路简化,成本下降,⽽且可根据应⽤系统的需要,灵活地改变步进电机的控制⽅案。
考虑到硬件设备的有限和对步进电机的控制我们选择软件环分可以有单⽚机实现。
基于AT90CAN128步进电机控制驱动系统模块设计

片 机 供 电 , 强 电 给 步 进 电 机 驱 动 供 电 , 且 两 电源 不 共 地 。
4 系 统 程 序 设 计
主 程 序 设 计 流 程 图 如 图 3所 示 。 程 序
在 初 始 化 时 , 由 于 本 系 统 定 时 器 设 置 成 比 较 匹 配 清 0模 式 , 所 以 初 始 化 时 需 要 把 两 台 电 机 发 出 脉 冲 CP对 应 的 端 口 B 和 端 口 E 的 OC1 口 和 OC3 口设 置 成 0 否 则 无 法 A A , 产 生 触 发 脉 冲 。 状 态 信 号 P0S1 ,POS 2和
・
数 字技 术 ・
系统 内可编 程 FL H,4 E P l 和 4 AS K E ROM K
S RAM ,5 3个 通 用 I O 口 ,4个 具 有 比 较 模 / 式 的 定 时 器 /计 数 器 , 1 8通 道 1 个 0位 A/ D 转 化 器 , 1个 可 编 程 看 门 狗 定 时 器 , 1个 JTA 测 试 接 口 等 。 运 动 控 制 中 由 G AT9 CAN 1 片 机 发 出 脉 冲 信 号 CP, 0 8单 2
是脉 冲 分 配 器 。L 9 2 7还 设 有 两 个 PW M 斩 波 器 来 控 制 线 绕 组 电 流 , 实 现 恒 流 斩 波 控 制 , 以获 得 良好 的 转 矩频 率 特 性 。 可 有半 部 , 整 部 和 波 状 三 种 驱 动 模 式 。 H/F悬 空 表 示 整 部 工 作 方 式 。 该 器 件 的 一 个 显 著 特 点 是 仅 需 要 脉 冲 CP,方 向 DI 以 及 启 / 停 R 状态 P 0S信 号 , 步 进 电 机 所 需 相 位 由 电 路 内 部 产 生 , 大 大 减 轻 了 CPU 的 负 担 。 接 线 时 启 /停状 态 P OS接 L 9 2 7的 e a l n b e管 脚 。 L9 2 7的 基 准 电 压 输 入 端 r f 用 于 确 定 电 机 e
基于MCU控制的步进电机驱动器设计

1.1 步进电机的概述....................................................................................................1 1.2 步进电机的驱动技术及发展................................................................................2 1.2.1 步进电机驱动技术.......................................................................................2 1.2.2 步进电机的驱动软件技术...........................................................................3 1.3 步进电机的细分驱动技术......................................................................................3 第二章 基于单片机的二相步进电机细分驱动系统........................................................5 2.1.1 混合式式步进电机的特点...........................................................................5 2.1.2 混合式步进电机的基本工作原理...............................................................6 2.2 C8051F020 单片机..................................................................................................7 2.2.1 C8051F020 功能特点...................................................................................7 2.2.2 单片机最小系统介绍..................................................................................8 2.3 L297/L298 功能介绍............................................................................................12 2.4 步进电机的细分及其电流最佳设计.................................................................13 2.4.1 细分原理..................................................................................................13 2.4.2 步进电机电流的非线性设计....................................................................15 第三章 硬件设计................................................................................................................16 3.1 硬件电路的具体应用............................................................................................16 3.1.1 C8051F020 功能模块.................................................................................16 3.1.2 L297/L298 电路设计.................................................................................17 3.2 控制电路................................................................................................................19 3.2.1 键盘输入....................................................................................................19 3.2.2 串行通信接口............................................................................................20 第四章 步进电机驱动电路软件设计................................................................................21 4.1 驱动器个程序模块开发.......................................................................................21 4.1.1 4.1.2 4.1.3 4.1.4 主程序设计................................................................................................21 定时器中断服务程序................................................................................22 按键输入及控制程序................................................................................23 串口通信程序............................................................................................24 2.1 步进电机的结构特点与工作原理..........................................................................5
步进电机驱动系统设计报告

步进电机驱动系统设计报告1. 引言步进电机是一种常用的控制设备,它能够以离散的步进角度旋转,并且能够保持稳定位置。
本报告旨在介绍我们设计的步进电机驱动系统,包括硬件设计、软件开发和性能测试。
2. 硬件设计步进电机驱动系统的硬件设计包括供电电路、控制电路和电机驱动电路。
2.1 供电电路供电电路负责为整个系统提供电源。
我们选择了12V直流电源作为系统的供电电源,以保证电机稳定运行。
2.2 控制电路控制电路用于接收用户的控制指令,并将其转化为电机驱动信号。
我们采用了微处理器进行控制电路的设计,利用其IO口和相关外围电路实现与电机驱动电路的连接。
2.3 电机驱动电路电机驱动电路通过给定特定的电流和方向信号,控制步进电机的转动。
我们采用了步进电机驱动芯片进行电机驱动电路的设计,驱动芯片能够根据输入信号的变化,控制电机按照给定的步进角度旋转。
3. 软件开发软件开发包括电机控制程序的编写和电机控制界面的设计。
3.1 电机控制程序电机控制程序根据用户的输入指令,通过控制电路向电机驱动电路发送正确的信号,从而控制电机转动。
我们采用了C语言进行程序编写,结合控制电路的IO 口进行控制信号的生成。
3.2 电机控制界面电机控制界面是用户与系统进行交互的接口。
我们设计了一个简单的图形用户界面,用户可以通过该界面设置电机的运行参数,包括步进角度、转速等。
4. 性能测试为了验证步进电机驱动系统的性能,我们进行了一系列的性能测试。
4.1 步进角度测试我们通过设置不同的旋转角度,测试步进电机在给定角度下的准确度。
测试结果显示,步进电机能够非常稳定地按照给定角度旋转。
4.2 转速测试转速测试用于检验步进电机在不同速度下的运行情况。
实验结果表明,步进电机能够在不同速度下保持平稳运行,并且具有较高的转速稳定性。
4.3 负载能力测试负载能力测试用于测试步进电机在不同负载情况下的运行情况。
我们通过增加外加负载,测试了步进电机在不同负载下的转速和转矩。
步进电机驱动器设计

题目:步进电机驱动器设计班级:学号:指导:时间:电工电子技术课程设计任务书设计课题:步进电机驱动器设计设计任务与要求查找一个感兴趣的电工电子技术应用电路,要求电子元件超过30~50个或以上,根据应用电路的功能,确定封面上的题目,然后完成以下任务:1、分析电路由几个部分组成,并用方框图对它进行整体描述;2、对电路的每个部分分别进行单独说明,画出对应的单元电路,分析电路原理、元件参数、所起的作用、以及与其他部分电路的关系等等;3、用简单的电路图绘图软件绘出整体电路图,在电路图中加上自己的班级名称、学号、姓名等信息;4、对整体电路原理进行完整功能描述;5、列出标准的元件清单;设计步骤1、查阅相关资料,开始撰写设计说明书;2、先给出总体方案并对工作原理进行大致的说明;3、依次对各部分分别给出单元电路,并进行相应的原理、参数分析计算、功能以及与其他部分电路的关系等等说明;4、列出标准的元件清单;5、总体电路的绘制及总体电路原理相关说明;6、列出设计中所涉及的所有参考文献资料。
设计说明书字数不得少于3000字。
参考文献1.康华光.电子技术基础(模拟部分).北京高等教育出版社,20052.曾建唐.电工电子基础实践教程(下册)实习.课程设计.北京机械工业出版社,20033.史敬灼.步进电动机伺服控制技术.北京科学出版社,20064.曹汉房,陈耀奎.数字技术教程.北京电子工业出版社,19955.李士雄,丁康源.数字集成电子技术教程.北京高等教育出版社,2003目录1、总体方案与原理说明. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12、方波的产生设计 (3)3、脉冲环形分配电路设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64、功率放大电路设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95、总体电路原理相关说明. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106、总体电路原理图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117、元件清单;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128、参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139、设计心得体会. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141、总体方案与原理说明1.1 步进电机介绍步进电机是一种将电脉冲转化为角位移的执行机构。
步进电动机驱动器设计

机器人及智能装备
工业自动化:用于生产线上的 机器人手臂、传送带等设备
服务机器人:用于酒店、餐厅、 医院等场所的服务机器人
智能家居:用于智能门锁、智 能窗帘、智能照明等设备
医疗设备:用于手术机器人、 康复机器人等医疗设备
清洁保养: 定期清洁 驱动器, 保持其清 洁和干燥
润滑保养: 定期对驱 动器进行 润滑,确 保其运Байду номын сангаас 顺畅
更换零件: 定期检查 驱动器的 零件,及 时更换损 坏或磨损 的零件
安全操作: 确保驱动 器的安全 操作,避 免因操作 不当导致 的损坏
定期检查: 定期检查 驱动器的 运行状态, 确保其正 常工作
单击此处添加副标题
步进电动机驱动器设计
汇报人:
目录
01 02 03 04 05 06
步进电动机驱动器概述 步进电动机驱动器设计要素 步进电动机驱动器性能指标 步进电动机驱动器的应用场景 步进电动机驱动器的选型与使用 步进电动机驱动器的未来发展
01
步进电动机驱动器概述
步进电动机驱动器定义
步进电动机驱动器 是一种将电脉冲信 号转换为机械运动 的装置
04
步进电动机驱动器的应用场景
工业自动化设备
数控机床 包装机械 印刷机械 工业机器人
数控机床
数控机床是一种高精度、高效率的自动化设备,广泛应用于机械加工、模具制造等领域。
步进电动机驱动器在数控机床中的应用,可以实现对机床的精确控制,提高加工精度和效 率。
步进电动机驱动器在数控机床中的应用,可以实现对机床的灵活控制,满足不同加工需求。
02
步进电机驱动模块设计

步进电机驱动模块设计内容:1步进电机及其控制原理2 步进电机驱动电路设计(经Proteus测试)3 步进电机驱动程序设计附录步进电机驱动程序1 步进电机及其控制原理步进电机是一种将电脉冲转化为角位移的数字控制执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度逐步运行的【19】。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,同时可以通过控制脉冲频率来控制电机转动速度和加速度,从而达到调速的目的。
步进电机由于没有误差累积的特点而广泛应用于各种开环控制。
目前比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)等【20】。
反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5°,但噪声和振动都很大。
永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5°或15°。
混合式步进电机是混合了永磁式和反应式的优点。
它又分为两相和五相,两相步进角一般为1.8°而五相步进角一般为0.72°。
这种步进电机的应用最为广泛。
步进电机必须使用步进电机驱动器才能工作。
驱动器针对每一个步进脉冲,按一定的规律向电机各相绕组通电(励磁),以产生必要的转矩,驱动转子运动。
步进电机系统的性能除与电机自身的性能有关外,还与驱动器的性能有很大关系【21】。
步进电机、驱动器和控制器构成了步进电机控制系统不可分割的三大部分,典型的步进电机控制系统如图4-1所示。
图4-1 步进电机控制系统微控制器产生控制信号和脉冲信号,脉冲分配器将微控制器产生的信号脉冲转换成有一定逻辑关系的环形脉冲,功率放大器将脉冲分配器输出的环形脉冲放大,用于控制步进电机的转动。
步进电机的控制方案常用的有以下三种【22】: (1)分立控制方案所谓分立控制就是用电阻、电容、电感等一些元件的组合实现一定的控制功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
步进电机驱动模块设计内容:1步进电机及其控制原理2 步进电机驱动电路设计(经Proteus测试)3 步进电机驱动程序设计附录步进电机驱动程序1 步进电机及其控制原理步进电机是一种将电脉冲转化为角位移的数字控制执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度逐步运行的【19】。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,同时可以通过控制脉冲频率来控制电机转动速度和加速度,从而达到调速的目的。
步进电机由于没有误差累积的特点而广泛应用于各种开环控制。
目前比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)等【20】。
反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5°,但噪声和振动都很大。
永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5°或15°。
混合式步进电机是混合了永磁式和反应式的优点。
它又分为两相和五相,两相步进角一般为1.8°而五相步进角一般为0.72°。
这种步进电机的应用最为广泛。
步进电机必须使用步进电机驱动器才能工作。
驱动器针对每一个步进脉冲,按一定的规律向电机各相绕组通电(励磁),以产生必要的转矩,驱动转子运动。
步进电机系统的性能除与电机自身的性能有关外,还与驱动器的性能有很大关系【21】。
步进电机、驱动器和控制器构成了步进电机控制系统不可分割的三大部分,典型的步进电机控制系统如图4-1所示。
图4-1 步进电机控制系统微控制器产生控制信号和脉冲信号,脉冲分配器将微控制器产生的信号脉冲转换成有一定逻辑关系的环形脉冲,功率放大器将脉冲分配器输出的环形脉冲放大,用于控制步进电机的转动。
步进电机的控制方案常用的有以下三种【22】: (1)分立控制方案所谓分立控制就是用电阻、电容、电感等一些元件的组合实现一定的控制功能。
传统的控制方法采用电阻、电容等这些分立元件与单片机的直接相连接,而这样就有如下弊端:a .整个开关系统的可靠性得不到保证,不利于长期反复使用。
b .由分立元件设计的开关触点容易发生氧化,缩短了开关的使用寿命。
c .过多使用分立元件,浪费大量的单片机I /O 资源,降低了CPU 的利用率。
d .大量的使用分立元件,将影响整个系统的读取速度,不利于实时控制。
(2)单个集成芯片控制方案随着制作工艺的发展,驱动电路部分已经做了很大的改进,开始由集成芯片代替分立元件的控制方案,较分立元件控制方案而言单个集成芯片的可靠性、读取速度、CPU 的利用率都有了很大的提高,但是对于程序编写并没有太大方便性可言。
(3)联合集成芯片控制方案使用联合集成电路芯片不仅可以避免分立元件控制方案的弊端,又可以大大减化程序。
经过以上的比较,本轮椅床的步进电机控制方案选择联合集成芯片控制。
2 步进电机驱动电路设计由1节步进电机驱动选择联合集成芯片控制方案,其抗干扰性强,非常适合作为小功率步进电机的专用驱动芯片。
在本设计中,选用了L297和L298集成电路作为步进电机的驱动芯片。
L297和L298可以方便的组成步进电机驱动控制器,其中L297是步进电机微控制器功率放大器脉冲分配器步进电机控制器(包括环形分配器)【23】。
L297适用于双极性两相步进电机或单极性四相步进电机的控制。
此器件的特性是只需要时钟、方向和模式输入信号,相位是由内部产生的,因此可以减轻微处理器和程序设计的负担。
L298是一种专用的步进电机驱动芯片,内部为双H桥结构,L298的H桥驱动器包含四个各自独立的推挽式驱动器(即四个半桥),可单独使用。
用L297输出的信号可控制L298双H桥驱动集成电路,用来驱动电压为56V,每相电流为4A以下的步进电机。
L297和L298组成的步进电机控制电路具有可靠性高、体积小、成本低和节约微处理器资源等优点。
本设计的步进电机驱动原理图如图4-2所示。
图4-2 步进电机驱动电路图L297是具有20个引脚的双列直插式塑胶封装的器件,采用固定斩波频率的PWM恒流斩波方式工作。
L297主要由译码器、两个固定斩波频率的PWM恒流斩波器及输出逻辑控制组成。
L297的核心是脉冲分配器,它可产生三种相序,对应三种不同的工作方式,即半步方式(HALF STEP);基本步距(FULL STEP,整步)一相激励方式;基本步距两相激励方式。
译码器受L297的方向输入引脚信号CW/CCW和半步方式/整部方式输入引脚信号HALF/FULL所控制。
译码器内部是一个3bit的计数器,加上一些组合逻辑,可产生每周期8步的格雷码时序信号,三种方式的驱动相序都可以根据译码器输出的格雷码的顺序产生。
格雷码的顺序直接与四相八拍(半步方式)相符,只要在19脚输入一个高电平即可得到半步方式相序。
通过交替跳过八步顺序中的状态就可得到全步工作方式,此时在19脚输入一个低电平,即可根据译码器的状态得到单四拍或双四拍工作方式。
图4-3 半步方式相序图步进电机驱动器与ARM微处理器的接口如图4-2所示,采用ARM处理器的I/O口控制电机驱动器。
GPG5端口接CW/CCW引脚,控制电机的旋转方向。
GPG6端口接CLOCK引脚,控制步进时钟脉冲。
GPG7端口接HALF/FULL引脚,当GPG7为高电平时,HALF有效,四相八拍;为低电平时,FULL有效,四相四拍。
GPG8端口接RESET引脚,当GPG8端口输出为低电平时,译码器恢复初始状态。
在本设计中,轮椅床采用步进电机的型号为35BYJ46,为四相步进电机,并采用四相八拍的工作方式。
利用Proteus对步进电机驱动电路进行测试,由于Proteus只支持ARM7系列的少数芯片(如LPC2124等),在这里利用时钟激励源代替S3C2410的I/O口输出时钟控制信号CLOCK,其他控制信号的输入由按键完成,旨在测试该驱动电路设计的正确性。
步进电机驱动电路仿真原理图4-4如所示,在半步工作模态下电机每周期完成8个动作如图4-5所示。
图4-4 步进电机驱动电路仿真原理图3 步进电机驱动程序设计轮椅床的程序采用C语言编写,相对汇编语言编写具有程序清晰、可读性强、更易于模块化编写。
整个轮椅床的程序分为主程序、步进电机驱动程序和传感器驱动程序三部分。
其中主程序非常简单,只需调用目标板初始化程序sys_init(void)即可完成目标板的初始化,并使用一个while循环语句等待。
主程序流程图如图4-6所示。
开始驱动芯片初始设置定时器1、外部中断0初始化WHILE (1)键盘操作配置、控制步进电机运行图4-6 主程序流程图目标板初始化程序:void sys_init(void){MMU_Init( ); // 存储器管理单元初始化ChangeClockDivider(1,1); // FCLK:HCLK:PCLK=1:2:4ChangeMpllValue(0xa1,0x3,0x1); // FCLK=202.8MHzPort_Init( );Timer1_init( );Timer1INT_Init( );ENT0_init( );ENT0INT_Init( );}由4.2节步进电机驱动芯片与S3C2410的I/O口连接,可知GPG6须发送步进控制脉冲。
方案采用定时中断的方法,即每半个周期产生一次中断,在中断服务子程序中使GPG6取反。
定时器中断流程图如图4-7所示。
在目标板初始化程序中已设定PCLK=1/4FCLK=50MHz ,半个周期为1s. 分割PCLK : rTCFK0=255; rTCFK1=0<<4;rTCMPB1=0x00; // 定时器比较寄存器设置rTCNTB1=48828; // 定时器计数值缓冲寄存器设置,rTCNTB1=(50000000/4/256)图4-7 定时器中断程序流程图步进电机的控制通过外部中断0服务子程序完成。
步进电机运行控制程序流程图如图4-8所示。
NOYES定时器1初始化100ms 定时启动定时器1定时器1初始化100ms 定时产生一个控制脉冲100ms 定时是否图4-8 步进电机运行控制程序流程图附录步进电机驱动程序://引入头文件#include"2410 ADDR.h" #include"2410 LIB.h" #include"def.h" #include<string.h> //主程序 void Main(void) { sys_init(); while(1); }转向 停止启动 外部中断0初始化GPF0=0? GPF1=0? GPF2=0?停止发送脉冲发送脉冲GPG5取反外部中断0初始化//定时器1初始化void Timer1_init(void){rGPGCON=rGPGCON & 0xfff0ffff | 0x00050000;//配置GPG口为信号输出rGPGDAT=rGPFDAT | 0x300;rTCFG0=255;rTCFG1=0<<4;rTCNTB1=4883;//定时器计数值缓冲寄存器rTCMPB1=0x00;//定时比较缓冲寄存器rTCON=(1<<11)|(1<<9)|(0<<8);rTCON=(1<<11)|(0<<9)|(1<<8);}//定时器1中断服务子程序int flag;void_irq Timer1_ISR(void){if(flag==0){rGPGDAT=rGPGDAT & 0xeff | 0x200;//GPG6输出一个高电平flag=1;}else{rGPGDAT=rGPGDAT & 0xdff | Ox100;//GPG输出一个低电平flag=0;}rSRCPND |=BIT_TIMER1;rINTPND |=BIT_TIMER1;}//定时器1中断初始化程序void Timer1INT_Init(void){if((rINTPND & BIT_TIMER1)){rSRCPND |=BIT_TIMER1;}pISR_TIMER1=(int)Timer_ISR;rINTMSK &=BIT_TIMER1;//开中断}//外部中断0中断服务子程序void_irq Eint0_ISR(void){int status;rGPGCON=rGPGCON & 0xfff0ffff | 0x00050000;//配置GPG口为信号输出if(GPF1==0) status=1;//开启if(GPF2==0) status=2;//停止if(GPF3==0) status=3;//换向switch(status)//判断步进电机控制状态{case'1'://启动Timer1_init();//定时器1初始化Timer1INT_Init();//定时器1中断开启break;case'2'://停止rGPGDAT=rGPGDAT & 0xf7f | 0x080;break;case'3'://换向rGPGDAT=rGPGDAT & 0xfef | 0x010;break;}电机驱动模块设计//初始化程序void sys_init(void){ChangeClockDivider(1,1);//FCLK:HCLK:PCLK=4:2:1 ChangeMPllValue(0xa1,0x2,0x1);//FCLK=202.8MHz Timer1_init( );Timer1INT_Init( );ENT0_init( );ENT0INT_Init( );}。