7. STM32 控制步进电机正方转
- 格式:docx
- 大小:1.04 MB
- 文档页数:4
实训课题三PLC实现步进电机正反转和调速控制一、实验目的1、掌握步进电机的工作原理2、掌握带驱动电源的步进电机的控制方法3、掌握DECO指令实现步进电机正反转和调速控制的程序二、实训仪器和设备1、FX2-48MR PLC 一台2、两相四拍带驱动电源的步进电机一套3、正反切换开关、起停开关、增减速开关各一个三、步进电机工作原理步进电机是纯粹的数字控制电动机,它将电脉冲信号转换成角位移,即给一个脉冲信号,步进电机就转动一个角度,图3-1是一个三相反应式步进电机结图。
从图中可以看出,它分成转子和定子两部分。
定子是由硅钢片叠成,定子上有六个磁极(大极),每两个相对的磁极(N、S极)组成一对。
共有3对。
每对磁极都绕有同一绕组,也即形成1相,这样三对磁极有3个绕组,形成三相。
可以得出,三相步进电机有3对磁极、3相绕组;四相步进电机有4对磁极、四相绕组,依此类推。
反应式步进电动机的动力来自于电磁力。
在电磁力的作用下,转子被强行推动到最大磁导率(或者最小磁阻)的位置,如图3-1(a)所示,定子小齿与转子小齿对齐的位置,并处于平衡状态。
对三相异步电动机来说,当某一相的磁极处于最大导磁位置时,另外两相相必处于非最大导磁位置,如图3-1(b)所示,即定子小齿与转子小齿不对齐的位置。
图3—1三相反应式步进电动机结构图把定子小齿与转子小齿对齐的状态称为对齿,把定子小齿与转子小齿不对齐的状态称为错齿。
错齿的存在是步进电机能够旋转的前提条件,所以,在步进电机的结构中必须保证有错齿的存在,也就是说,当某一相处于对齿状态时,其它绕组必须处于错齿状态。
本实验的电机采用两相混合式步进电机,其内部上下是两个磁铁,中间是线圈,通了直流电以后,就成了电磁铁,被上下的磁铁吸引后就产生了偏转。
因为中间连接的电磁铁的两根线不是直接连接的,是采用在转轴的位置用一根滑动的接触片。
这样如果电磁铁转过了头,原先连接电磁铁的两根线刚好就相反了,所以电磁铁的N极S极就和以前相反了。
基于STM32和FPGA的多通道步进电机控制系统设计共3篇基于STM32和FPGA的多通道步进电机控制系统设计1本文介绍了基于STM32和FPGA的多通道步进电机控制系统设计。
一、设计目标本次设计的目标是:设计一个可控制多路步进电机的系统,具备高效、可靠的控制方式,实现步进电机多通道运动控制的目标。
二、硬件选型1、主控芯片STM32本设计采用STM32作为主控芯片,STM32系列微控制器具有高性能、低功耗、高集成度、易于开发等优点,非常适合此类控制系统。
2、FPGA本设计采用FPGA作为数据处理和控制模块,FPGA具有可编程性和高速、低功耗的特点,在电机控制系统中有广泛的应用。
3、步进电机步进电机具有速度可调、定位精度高等特点,很适合一些高精度的位置控制系统。
4、电源模块电源模块负责为整个系统提供稳定的电源。
5、驱动模块驱动模块负责驱动步进电机,其控制原理为将电机的输入电流拆分为若干个短脉冲信号,每一个短脉冲信号控制一个步距运动。
三、系统设计1、STM32控制器设计STM32控制器是本系统的核心,其功能是读取FPGA发送的控制信号和控制步进电机的运动。
STM32控制器处理的信号主要包括方向信号、脉冲信号、微步子段等控制参数,将这些参数按照驱动模块的需求分发到各个驱动模块中,从而控制步进电机的运动。
2、FPGA模块设计FPGA模块是本系统的数据处理模块,其主要功能是接收STM32发送的指令,进行解码并且转化为步进电机的控制信号,以驱动步进电机的运动,同时FPGA模块还负责将电机的运动数据反馈回STM32,以保证整个系统的稳定运行。
3、驱动模块设计驱动模块是本系统的控制模块,其主要功能是将电机的输入电流拆分成若干个短脉冲信号,每一个短脉冲信号控制一个步距运动,从而实现对步进电机的控制。
四、系统流程1、系统初始化整个系统初始化主要包括STM32控制器的初始化、FPGA模块的初始化、各个驱动模块的初始化、电源模块的初始化,当系统初始化完成后,所有硬件设备均已经准备完成,可以开始正常的运行。
PLC实现步进电机的正反转及调整控制
一、PLC实现步进电机的控制原理
拿步进电机举例,大家可以把它想象成一个隔著一定距离的圆盘,隔着每一环的距离形成齿轮的节点。
步进电机的正向或反向转动,就是将这一环索引和圆盘一起发动转动。
步进电机的转动,是靠每一步索引圆盘来完成的,每一步都有一个控制信号来告诉电机从哪一环节点开始转动,当接收到控制信号时,电机开始转动,并且每转一圈循环转动几个索引。
1、正向、反向控制
要实现步进电机的正向反向控制,就要在PLC程序中控制信号形式来实现,一般可以使用两个控制信号,一个是正反控制信号,一个是步进电机转动的速度,要求PLC程序根据正反控制信号来实现正向和反向控制。
正反控制信号就是设置一个开关量变量,当这个开关量为ON时,电机运行正转,当开关量为OFF时,电机运行反转,具体可以采用T函数来实现,T11=1,电机正转,T12=0,电机反转。
由于步进电机的转动是一布一射的过程,所以需要用一个电位器来控制步进电机的转动速度,当电位器的旋钮调整到一定位置时,就会给出一定频率的步进信号,PLC程序可以根据此步进信号,来控制步进电机的转动速度。
基于stm32的28byj步进电机控制设计原理
基于STM32的28BYJ步进电机控制设计原理主要包含以下几个步骤:
1. 确定步进电机的型号:28BYJ步进电机是一种减速型永磁式步进电机,其有效最大外径为28毫米,有四相八拍的工作方式。
2. 确定步进电机的工作原理:五线四相步进电机,不同相位得电会让步进电机的转子转动一个角度,按一定规律给不同的相位通电,就可以让步进电机连续转动。
通电的顺序如下表所示。
3. 控制电机的转速:通过改变延时的时间,就可以控制电机的转速。
但要注意不能太慢,也不要太快,需要不断调试以达到合理范围。
4. 控制电机的转向:调换得电的顺序,就可以控制电机的转向。
5. 连接硬件:将STM32的IO口和步进电机的四条相线连接,但要确保连接顺序正确,否则可能无法正常工作。
具体来说,如果你想让步进电机向一个方向转动,你可以按照这个方向的通电顺序给电机通电;如果你想让步进电机停止转动,你可以让所有相位的电流都停止;如果你想改变步进电机的转动方向,你可以改变通电的顺序。
此外,通过改变通电的频率,你可以改变步进电机的转速。
以上就是基于STM32的28BYJ步进电机控制设计原理。
第1篇一、实验目的1. 理解步进电机的工作原理及控制方法。
2. 掌握单片机与步进电机驱动模块的接口连接方法。
3. 学习使用C语言编写程序,实现对步进电机的正反转、转速和定位控制。
4. 通过实验,加深对单片机控制系统的理解。
二、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机,其特点是控制精度高、响应速度快、定位准确。
步进电机控制实验主要涉及以下几个方面:1. 步进电机驱动模块:常用的驱动模块有ULN2003、A4988等,它们可以将单片机的数字信号转换为步进电机的控制信号。
2. 单片机:单片机是整个控制系统的核心,负责接收按键输入、处理数据、控制步进电机驱动模块等。
3. 步进电机:步进电机分为单相、双相和三相等类型,本实验使用的是双相四线步进电机。
三、实验设备1. 单片机开发板:例如STC89C52、STM32等。
2. 步进电机驱动模块:例如ULN2003、A4988等。
3. 双相四线步进电机。
4. 按键。
5. 数码管。
6. 电阻、电容等元件。
7. 电源。
四、实验步骤1. 硬件连接(1)将步进电机驱动模块的输入端(IN1、IN2、IN3、IN4)分别连接到单片机的P1.0、P1.1、P1.2、P1.3口。
(2)将按键的输入端连接到单片机的P3.0口。
(3)将数码管的段选端连接到单片机的P2口。
(4)将步进电机驱动模块的电源端连接到电源。
(5)将步进电机连接到驱动模块的输出端。
2. 编写程序(1)初始化单片机I/O端口,设置P1口为输出端口,P3.0口为输入端口,P2口为输出端口。
(2)编写按键扫描函数,用于读取按键状态。
(3)编写步进电机控制函数,实现正反转、转速和定位控制。
(4)编写主函数,实现以下功能:a. 初始化数码管显示;b. 读取按键状态;c. 根据按键状态调用步进电机控制函数;d. 更新数码管显示。
3. 调试程序(1)将程序烧写到单片机中;(2)打开电源,观察数码管显示和步进电机运行状态;(3)根据需要调整程序,实现不同的控制效果。
1、主程序先正转,等到正转完了就中断,中断中接通个辅助触点(M0.X),当M.0X闭合,住程序中的反转开始运做。
这样子就OK了。
2、用PTO指令让Q0.0 OR Q0.1高速脉冲,另一个点如Q0.2做方向信号,就可以控制正反转了,速度快慢就要控制输出脉冲周期了,周期越短速度越快,如果你速度很快的话请考虑缓慢加速,不然它是启动不了的,如果方向也变的快的话就要还做一个缓慢减速,不然它振动会蛮厉害,而且也会失步。
3、程NETWORK 1 // 用于单段脉冲串操作的主程序(PTO)// 首次扫描时,将映像寄存器位设为低// 并调用子程序0LD SM0.1R Q0.0 1CALL SBR_0NETWORK 1 // 子程序0开始LD SM0.0MOVB 16#8D SMB67 // 设置控制字节:// - 选择PTO操作// - 选择单段操作// - 选择毫秒增加// - 设置脉冲计数和周期数值// - 启用PTO功能MOVW +500 SMW68 // 将周期设为500毫秒。
MOVD +4 SMD72 // 将脉冲计数设为4次脉冲。
ATCH INT_0 19 // 将中断例行程序0定义为// 处理PTO完成中断的中断。
ENI // 全局中断启用PLS 0 // 激活PTO操作,PLS0 =》Q0.0MOVB 16#89 SMB67 // 预载控制字节,用于随后的// 周期改动。
NETWORK 1 // 中断0开始// 如果当前周期为500毫秒:// 将周期设为1000毫秒,并生成4次脉冲LDW= SMW68 +500MOVW +1000 SMW68PLS 0CRETINETWORK 2// 如果当前周期为1000毫秒:// 将周期设为500毫秒,并生成4次脉冲LDW= SMW68 +1000MOVW +500 SMW68PLS 0序注释艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。
PLC实现步进电机的正反转和调整控制PLC(可编程逻辑控制器)是一种用于自动化控制系统的可编程电子设备。
在工业领域,PLC被广泛应用于各种自动化设备和机器的控制。
步进电机是一种非塔式电机,其运动是以固定的步长进行的,适用于需要精确定位的应用,如印刷机、数控机床等。
本文将介绍如何使用PLC实现步进电机的正反转和调整控制。
步进电机的正反转控制可以通过改变电机的运行顺序来实现。
一种常见的方法是使用四相步进电机,通过改变电机的相序来实现正反转。
一般来说,步进电机有两种驱动方式:全步进和半步进。
全步进驱动方式是指每次脉冲信号到达时,电机转动一个步进角度。
全步进驱动方式可以通过控制PLC输出的脉冲信号来实现。
例如,当需要电机正转时,在PLC程序中输出连续的脉冲信号,电机将按照一定的步进角度顺时针旋转。
当需要反转时,输出连续的反向脉冲信号,电机将逆时针旋转。
半步进驱动方式是指每次脉冲信号到达时,电机转动半个步进角度。
半步进驱动方式可以通过改变输出的脉冲信号序列来实现。
例如,正转时输出连续的脉冲信号序列:1000、1100、0100、0110、0010、0011、0001、1001,电机将按照半个步进角度顺时针旋转;反转时输出反向脉冲信号序列:1001、0001、0011、0010、0110、0100、1100、1000,电机将逆时针旋转。
调整控制是指通过PLC来调整步进电机的运行速度和位置。
调速控制可以通过改变输出脉冲信号的频率来实现。
例如,可以定义一个计时器来控制输出脉冲信号的频率,通过改变计时器的时间参数来改变电机的速度。
较小的时间参数将导致更快的脉冲频率,从而使电机加快转速。
位置控制可以通过记录步进电机当前的位置来实现。
可以使用PLC的存储和控制功能来记录和更新电机的位置信息。
例如,可以使用一个变量来保存电机当前的位置,并在转动过程中不断更新该变量的值。
通过读取该变量的值,可以获得电机当前的位置信息。
总结起来,使用PLC实现步进电机的正反转和调整控制可以通过控制输出的脉冲信号序列和频率来实现。
西门子S系列PLC控制步进电机进行正反转的方法
S系列PLC是西门子公司生产的一种工业自动化控制设备,可以用于
控制和监测各种电气设备,包括步进电机。
步进电机是一种特殊的电机,
可以精确地控制位置和速度,广泛应用于工业自动化领域。
控制步进电机进行正反转可以使用以下步骤:
1.配置PLC软件:首先需要通过PLC软件配置相应的输入输出(I/O)模块。
根据实际情况,将步进电机的控制信号连接到PLC的输出模块上。
2.编写控制程序:使用PLC软件编写控制程序,控制步进电机的正反转。
PLC软件通常提供了图形化编程界面,可以通过拖拽和连接各种功能
块来搭建程序。
在程序中,可以通过设置输出信号的状态(如ON或OFF)来控制步进电机的正反转。
3.添加控制逻辑:根据步进电机的正反转逻辑,可以使用逻辑功能块
来实现控制。
比如,可以使用一个计时器来控制电机的转动时间,或者使
用一个翻转触点来实现电机的正反转切换。
4.设置步进电机的驱动器:步进电机通常需要配合驱动器使用。
驱动
器是一种电子设备,可以将PLC输出的信号转换为步进电机的工作推力。
根据具体的步进电机型号和驱动器型号,需要根据驱动器的相关规格设置
驱动工作方式,如设置电机的转动方向和步距等。
控制步进电机进行正反转的方法并不复杂,但需要确保PLC软件的配
置和编写程序的正确性。
此外,也需要根据具体的步进电机型号和驱动器
型号,了解其工作规格和特性,以便正确设置和操作。
基于STM32的分布式步进电机控制系统设计随着工业化的不断发展,现代工业生产已经越来越依赖于各种控制系统。
其中,步进电机控制系统在现代生产中占据着非常重要的地位。
本文将详细介绍基于STM32的分布式步进电机控制系统设计。
一、系统设计介绍步进电机控制系统是一个复杂的系统,必须具备高效、稳定的性能。
为此,我们采用基于STM32的分布式步进电机控制系统设计。
该系统的设计包括如下几个部分:1.主控制器与多个从控制器:该系统采用了主控制器与多个从控制器的设计模式,主控制器通过网络连接多个从控制器,实现对多个步进电机的控制。
2.操作界面设计:操作界面为多族语言界面,使得不同地区及语种的客户使用时无压力,并可远程下载数据是否更新;该界面采用了人性化操作模式,实时检测设备状态,并且通过双向通讯方式与设备通信。
3.步进电机驱动器:步进电机驱动器采用数字驱动方式,控制精度高,同时具有更高的速度和更大的扭距;驱动器设备支持矢量控制,对于转矩、速度、位置等高精度控制非常有效。
4.网络通讯接口:网络通讯接口采用标准的以太网接口,支持多协议,可以与其他设备无缝连接。
同时,该接口可以支持多种网络通讯协议,支持远程访问、在线监控等功能。
二、系统架构设计系统架构设计采用七层网络架构,其中包括物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
物理层主要负责硬件设备的工作,数据链路层负责数据传输的可靠性,网络层负责数据包的传输与路由,传输层负责数据包的重传与控制,会话层负责为应用程序提供服务,表示层负责数据格式转换,应用层提供各种应用程序。
三、具体功能实现基于STM32的分布式步进电机控制系统主要实现以下功能:1.步进电机控制:系统可以控制多个步进电机的转矩、速度、位置等参数,实现高精度控制。
2.状态监测:系统可以实时监测步进电机的状态,包括位置、速度等,保证控制的准确性。
3.网络控制:系统可以通过网络远程控制多个步进电机,实现人机交互。
PLC实现步进电机正反转和调速控制PLC(可编程逻辑控制器)是一种专门用于工业自动化控制系统的计算机控制设备。
它可以实现对多种设备和机器的控制,包括步进电机。
步进电机是一种通过步进角度来控制转动的电机,其转动可以精确地控制在每个步进角度停留一段时间。
步进电机的正反转和调速控制是实现工业自动化过程中常用的功能,PLC可以很好地实现这些控制。
一、步进电机的正反转控制步进电机的正反转控制是通过控制步进电机的相序来实现的。
步进电机有多种相序方式,常见的包括正向旋转、逆向旋转、双向旋转等。
PLC 可以通过控制步进电机的相序开关来实现步进电机的正反转。
在PLC中,可以使用PLC的输出口来控制步进电机的相序开关。
通过将输出口与步进电机的控制线路连接,可以控制相序开关的状态,从而控制步进电机的正反转。
例如,将PLC的一个输出口连接到步进电机的CW (Clockwise)输入线路,另一个输出口连接到步进电机的CCW(Counter Clockwise)输入线路,可以通过控制这两个输出口的状态来实现步进电机的正反转。
二、步进电机的调速控制步进电机的调速控制是通过控制步进电机的脉冲频率来实现的。
步进电机的转速与脉冲频率成正比,脉冲频率越高,步进电机的转速越快。
因此,通过控制PLC输出口给步进电机发送的脉冲频率,可以实现步进电机的调速控制。
在PLC中,可以使用定时器模块来控制步进电机的脉冲频率。
定时器模块可以通过设定计时器的定时时间和周期,来控制输出口的脉冲频率。
通过控制定时器的定时时间,可以控制步进电机每个步进角度的停留时间,从而控制步进电机的转速。
除了定时器模块,PLC还可以使用计数器模块来实现步进电机的调速控制。
计数器模块可以通过设定计数器的初始值和计数步长,来控制输出口的脉冲频率。
通过控制计数器的初始值和计数步长,可以控制步进电机每个步进角度的停留时间,从而实现步进电机的转速控制。
三、步进电机正反转和调速控制实例以下是一个使用PLC实现步进电机正反转和调速控制的实例。
PLC控制步进电机的正反转和速度
1.控制要求
对定时器进行不同的时间定时控制其速度。
通过定时器定时通、断电使步进电机实现正反转。
本文以五相十拍步进电机用西门子S7-200plc来进行举例。
2.五相十拍步进电机的控制要求
1)五相步进电动机有五个绕组:A、B、C、D、E,控制五相十拍电动机的时序图如下:
2)用五个开关控制步进电动机工作:
1 号开关控制其运行(启/停)
2 号开关控制其低速运行(转过一个步距角需0.5S)
3 号开关控制其中速运行(转过一个步距角需0.1S)
4 号开关控制其低速运行(转过一个步距角需0.03S)
5 号开关控制其转向(ON为正转,OFF为反转)
3.PLC外部接线图
PLC外部接线图的输入输出设备、负载电源的类型等设计就结合系统的控制要求来设定。
其控制接线图如下图所示:
4.I/O地址分配
根据PLC外部接线图可以写出各电气元件符号、功能说明表及I/O 地址分配表如下:
5.五相十拍步进电动机的拍数实现梯形图如下:。
基于STM32的步进电机多轴速度控制方法研究与实现王昊天;于乃功【摘要】在机器人多轴电机控制过程中,发现带载情况下如果电机起步速度过快会导致电机堵转问题,很需要一种可以实现电机匀加速的精确控制方法;文章借助于STM32F103,通过其I/O口输出矩形波脉冲序列的方式控制步进电机驱动器或伺服驱动器,从而实现对步进电机的位置和速度控制;通过修改定时器值实现梯形加减速轨迹,使步进电机运行具有较好加减速性能;另外,由于STM32F103芯片具有高速定时器,可以通过配置定时器输出和插补运算相结合方法,实现对多轴(多个电机)的控制;该方法对于嵌入式步进电机控制器的开发具有很好的参考价值.【期刊名称】《计算机测量与控制》【年(卷),期】2019(027)009【总页数】6页(P95-99,108)【关键词】机器人;定时器;多路脉冲输出;梯型加减速算法;步进电机控制器【作者】王昊天;于乃功【作者单位】北京工业大学信息学部,北京100124;计算智能与智能系统北京重点实验室,北京100124;数字社区教育部工程研究中心,北京100124;北京工业大学信息学部,北京100124;计算智能与智能系统北京重点实验室,北京100124;数字社区教育部工程研究中心,北京100124【正文语种】中文【中图分类】TP230 引言随着自动化设备和机器人需求的稳步增长,作为它们的关键驱动部件步进电机或伺服电机配套的驱动器及脉冲控制器需求也相应增加,而常用的脉冲控制器一般情况下依靠PLC即可实现,但其在机器人控制中无法灵活使用,所以很有必要开发一款基于STM32的实时定时脉冲发生器。
并且STM32F103芯片也有结构简单[1],成本低廉,占用空间小等诸多优点。
电机起步速度过快时会发生堵转,具体原因是因为由静止状态到动态,如果速度过高的话,会引起各轴之间产生冲击,超程,失步等现象[2],而停止时因为工件在快速运行状态,若突停的话,因机械惯性较大,严重的话会引起机械损伤,或定位不准现象为了使执行机构能平稳定位,就要求电机在开机速度达到给定进给速度的过程中有一个加减速过程,使其能平滑过渡,避免电机速度突变给其带来损伤。
步进电机控制一、电源电路:电源用5V电池供电,转换电路由四个二极管组成,这个设计是为了防止电源正负极接反造成电路烧坏二、最小系统:三、步进电机驱动原理图:四、系统整体原理图:五、问题及解决方法:问题:改变工作方式的时候电机状态改变不明显?解决方法:在程序中增加了速度之间的梯度、改变工作方式的时候电机状态改变明显。
问题:程序没有错误、线路连接正确,电机不转动?解决方法:换了一台试验箱,就可以使电机转动。
问题:改变工作方式的时候电机发出声音?解决方法:在程序中加了一个延时程序、改变工作方式的时候电机正常工作。
六、程序流程图:程序模块:七、实验心得体会:通过这次课程设计,我对步进电机的调速控制系统有了实际的了解和认识,提高了动手能力,加深和巩固了对知识的理解和掌握。
在程序调试的过程中遇到了一些问题,通过与同学讨论将问题解决,在以后的工作中要学会虚心向他人请教。
最后,对张老师表示衷心的感谢,老师,您辛苦了。
八、实验程序:#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar code FFW0[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //四相八拍正转编码uchar code REV0[8]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03}; //四相八拍反转编码uchar code FFW1[4]={0x03,0x06,0x0c,0x09 };//双四拍uchar code REV1[4]={0x09,0x0c,0x06,0x03};uchar code FFW2[4]={0x01,0x02,0x04,0x08 };//单四拍uchar code REV2[4]={0x08,0x04,0x02,0x01};sbit key_7=P2^7;//方向sbit key_6=P2^6;//单四拍sbit key_5=P2^5;//双四拍sbit key_4=P2^4;//四项四拍sbit key_3=P2^3;sbit key_2=P2^2;sbit key_1=P2^1;sbit key_0=P2^0;/*****延迟*****/void delay(uint t){uint x,y;for(x=t;x>0;x--)for(y=110;y>0;y--);}/*****调节转速*****/void timedelay(){if (key_0==1)delay(25);else if (key_1==1)delay(20);else if (key_2==1)delay(15);else if (key_3==1)delay(10);else P1=0x00;}/*****正转*****/void motor_ffw(){uchar i;if(key_6==1){for (i=0; i<4; i++) {P1 = FFW2[i];timedelay();}}else if(key_5==1){for (i=0; i<4; i++){P1 = FFW1[i];timedelay();}}else if(key_4==1){for (i=0; i<8; i++){P1 = FFW0[i];timedelay();}}}/*****反转*****/void motor_rev(){uchar i;if(key_6==1){for (i=0; i<4; i++){P1 = REV2[i];timedelay();}}else if(key_5==1){for (i=0; i<4; i++){P1 = REV1[i];timedelay();}}else if(key_4==1){for (i=0; i<8; i++){P1 = REV0[i];timedelay();}}}/*****主函数*****/void main(){while(1){if(key_7==1)motor_ffw();elsemotor_rev();}}。
基于STM32的步进电机动态加减速控制摘要:步进电机的原理是通过接受电能,将其转化为机械能的控制元件。
为防止步进电机启动和停止时出现冲击而产生失步和震荡的现象,在步进电机的数控系统中,需要使用一种专用的加减速控制算法,通过控制驱动脉冲规律控制步进电机的加减速过程,本文就基于STM32的步进电机动态加减速控制展开探讨。
关键词:步进电机;STM32芯片;加减速控制引言步进电机控制简便,在载荷容限内,转速、转角只取决于输入脉冲信号的频率和数量。
在多步进电机控制系统中,随着控制节点的增多,控制信号及反馈信号大量增加,集中控制体系难以满足实时性、快速性及准确定的要求。
分布式控制系统(DCS)采用微处理器完成控制节点反馈信息处理和控制信号发送,通过现场总线技术实现基于高性能中央微处理机的集中控制及上下位机的实时通信,简化了控制系统,降低控制的复杂性,且能提高系统的稳定性及灵活性。
1总体设计系统以STM32F103RCT6为控制核心,DRV8841芯片为驱动器,完成对二相四线步进电机精确控制。
其中软件采用电机细分控制技术和S曲线加减速算法完成对转速、转角和方向的控制,具体表现为通过改变4路输出SPWM脉冲信号的高低电平、占空比、个数和频率。
当4路SPWM脉冲信号输入到DRV8841驱动器时,将被转化为步进电机4个绕组的电流信号,控制步进电机按设定的方向转动相应角度。
为了达到准确定位的目的,软件通过改变4路SPWM脉冲信号高低电平,个数和占空比分别来控制绕组通电先后顺序和磁场强度,同时为了达到调速的目的,软件通过改变脉冲频率来控制电机转动的速度和加速度。
2系统设计2.1主控站硬件设计主控站主要负责USB协议解析及通信转发,一方面将由上位机通过USB发送而来的数据包进行解析,执行开关量的控制任务、温度检测任务或者直接推送至CAN总线上,另一方面将CAN总线上发送至的数据包直接通过USB转发给上位机。
主要包括了STM32控制模块、电源模块、USB通信模块、CAN通信模块、串口通信模块、温度检测模块及三极管开关模块.CAN主控制站采用STM32系列32位微控制器中的STM32F107VC,该控制器采用Cortex-M3内核,具有高性能、低功耗的优点,工作在72MHz,内部集成了GPIO、CAN、SPI、USART及USB等丰富外设,并采用嵌套向量中断控制器(NVIC),可以实现低延迟的中断处理和高效地处理晚到的中断。
采用STM32控制L6470步进电机驱动器【摘要】常用的步进电机控制器,根据不同的运动方式需要由单片机发出不同频率的和数目的脉冲信号到专用控制芯片,而ST公司的数字控制电机驱动芯片L6470内部数字控制系统可实现完备的运动曲线控制方案,只需要使用单片机发出命令告诉它要怎样运动即可,简化了电路和程序。
【关键词】数字控制内核;微步;STM32;SPI接口步进电机是将电脉冲信号变为电机角位移的或机电执行元件,步进驱动器接收到一个脉冲,电机旋转一个固定的角度,非常适合单片机控制,因此可以用单片机控制脉冲的数量来控制电机的旋转角度,控制脉冲的频率来控制电机的旋转速度,而改变电机电流的方向可以改变电机的旋转方向。
ST公司的L6470省去了单片机的这些工作,单片机只要通过命令告诉L6470以什么样的速度运行到什么位置停止,电机就会在L6470数字内核的控制下按指定方式运行,这些只要发送一个函数命令即可,剩下的就交给L6470去完成。
1.系统原理框图如图1所示,整个系统由4部分组成,电源、单片机(MCU)、L6470、电机,其中电源的24V给L6470的功率驱动电路供电,24V经过DC—DC模块转换为3.3V分别给单片机和L6470的数字控制部分供电。
单片机通过SPI接口控制L6470,而L6470把各种状态位反馈回单片机。
上位机可以通过串口命令控制电机。
2.驱动芯片L6470简介L6470是ST公司生产的新一代两相步进电机驱动芯片,可以在8~45V的宽电压下工作,峰值电流7A(平均电流最大3A)。
内部集成两个低导通电阻的DMOS全桥电路和数字控制内核,可以高效地驱动步进电机,精确的片上电流检测电路有完备的电流控制能力和过电流保护。
独特的控制系统可以把单步细分为最多128微步,使运动效果更平滑稳定。
数字控制内核通过配置制定寄存器能够按照用户定义设置加速、减速、匀速和运动到目标位置等运动方案。
具有完备的过热、欠压、过流、当机、反电动势补偿等保护方案。
实验目的: 利用STM32 来控制步进电机正反转
实验设备:STM32开发板,两相步进电机,24V&5V直流电源,丝杆导轨,DM422C
驱动器
图1 实物图
第一步 弄清楚驱动器接线
1.1 ENA可以悬空
大部分使用者就是将ENA悬空的,就是电机通常不锁轴
1.2 OPTO 是共阳极端
1.2.1 如果用的是AVR ,就直接接到AVR 5V接线柱上。
1.2.2 如果用的是ARM,就将OPTO接到5V 电源上,记得电源要和ARM共
地,这样才能识别接的电源是5V
第二步 弄清楚脉冲的发送形式,即Delay函数作用
清楚脉冲的发送形式,即Delay函数作用,
弄清楚接口由哪个GPIO口控制,然后连接硬件图,
通过电源IO控指示灯检验信号发送:
第三步 主程序
下面这个程序是
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
void Delay (u32 nCount)
{
for(; nCount != 0; nCount--);
}
void GPIO_Config()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC |
RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
int main(void)
{
SystemInit();
GPIO_Config();
while(1){
int i,n=4000;
for(i=0;i
GPIO_SetBits(GPIOC , GPIO_Pin_3);
Delay(0xfff) ;
GPIO_SetBits(GPIOC , GPIO_Pin_2);
Delay(0xfff) ;
GPIO_ResetBits(GPIOC , GPIO_Pin_2);
Delay(0xfff) ;
}
Delay(0xfffff) ;
Delay(0xfffff) ;
Delay(0xfffff) ;
for(i=0;i
GPIO_ResetBits(GPIOC , GPIO_Pin_3);
Delay(0xfff) ;
GPIO_SetBits(GPIOC , GPIO_Pin_2);
Delay(0xfff) ;
GPIO_ResetBits(GPIOC , GPIO_Pin_2);
Delay(0xfffff) ; //增加的数值,会控制发脉冲的速度,从而控制电
机的转速
}
}
}
最后结果是电机启动,快去慢回
图 程序烧写过程图
注意:程序修改后一定要编译一次,或者保存才能烧写进去,不然永远只会是保存或者编
译前的程序。
编译
下载