一种基于STM32单片机的电机控制方法与流程

文档序号:20916056发布日期:2020-05-29 13:32阅读:2272来源:国知局
一种基于STM32单片机的电机控制方法与流程

本发明涉及一种基于stm32单片机的电机控制方法,属于自动控制领域,尤其适用于电机的控制。



背景技术:

伺服电机具有快速加减速的能力,通过高峰值扭矩和高扭矩-惯矩比实现这种能力,在机床和自动机器等传统的动作控制应用中表现出卓越的动力反应和精确度,伺服系统一般由伺服电机、驱动器、控制器组成,控制器通过控制驱动器驱动电机工作,控制器控制驱动器的方式分为三种,速度控制方式、矩阵控制方式、位置控制方式,速度控制方式是通过模拟量的输入或脉冲的频率都可以进行转动速度的控制,在有上位控制装置的外环pid控制时速度模式也可以进行定位,但必须把电机的位置信号或直接负载的位置信号给上位反馈以做运算用,转矩控制方式是通过外部模拟量的输入或直接的地址的赋值来设定电机轴对外的输出转矩的大小,位置控制方式一般是通过外部输入的脉冲的频率来确定转动速度的大小,通过脉冲的个数来确定转动的角度,也有些伺服可以通过通讯方式直接对速度和位移进行赋值,传统的控制器有plc、运动控制卡、计算机,plc多用于工业控制,体积比较大,控制简单,运动控制卡、计算机多为通用控制,需要进行二次开发,体积也比较大,用到产品上几乎不可能,而本发明则是一款基于stm32系列单片机的控制方法,利用stm32单片机的定时器设置主从定时器,主定时器用于计数,从定时器输出脉冲,控制电机运动。可以根据自己产品的需求制定控制方案,小巧实用。



技术实现要素:

本发明的目的是通过以下技术方案实现的。

本发明提供一种基于stm32单片机的电机控制方法,其特征在于包括,

stm32单片机连接到电机驱动器;

电机驱动器连接到电机;

将电机的运动曲线转换为单片机输出频率和脉冲数;

将stm32单片机的通用定时器和/或高级定时器定义为主定时器;

将stm32单片机的通用定时器和/或高级定时器定义为从定时器;

从定时器以设置的频率输出脉冲,主定时器计数;

达到设定计数值时,主定时器中断,进入主定时器中断函数,修改从定时器的输出频率,从定时器按照修改后的输出频率输出脉冲到电机驱动器,控制电机运动。

根据优选的实施方式,所述电机为伺服电机、直线电机、步进电机中的一种。

根据优选的实施方式,设定主定时器与从定时器指的是,设定多个定时器的主从关系,主定时器设置为捕获模式,从定时器设置为输出脉冲模式;设定从定时器的初始频率。

根据优选的实施方式,stm32单片机指的是stm32f1,stm32f4系列所有型号的单片机。

根据优选的实施方式,stm32通过can通讯方式与外部通讯。

本发明提供一种基于stm32的电机控制方法,其特征在于包括,

stm32单片机连接到驱动器,驱动器连接到电机;

将单片机的通用定时器和/或高级定时器指定为主定时器以及从定时器;

从定时器以设置的频率输出脉冲,主定时器计数;

达到设定计数值时,主定时器中断,进入主定时器中断函数,修改从定时器的输出频率,从定时器按照修改后的输出频率输出脉冲到电机驱动器,控制电机运动。

本发明公开一种基于stm32单片机的电机控制方法,包括以下步骤:

步骤a:单片机与外部设备通过can收发器连接,并启动;

步骤b:用户根据需求输入初始速度、加速度、最大速度及运行距离参数;

步骤c:单片机依据用户输入的参数计算出运动曲线的每次加减速的频率值、脉冲值;

步骤d:单片机启动主定时器,主定时器触发从定时器以初始频率值输出脉冲;

步骤e:主定时器对从定时器输出的脉冲进行输入捕获,当输出脉冲值与计算的输出脉冲值相同时,主定时器中断,进入中断函数中,修改从定时器的输出频率,从定时器则继续按照修改后的频率值输出脉冲;

步骤f:从定时器的输出脉冲控制电机运动。

