步进电机驱动模块设计
- 格式:docx
- 大小:166.94 KB
- 文档页数:11
步进电机驱动控制系统设计(有程序)⽬录⼀前⾔ (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)脉冲分配器⽅案⼀硬件环形分配器:由计数器等数字电路组成的。
有较好的响应速度,且具有直观、维护⽅便等优点。
⽅案⼆软件环分:由计算机接⼝电路和相应的软件组成的。
受到微型计算机运算速度的限制,有时难以满⾜⾼速实时控制的要求。
由软件完成脉冲分配⼯作,不仅使线路简化,成本下降,⽽且可根据应⽤系统的需要,灵活地改变步进电机的控制⽅案。
考虑到硬件设备的有限和对步进电机的控制我们选择软件环分可以有单⽚机实现。
步进电机驱动系统设计报告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 步进电机介绍步进电机是一种将电脉冲转化为角位移的执行机构。
步进电机驱动模块设计内容: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)分立控制方案所谓分立控制就是用电阻、电容、电感等一些元件的组合实现一定的控制功能。
基于CPLD的步进电机驱动模块设计0引言数控技术是以数字量编程实现控制机械或其他设备自动工作的技术,数控机床就是采用了数控技术的机床,或者说装备了数控系统的机床。
机床数控系统主要由几个部分组成:零件加工程序的输入、数据处理、插补计算和运动机构的控制。
本文主要介绍最后一个部分运动机构的控制,即如何控制电机的动作。
可选的电机有很多种,在这里我们选择步进电机。
步进电机是数字控制电机,是一种将电脉冲转换成角位移的精密执行元件。
它的旋转是以固定的角度一步一步运行的,每给步进电机发一个脉冲电机就旋转一个固定的角度,只要脉冲数发的正确,电机就能走到位,无累积误差,所以对步进电机的控制可以采用开环控制方法。
如何精确且经济的控制步进电机成为广大研究人员探讨的课题。
本文将采用CPLD 来实现对步进电机的控制。
并最终通过实验仿真结果。
1步进电机驱动原理步进电机的驱动是靠给步进电机的各相励磁绕组通电,实现步进电机内部磁场方向的变化来使步进电机转动的。
设我们所用的步进电机是四相的,这四相分别为A,B,C,D,对应于四对磁极。
每个磁极的内表面都分布着大小,齿间距相同的多个小齿(不同的步进电机,小齿的个数不同),假设Ⅳ为转子中小齿的个数。
当这4相按ABCD的顺序通电时,步进电机的内部磁场变化一周(360),此种通电方式为单相四拍通电方式,此时步进电机的步距角:=90/N若N=50,则=1.8如果选择的通电顺序为AABBBCCCDDAD,此种通电方式为双相八拍通电方式,此时步进电机的步距角为:=45/N若N=50,则=0.9步距角是步进电机一次能转过的最小角度,电机的步距角越小,说明电机走的越精确,所以本文选择驱动电机通电的方式为双相八拍通电方式。
2设计方案一个完整的,控制精度高的步进电机控制系统框图如图1所示。
CPLD和步进电机的驱动器相连,驱动器把CPLD输出的信号放大后送入步进电机,由于数控机床的各个轴是靠电机的转动来带动的,所以电机的转动带动相应轴的动作。
S和STM32的智能步进电机驱动控制模块设计智能步进电机驱动控制模块是一种能够精确控制步进电机运动的设备。
它可以根据输入的指令、传感器反馈信号和控制算法来实现步进电机的精确定位和驱动控制。
在实际应用中,STM32是一种广泛使用的微控制器,具有较高的性能和可靠性,因此采用STM32作为智能步进电机驱动控制模块的控制核心是非常合适的。
智能步进电机驱动控制模块的设计需要考虑以下几个方面:1.STM32的选型和硬件设计:根据实际应用的需求,选择适合的STM32型号。
考虑到步进电机的驱动需求,可以选择集成了电机驱动模块的STM32型号,以减少外围电路的设计。
此外,还需要考虑接口的设计,如UART用于与其他设备进行通信,IO口用于控制步进电机的输入和输出等。
2.嵌入式软件的设计:利用STM32的开发环境和开发工具,编写相应的驱动程序和控制算法。
通过对步进电机驱动信号的控制和调整,实现步进电机的精确定位和运动控制。
此外,还可以通过嵌入式软件实现一些高级功能,如速度控制、加减速控制、位置校准等。
3.外围电路的设计:智能步进电机驱动控制模块还需要一些外围电路来实现与其他设备的连接和信号处理。
比如,可以采用传感器来获取步进电机的运动状态和位置信息,对信号进行采样和处理,以提供给STM32进行控制。
此外,还可以考虑加入一些保护电路,如过流保护和过热保护等,以确保步进电机和控制电路的安全性和可靠性。
4.PCB设计:根据硬件和外围电路的设计,进行相应的PCB布局和连线。
合理安排元件的布局,减少干扰,提高整体稳定性和抗干扰能力。
在设计过程中,还需要考虑布线的优化和接地与屏蔽等措施,以提高信号的传输质量和稳定性。
总之,智能步进电机驱动控制模块的设计需要从硬件和软件两个方面综合考虑,充分利用STM32的强大功能和可编程性。
通过合理的设计和优化,可以实现步进电机的精确控制,满足不同应用的需求。
步进电机及驱动模块的设计4.1.1步进电机的工作原理步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。
现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。
4.1.2 BL-210的性能介绍BL-210实物如图4-1所示:图4-1 BL-210实物图(1)特点BL-210驱动器驱动二相步进电机,该驱动器采用原装进口模块,实现高频斩波,恒流驱动,具有很强的抗干扰性、高频性能好、起动频率高、控制信号与内部信号实现光电隔离、电流可选、结构简单、运行平稳、可靠性好、噪声小,带动1.0A以下所有的步进电机。
特别是在舞台灯光、自动化、仪表、POS机、雕刻机、票据打印机、工业标记打印机、半导体扩散炉等领域得到广泛的应用。
BL-210驱动器特点○1每相最大驱动器电流为1.0安培。
○2采用无过流专利技术。
○3采用国外进口电力电子元器件。
○4可选择电流半流。
○5细分数可选(1/2,1/4,1/8),对应的微步距角分别为(0.9°/STEP、0.45°/STEP、0.225°/STEP)。
○6所有输入信号都经过光电隔离。
○7斩波频率f=40KHZ○8电机的相电流为正弦波。
驱动器接线示意如图4-2所示:图4-2 驱动器接线示意图(2)技术规格如表4-1所示:表4-1 技术规格表○1供电电源:直流12V--40V(输入电压)○2驱动器适配电机:42BYG或更小系列步进电机。
基于STM32的步进电机控制系统设计与实现1. 引言步进电机是一种常见的电动机类型,具有定位准确、结构简单、控制方便等优点,在自动化控制领域得到广泛应用。
本文将介绍基于STM32单片机的步进电机控制系统设计与实现,包括硬件设计、软件开发和系统测试等内容。
2. 硬件设计2.1 步进电机原理步进电机是一种将输入脉冲信号转换为角位移的设备。
其工作原理是通过改变相邻两相之间的电流顺序来实现转子旋转。
常见的步进电机有两相、三相和五相等不同类型。
2.2 STM32单片机选择在本设计中,我们选择了STM32系列单片机作为控制器。
STM32具有丰富的外设资源和强大的计算能力,非常适合用于步进电机控制系统。
2.3 步进电机驱动模块设计为了实现对步进电机的精确控制,我们需要设计一个步进电机驱动模块。
该模块主要包括功率放大器、驱动芯片和保护电路等部分。
2.4 电源供应设计步进电机控制系统需要稳定可靠的电源供应。
我们设计了一个电源模块,用于为整个系统提供稳定的直流电源。
3. 软件开发3.1 开发环境搭建在软件开发过程中,我们需要搭建相应的开发环境。
首先安装Keil MDK集成开发环境,并选择适合的STM32单片机系列进行配置。
3.2 步进电机控制算法步进电机控制算法是实现步进电机精确控制的关键。
我们可以采用脉冲计数法、速度闭环控制等方法来实现对步进电机的位置和速度控制。
3.3 驱动程序编写根据硬件设计和步进电机控制算法,我们编写相应的驱动程序。
该程序主要负责将控制信号转换为驱动模块所需的脉冲信号,并通过GPIO口输出。
3.4 系统调试与优化在完成软件编写后,我们需要对系统进行调试和优化。
通过调试工具和示波器等设备,对系统进行性能测试和功能验证,以确保系统工作正常。
4. 系统测试与评估在完成硬件设计和软件开发后,我们需要对系统进行全面的测试和评估。
主要包括功能测试、性能测试和稳定性测试等内容。
4.1 功能测试功能测试主要验证系统是否按照预期工作。
基于A3972的步进电机驱动模块设计作为执行器件,广泛用于各种类型的自动控制系统。
它是一种将离散的电脉冲信号转化成相应的角位移或线位移的电磁机械装置。
它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比,是一种输出与输入脉冲对应的增量驱动元件。
然而因为其步距角较大,往往满足不了某些高精密定位、精密加工等方面的要求,因此实现细分驱动是减小步距角、提高步进辨别率、增强电机运行平稳性的一种行之有效的办法。
在实际应用中,往往要求电机运转过程中在转速满足要求的同时,力矩要足够大,而电机的转速与力矩恰是一对冲突体,转速相同时电机的起动力矩要小于运行力矩,所以实际应用中要按照电机负载力矩来确定启动频率与运行频率。
本文将给出一种基于A3972驱动芯片的驱动模块设计,以满足实际生产中精密定位的需求,并给出一个合理的加速曲线,以解决电机的启动力矩与转速的冲突。
A3972控制芯片A3972是公司的64细分双DMOS全桥微步距步进电机驱动,CPU可通过时钟、数据、选通3线串口对其举行控制,包括步进电机的方向、速度、步进法(细分)的设置。
控制命令以串行数据形式通过两个字的格式写入,一个为桥数据字,一个为控制时光数据字。
它的工作可达50V,驱动电流达1.5A,一个A3972即可驱动一台二相步进电机。
A3972具有优良的特性,芯片内部的SPWM电流控制可通过串口设置其工作在整步、半步、1/4步等,最多可至1/64步,每一步的负载电流可以按最大值的1.56%增量举行设置。
其特有的电流慢、快、混合等3种电流衰减模式可以使步进电机工作在不同的负载和转速下,而且都能获得较抱负的电流波形。
另外,它易于与接口,控制方式灵便。
A3972的功率驱动采纳DMOS结构及高速SPWM开关模式,因此功耗微小,基本可不用散热器,可降低成本(去除散热器)和体积。
第1页共4页。
步进电机的功能模块设计,步进电机的控制与测速方法
步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为步距角,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机的功能模块设计本模块可分为如下3个部分:
单片机系统:控制步进电动机;
外围电路:PIC单片机和步进电动机的接口电路;
PIC程序:编写单片机控制步进电功机的接口程序,实现三角波信号的输出功能。
(1)步进电动机与单片机的接口
单片机是性能极佳的控制处理器,在控制步进电机工作时,接口部件必须要有下列功能。
①电压隔离功能。
单片机工作在5V,而步进电机是工作在几十V,甚至更高。
一旦步进电机的电压串到单片机中,就会损坏单片机;步进电机的信号会干扰单片机,也可能导致系统工作失误,因此接口器件必须有隔离功能。
②信息传递功能。
接口部件应能够把单片机的控制信息传递给步进电机回路,产生工作所需的控制信息,对应于不同的工作方式,接口部件应能产生相应的工作控制波形。
③产生所需的不同频率。
为了使步进电机以不同的速度工作,以适应不同的目的,接口部件应能产生不同的工作频率。
简易步进电机驱动系统的设计与实现摘要:本实验设计了一个简易的步进电机驱动电路,使用了SST89E516RD单片机、ULN2803电机驱动芯片和四相八拍的步进电机。
实验的目标是通过控制电路,使步进电机按照预定的顺序旋转。
首先,我们将SST89E516RD单片机与ULN2803电机驱动芯片进行连接。
单片机的相应引脚连接到ULN2803的输入端,ULN2803的输出端通过电阻连接到步进电机的控制端。
然后,根据步进电机的类型和步进方式,我们确定了四相八拍的驱动顺序。
通过对ULN2803的输入信号进行适时改变,可以实现步进电机的转动。
关键词:步进电机驱动电路,SST89E516RD单片机,四相八拍的步进电机,ULN2803电机驱动芯片,步进电机的转动一、设计任务与要求1、基本要求(1)利用SST89E516RD单片机、ULN2803电机驱动芯片和四相八拍的步进电机,设计一个简易的步进电机驱动电路;(2)使用嘉立创EDA或者Altium Designer软件完成硬件原理图的设计,并借助SST89E516RD单片机实验箱完成硬件电路的搭建;(3)利用Keil等集成开发环境,完成汇编语言软件的编写和调试,并借助串口下载器将程序下载到实验系统上运行,本系统可以利用按键对步进电机进行加速和减速顺时针转动。
2、拓展要求(选做)设计C语言代码完成上述基本要求,并且读取按键值,使步进电机进行逆时针转动。
二、总体方案设计(一)总体方案论证1. 步进电机选型:根据实验要求和预设条件,选择具有合适参数的步进电机作为驱动电机。
需要考虑的参数包括步距角、相数、电机型号等。
选择步进电机时需要根据实际需求确定电机的转速和扭矩要求,以及所需要的精度和分辨率等。
2. 驱动电路设计:步进电机的驱动电路通常由电流控制器和功率放大器组成。
电流控制器负责产生所需的驱动信号,而功率放大器则负责将信号放大以驱动步进电机。
常见的驱动方式包括双极性驱动和四相驱动。
步进电机驱动模块1、概述步进电机驱动模块是用来精确驱动双极步进电机的。
当有脉冲输入,步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。
它可以用在3D打印、数控、Makeblock 音乐机器人以及精确动作控制等方面。
本模块贴有红色色标,我们需要使用RJ25连接线连接到主控板上带有红色标识的接口。
2、技术规格`●最大驱动电压:12V DC●最大电流:1.35A3、功能特性●兼容4线双极步进电机;●只需要两个端口就可以控制步进和方向;●可调电位器可以调节最大电流输出,改变步进电机扭矩;●具有板上拨码开关支持全, 半, 1/4, 1/8, 1/16步进模式;●具有接地短路保护和加载短路保护;●具有反接保护,电源反接不会损坏IC;●模块的白色区域是与金属梁接触的参考区域;●支持Arduino IDE编程, 并且提供运行库来简化编程;●支持mBlock图形化编程,适合全年龄用户;●使用RJ25接口连线方便;●模块化安装,兼容乐高系列;●配有接头支持绝大多数Arduino系列主控板。
4、引脚定义步进电机驱动模块有7个针脚的接头,每个针脚的功能如下表表 1 7-Pin 接口功能5、接线方式●RJ25连接由于步进电机驱动模块接口是红色色标,属于电机驱动。
当使用RJ25接口时,需要连接到主控板上带有红色色标的接口。
以Makeblock Orion为例,可以连接到1,2号接口,如图图 1 步进电机驱动模块与 Makeblock Orion连接注:驱动板长时间工作,芯片会发热,使用的时候请注意。
有需要的话可以在上面加个散热片,帮助芯片散热●杜邦线连接当使用杜邦线连接到Arduino Uno主板时,EN接低电平,RST和SLP接高电平,STP和DIR 引脚需要连接到 ANALOG(模拟)口(也可以只连接STP、DIR管脚),如下图所示:图 2 步进电机驱动模块与 Arduino UNO 连接图注:接杜邦线时,模块上需要焊接排针。
步进电机驱动模块设计内容: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( );}。