本发明的目的在于提供一种自由灵活、小巧、简单的适用于产品上的一种电机驱动器的控制方法,使用的单片机选用st公司的stm32f1系列,是一款性价比超高的单片机,功能强大,价格低廉,是市面上使用非常广泛的一款单片机,使用单片机控制伺服驱动器,使得伺服系统的使用更加轻便,它的超高动力反应和精确度可以在非工业设备中得以实现,常规控制使用的是一个定时器通过不断的中断改变输出电平完成控制,造成单片机内存独占、浪费,并且输出频率只能在10khz以下,对于频率高的伺服电机是无法满足速度需求的。一种基于stm32单片机的电机控制方法区别于常规控制中通过一个定时器的连续的中断去中断函数中修改频率和脉冲值,频率高时会导致单片机内存被占满,其他功能无法进行。

使用一个定时器控制电机,是通过定时器的每次中断去改变io输出电平,输出脉冲,缺点是频繁的中断会占用单片机的大量内存,其他功能无法进行,并且输出频率最高只能达到10khz左右,对于伺服这样高频的脉冲需求是不能满足要求的。

主从方式控制电机,并不占用单片机的资源,只是通过一个定时器去触发另一个定时器,从定时器持续输出脉冲,主定时器使用捕获功能进行中断,只有在调速的时候进一次中断配置从定时器的输出脉冲频率。

本发明是基于stm32单片机独有的定时器触发模式功能,主定时器用于计数,即pwm脉冲的捕获计数,从定时器用于输出一定频率的pwm脉冲,这里调速的实现是调整从定时器输出pwm的频率,主定时器计满预定的脉冲数后触发从定时器中断,进行改变输出pwm的频率(如果调速),清除主定时器的计数再次重新计数,如此反复直到运行结束。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。在附图中:

附图1.梯形速度曲线图;

附图2.电机控制流程图;

附图3.实际测试波形图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

除特殊说明外,本发明中所涉及的词语均为本领域的常规词语,其含义为本领域的常用含义。

用stm32单片机驱动电机属于常见的方法。can是controllerareanetwork的缩写(以下称为can),是iso国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个lan,进行大量数据的高速通信”的需要。can属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之许多rs-485基于r线构建的分布式控制系统而言,基于can总线的分布式控制系统具有明显的优越性。

本发明提供一种基于stm32的电机控制方法,其特征在于包括,

stm32单片机的gpio引脚连接到驱动器,驱动器连接到电机;

stm32单片机输出脉冲到驱动器,驱动器依据脉冲频率及数量提供电机的动能和旋转角度。

用户输入初始速度、加速度、最大速度及运行距离,stm32单片机通过输入参数计算出加减速运动轨迹,得到每次加速的输出频率以及脉冲数;

配置主定时器与从定时器,启动;

这里的定时器指的是stm32的定时器,stm32f1系列单片机有很多个定时器,2个基本定时器、4个通用定时器及2个高级定时器,定时器功能有很多,本发明中主要使用其主从功能,主定时器使用捕获功能,从定时器使用pwm生成功能,这里仅通用定时器和高级定时器具有主从功能;

定时器的功能有计数功能、输入捕获功能、输出比较功能、pwm生成、主从功能(一个定时器控制另一个定时器)、触发事件。

从定时器以设置的频率输出脉冲,主定时器计数;

达到设定计数值时,主定时器中断,进入主定时器中断函数,修改从定时器的输出频率;

从定时器按照修改后的频率输出脉冲控制电机运动。

stm32的定时器有2个基本定时器、4个通用定时器及2个高级定时器。定时器功能有很多,本发明中主要使用其主从功能,主定时器使用捕获功能,从定时器使用pwm生成功能,这里仅通用定时器和高级定时器具有主从功能;

根据优选的实施方式,本发明中,本发明中的主定时器和从定时器指的是一个主定时器和一个从定时器。用主定时器计数,从定时器输出脉冲。从而达到主定时器控制从定时器,从而控制电机的目的。

根据优选的实施方式,设置通用定时器或者高级定时器中的一个定时器为主定时器,在通用定时器和高级定时器剩余中,设置一个定时器为从定时器。

根据优选的实施方式,单片机通过io引脚连接到驱动器的信号输入口。

本发明中,所述的驱动器指的是电机驱动器。一般的电机的驱动都需要驱动器,这属于本领域的常规知识。

一种基于stm32单片机的伺服驱动器控制方法,其步骤为:

初始化,设定伺服电机的初始速度、加速度、最大速度、速度保持时间,这些值为已知量根据实际系统的需要进行设定;

运动轨迹计算,输入运动距离参数,并通过最大速度和最小速度及加速度计算出运动轨迹相关参数,加速(减速)次数参数、匀速运行距离参数和匀速度参数,如果运行距离比较长则可以达到预定的最大速度,如果运行距离比较短,则不能达到设定的最大速度,但是速度曲线仍为梯形加减速曲线,通过调整加速度改变加减速斜率,运行距离、最小速度、最大速度、加速度均影响着加减速曲线,在使用过程中根据需要进行参数调整,实现完美控制;

启动,将初速度转换成脉冲频率,乘以速度保持时间,得到本次运行的脉冲数,赋值给stm32的计数器(主定时器),将初速度转换成频率值,根据stm32的定时器频率,计算出pwm的周期值(从定时器),并设置占空比为50%,启动从定时器开始输出pwm;

加速,当进入加速阶段,速度等于当前速度加上加速度,调整速度值,重复步骤3;

匀速,如果存在匀速期间,则保持速度不变,重复步骤3;

减速,当进入减速阶段,则速度等于当前速度减去加速度,调整速度值,重复步骤3;

停止,如果运行距离结束,停止输出pwm,运动结束。

本方法中mcu输出的pwm频率值范围1hz~10mhz,宽范围的输出频率,即适用于低频的步进电机控制,又适用于高频脉冲控制的伺服电机,适用范围非常广泛。

上面所述的方式,实质上同前面的方法是完全一样的。区别在于其运动路径包括了更加复杂的曲线。

根据优选的实施方式,本发明中所述的伺服电机与直线电机是可以替代的。两种电机的控制原理在这里是通用的。

实施例1

如图1为梯形速度曲线图,即匀加速运动,tacc为加速时间,对应的运行距离为加速距离,tdec为减速时间,对应的运行距离为减速距离,中间阶段为匀速阶段,全过程包含了加速、匀速、减速,并且加速与减速过程完全对称。流程参见图2。下面对具体实施例进行详细描述。

初始化:

设置初速度为vmin,加速度为vacc,最高速度为vmax,运动保持时间为t;

运动轨迹计算:

输入参数为运行距离,设定为s;

速度曲线为梯形图曲线,所以加减速阶段完全对称,加速次数=减速次数=nacc,nacc=(vmax-vmin)/vacc;

加速度=vacc;

第一次运行速度v1=vmin,运行距离s1=v1*t;

第二次运行速度v2=vmin+vacc,运行距离s2=v2*t;

第三次运行速度v3=v1+vacc,运行距离s3=v3*t;

第nacc次运行速度vnacc=vnacc-1+vacc,运行距离snacc=vnacc*t;

匀速度=vnacc(当前最大速度),运行距离s匀=s(s1+s2+s3…+snacc)*2;

启动:

根据实际驱动器及运动机构会得到已知参数每运行1mm的脉冲数值为p;

第一次运动总脉冲值vp=(vmin*p)*t;

计数器的计数值=vp;

pwm的频率时钟=单片机主频/(vmin*p);

启动主定时器开始输出pwm;

加速:

第一次脉冲数运行结束后,进入调速,将计算得到的速度值和脉冲值重复步骤3,直到第nacc次,加速完成;

匀速:

加速阶段完成后,进入匀速阶段,将计算得到的速度值和脉冲值重复步骤3,直到匀速完成;

减速:

匀速阶段完成后进入减速阶段,减速过程与加速过程正好相反,第一次减速速度值=匀速速度值-vacc,脉冲值=当前速度*t,以此类推下次运行的速度=当前速度-vacc,直到减速完成;

停止:

减速完成后,停止运动,停止输出pwm。

如图3为具体实施例测试的波形图,图中的c1为控制脉冲波形,f1为梯形曲线趋势图,这里设置的初始速度为2khz,最大速度为20khz,加速度为2000khz,运动保持时间为1ms,运行距离设置为800,使用的伺服控制器为松下的a6系列,电机旋转一圈需要10000脉冲,丝杠的导程为4mm,800脉冲转换为直线距离为0.32mm,通过公式转换可实现将脉冲和频率转换为直线距离和速度,图3为使用示波器测试得到的脉冲频率和数值,最小频率值为2khz,最大频率值为20khz,脉冲总数为800个,与设置的相同。图3中脉冲频率根据运动的加减速是首先加密,然后稀疏的状态,这跟图片1中运动曲线的加速度也是对应的,图3中的c1为示波器采集到的输出脉冲,f1为脉冲频率的趋势图,从图中可以看出脉冲的频率为梯形加减速曲线,实测的最小频率值为1.99999khz,与我们设置的2khz初始频率相同,实测的最大频率为20.02khz,与我们设置的最大速度频率值20khz相同。

在本发明公开内容的基础上,更加复杂或者距离更远的控制方式是很容易的。可以理解的是,具体实施例是对于本发明权利要求的细节的进一步解释,同本发明权利要求限定的技术方案是一致的。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1