基于STM32的运动控制器设计.docx
- 文档编号:27947554
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:29
- 大小:1.20MB
基于STM32的运动控制器设计.docx
《基于STM32的运动控制器设计.docx》由会员分享,可在线阅读,更多相关《基于STM32的运动控制器设计.docx(29页珍藏版)》请在冰豆网上搜索。
基于STM32的运动控制器设计
基于STM32的运动控制器设计
基于STM32的运动控制器设计
指导教师梁维源
摘要
运动控制器是现在社会的主流发展,不管是现在还是将来都会有重要的运用。
本文运用STM32输出PWM波对电机进行控制使他们能分别沿着X轴和Y轴以及Z轴移动,STM32发送指令,由TB6560驱动芯片驱动进电机,在图纸上实现绘画,定位,转孔。
选用STM32芯片作为控制核心,通过控制步进电机来控制机器臂,带动X轴和Y轴以及Z轴进行平面画图。
该运动控制器具有精度高、操作方便、速度快、低成本等特点。
关键词:
运动控制器;STM32;步进电机;TB6560
BasedontheSTM32motioncontrollerdesign
Electronicinformationengineeringspecialtylevel2011jiangshijian
SupervisorLiangWeiyuan
Abstract
Themotioncontrollerisnowthemainstreamofthedevelopmentofsociety,bothnowandinthefuturewillhaveimportantapplications.Greatdefenseandindustrialapplicationsaswellasinlife.Inthispaper,theoutputPWMwaveSTM32motorcontrolsothattheycanalongtheX-axisandY-axisandZ-axismovement,STM32sendcommandsrespectively,drivenbyasteppingmotordriverchipTB6560realizepainting,positioning,turntheholeinthedrawings.TheprogrammakestheselectionSTM32chipsteppermotorcontrolsystembycontrollingthesteppermotortocontroltheroboticarmfromthedrivetotheXandYandZaxisplanedrawing.Themotioncontrollerwithhighprecision,easyoperation,fast,lowcost.Hasgreatdevelopmentprospects.
Keywords:
MovementControlSystem,STM32,Steppingmotor,TB6560
前言
自从运动控制器诞生以来,它不仅推动了社会的发展,也推动了新的技术革新。
运动控制器是美国政府对“NGC”项目,这是下一代控制器开始,进而研究机构已开始对运动控制研究。
随后运动控制器迅速发展,直到今年来运动控制技术不断被完善改良,已经成为一个独特的体系。
就目前国类而言只要分为三类。
第一种是用单片机或微处理器当作中枢的控制器,这类运动控制器的运转速率较慢,精度不高,成本相对于其他控制器较低,在一些只需要低速运功控制和对轨迹要求不高的轮廓控制场合应用[1]。
第二种是用专用芯片(ASIC)当作中枢的控制器,这类控制器构造单一,然而大多数只可输出脉冲信号。
由于该控制器能够提供高速的连续插值,没有前瞻性功能(看头),特别是对于连续加工场合中存在大量的小片段,使用这种控制器不合适。
第三种是基于PC总线的以DSP和FPGA作为核心处理器的开放式运动控制器。
这种运动控制器用DSP芯片当作中枢的控制器,以PC机作为信息处理平台,运动控制器以插卡方式式嵌入PC机,以“PC+运动控制器”的形式。
这类运动控制器完美使用了李永乐DSP的高速数据处理能力和FPGA的超强逻辑处理能力,便于设计出效果完美、性能优优质的运动控制系统。
相对的,我们可以选择适当的方案设计自己产品。
第一章运动控制器的总设计方案
经过查找资料,并选择了其中的一种优质方案设运动控制器的设计方案。
利用步进电机,STM32最小系统以及矩阵按键搭建一个智能用于运动控制器的平台,人通过控制按键输入指令让STM32控制芯片控平台上的三只电机完成相应的功能。
在控制器的运动平台上,传动方向为Y轴电机固定在平台上,用一个电机控制水平面平台板沿X轴运动,将Z轴方向的电机固定在Y轴电机的位移片上来实现X,Y,Z三个方向的位移来实现绘图,其中通过控制Z步进电机的位移来控制笔的起落,控制X轴和Y轴的电机来控制笔的平面运动轨迹,同样也可实现空间立体画图。
整个系统基本上就分为三个模块,电机驱动、电路控制和机械运动两个部分。
电机驱动电路和STM32最小系统是电路的重要组成部分。
按键模块的主要作用就是向控制芯片输入相应的控制指令,通过按键来选择相应的指令,这些按键的内容是和控制器运动相对应的。
TB6560驱动模块主要目的就是驱动步进电机运行进而实现图案的规划,Z轴的起落控制达到控制绘图笔起笔落笔的控制。
机械部分主要由步进电机驱动的玻璃板和机械手。
在每个坐标轴的的的两端都安装了行程开关,使控制臂滑动到尽头时能够停止,对平台具有保护作用。
同时也可以实现自检和找回原点的功能。
每个滑片在滑轨上滑动,当滑动到滑轨尽头就会碰到开关,这时就会给使STM32发出一个反转信号,接着STM32控制电机反转,机器臂找到原点。
支架上的Z轴底部固定有一支画笔,Z轴电机通电的时,通过STM32控制Z轴机械臂来控制抬笔和落笔。
这个动作可以适当添加一个开关来判断是否停止笔的下落。
通过X/Y/Z轴的机械通过程序控制步进电机电机的转与不转,运动速度的快慢不同,使笔在纸上画出不同的轨迹,写出要求的英文和汉字。
运动控制器的机械结构,包括三维平台,X/Y/Z坐标尺,Z、Y、Z坐标尺驱动螺杆驱以及动步进电机MZ,MX和MY。
控制器和STM32最小系统接口,如图1.1所示:
图1.1运动控制器机械原理
从图中可以看出,Z轴的最低端的位置就是放置绘图笔位置。
通过控制3个步进电机的运动,使螺杆驱动的两个运动的标尺,而让画笔描绘轨迹在绘图板上,并最终实现绘图功能。
第二章运动电路控制器三维平台设计
2.1硬件设计框图
图2.1系统框图
2.2运动电路控制控制电路图
本设计的控制模块实物图如图2.2所示。
图2.2控制模块实物图
2.3运动控制器机械运动电路图
三维运动控制工作台由X轴滑台,Y轴划台以及Z轴滑台以及绘图笔组成。
三个方向的运动都具有具有独立性,这样方便控制。
根据设计要求绘图的的要求的精度和图形。
其中控制模式是用指令控制机械手臂,处理X-Y-Z平台上的三个坐标轴方向的动态定位来实现精度控制画图。
结构示意图和实际图如2.3图所示:
Z轴步进电机
图2.3机械臂结构图
第三章运动控制器的硬件设计
3.1步进电机
3.1.1主要构造
人们早在20世纪20年代就开始使用这类电机。
不管是在社会还是在国防上,只要有使物体产生运动的,将主要使用步进电机作为驱动力。
随着社会的发展,步进电机的规模也越来越大,但是无论怎样,他们可以按照自己的生产类型分为:
可变磁阻步进电动机及永磁步进电机。
步进电机是由一组缠绕在电机固定部件--定子齿槽上的线圈驱动的。
通常情况下,一根绕成圈状的金属丝叫做螺线管,而在电机中,绕在齿上的金属丝则叫做绕组、线圈、或相。
3.1.2步进电机分类
步进电机分为:
永磁型(PM),反应型(VR)和混合型(HB)等三种。
永磁型:
步进大多是二相的步进电机,且转角多为7.5度和15度。
反应型:
步进大多为三相的步进电机,可实现大转矩输出,步进角多为为1.5度,但电机的使用存在许多的环境问题,因此在欧美等发达国家80年代已被裁汰。
混合式步进:
是指结合了永磁式和反应式两种步进电机的优点。
它又分为两相和五相:
两相步进角一般为1.8度而五相步进角一般为0.72度。
这种步进电机的应用最为广泛。
本文选用此种步进电机,型号17HD0044-01,即通常所说的42步进电机。
42步步进电机如图3.1所示。
图3.1步进电机
3.1.3步进电机工作原理
通常电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。
该磁场会带动转子旋转,使得转子的一对磁场方向与定子的磁场方向一致。
当定子的矢量磁场旋转一个角度。
转子也随着该磁场转一个角度。
每输入一个电脉冲,电动机转动一个角度前进一步。
它输出的角位移与输入的脉冲数成正比。
改变绕组通电的顺序,电机就会反转。
所以通过控制脉冲数量和电动机各相绕组的通电顺序来来使步进电机精准定位。
步进电机工作原理图如图3.2所示。
图3.2步进电机工作原理图
3.1.4步进电机的特点
主要特点:
1、高精度,且不累误差。
2、步进电机外表允许的最高温度。
步进电机的最高温度取决于电机磁性材料的退磁点;大多数磁性材料的退磁点都在摄氏130度以上,有的更高。
所以步进电机相对来说具有好的适应条件。
3、电机随着转速的增加,会使步进电机的转矩减小。
当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。
在它的作用下,电机随速率的增大,都会导致力矩下降低。
4、因为步进电机的转矩很小,所可以控制电机进行低速运转。
3.1.5步进电机的控制方法
步进电机按照相数来分可分为三相,四相,五相等多种。
相数越多他的工作方式也就越多,能够达到的精度也就越高。
我们都知道步进电机是通过控制里面的相来控制电机的步进角的。
因此,我们只需要控制电机中的相数和通电规律就可以控制电机运转速度以及方向。
步进电机的控制规律如表3.1所示:
表3.1通电规律表
相数
循环拍数
通电规律
相三
单三拍
双三拍
六拍
A→B→C→A
AB→BC→CA→AB
A→AB→B→BC→C→CA→A
四相
单四拍
双四拍
八拍
A→B→C→D→A
AB→BC→CD→DA→AB
A→AB→B→BC→C→CD→D→DA→A
AB→ABC→BC→BCD→CD→CDA→DA→DAB→AB
五相
单五拍
双五拍
十拍
A→B→C→D→E→A
AB→BC→CD→DE→EA→AB
A→AB→B→BC→C→CD→D→DA→A→AB
3.2STM32F103VET6
随着社会的发展,以Cortex-M3作为内核的STM32系列芯片,以价格便宜,功能强大,操作简单而得到越来越多的运用。
跟以往的单片机相比具有明显的优势。
因为本设计要求的功能并不是很多,所以选用STM32F103VET6来控制完全能够胜任本设计的需求。
3.2.1STM32F103VET6最小系统
STM32F103VET6最小系统配置介绍:
1、CPU型号:
STM32103VET6(LQFP100封装)(兼容所有STM3210Vx型号)FLASH512KBRAM64KB空间够大了能跑UCOSUCGUILWIPUIP等等大型的协议栈
2、所有IO引出(上层用端口号标识,下层用端口号与端口第二功能标识方便用户调试第二功能IICSPIADUSART省去大量翻阅文档时间,且在跳线时不易出错)
3、一个开关按键
4、一个电源指示灯(红色)
5、一个复位脚
6、一个MINIUSB接口供电与USB-Slave通讯
7、一个标准JTAG接口ULINK2与JLINKV8仿真(JTAGSWD支持)
8、串口下载跳线选择冒(选择方式可以通过板上丝印方便选择)
9、对外有3路3.3V供电排针一路5V供电排针多个GND排针
10、2路FSMC总线引出可以同时调试2个TFT屏也可以同时调试其他总线方式的外设
11、所有IO口的丝印全部标注【正面标注IO口反面标注IO口和第2功能方便调试SPIIICUSARTAD等功能无需对照PDF找IO功能】全镀金排针
12、多个定位孔,可以外挂多种TFT(有多个定位孔预留用户可以自行搭配)并兼容火牛开发板TFT接口以及定位孔。
13、CPU引脚每10个用数字标识(某些情况用的到)
14、2路LED用户指示灯(红色),通过一个共用跳冒接地,这样单独调试LED功能,当调试其他需要此IO口时可以把跳冒取下,不容易干扰其他功能。
15、J04(TX1RX13.3VGND)单独引出,方便连接外设串口设备,以及调试或者下载程序用。
[2]
3.3.2STM32F103VET6定时器
区别于SysTick一般只用于系统时钟的计时,STM32的定时器外设功能强大得超出了想像力,《STM32参考手册》中仅对定时器的介绍就已经占了100多页。
STM32一共有8个定时器。
并且都为16位的定时器。
其中TIM6、TIM7是基本定时器;功能比较少。
TIM2、TIM3、TIM4、TIM5是通用定时器用的比较多;TIM1和TIM8是高级定时器。
这些定时器使STM32具有定时、信号的频率测量、信号的PWM测量、PWM输出等功能。
这就使得STM32对社会中的许多的设计都可以用到。
3.3.2.1基本定时器
基本定时器TIM6和TIM7,这两个定时器只具备最基本的定时功能,就是累加的时钟脉冲数超过预定值时,能触发中断或触发DMA请求。
由于在芯片内部与DAC外设相连,可通过触发输出驱动DAC。
也可以作为其它通用定时器的时钟基准。
见图3.3。
图3.3基本定时器结构图
这两个基本定时器使用的时钟源都是TIMxCLK,时钟源经过PSC预分频器输入至脉冲计数器(TIMx_CNT),基本定时器只能工作在向上计数模式,在重载寄存器(TIMx_ARR)保存的是定时器的溢出值。
工作时,脉冲计数器TIMx_CNT由时钟触发进行计数,当TIMx_CNT的计数值X等于重载寄存器TIMx_ARR中保存的数值N时,产生溢出事件,可触发中断或DMA请求。
然后TIMx_CNT的值重新被置为0,重新向上计数。
3.3.2.2通用定时器
相比之下,通用定时器TIM2~TIM5,就比基本定时器复杂得多了。
除了基本的定时,它主要用在测量输入脉冲的频率、脉冲宽与输出PWM脉冲的场合,还具有编码器的接口。
见图3.4所示。
图3.4通用定时器结构图
3.3.3.3高级定时器
TIM1和TIM8是两个高级定时器,它们具有基本、通用定时器的所有功能,还具有三相六步电机的接口,刹车功能(breakfunction)及用于PWM驱动电路的死区时间控制等,使得它非常适合于电机的控制。
如图3.5所示。
图3.5高级定时器结构图
3.3TB6560步进电机驱动器
3.3.1TB6560步进电机驱动模块
TB6560步进电机驱动模块如图3.6所示。
图3.6TB6560步进电机驱动模块实物图
TB6560步进电机驱动器接口表4.1:
接口
作用
J2
驱动器和控制端的接口
+5V
接图中的控制电源正
CLK
接来自控制端的脉冲信号,可以是普通IO或PWM信号。
DIR
接来自控制端的方向控制信号,可以是普通IO。
ENA
接来自控制端的使能控制信号,可以是普通IO。
J3
输出电机接口
3.3.2TB6560步进电机驱动器特点
1、此驱动器采用原装进口的TB6560AHQ芯片设计。
2、具有高集成度高可靠性的两相步进电机驱动器。
3、接口采用光耦隔离,抗高频干扰能力强。
4、最高输入电压:
DC35V(峰值)。
5、最高驱动电流3.5A(峰值)。
3.3.3TB6560步进电机驱动器功能
1、细分有整步、二细分、八细分、十六细分可调。
2、输出电流0.5-3A。
3、7档可调(电流请在断电下设置)。
4、芯片具有过热自动保护功能。
5、电机停止时自动半流锁定。
6、衰减4档可调。
7、电源、运行、保护状态指示(红色为电源和保护,绿色为
电机运行)。
8、支持待机状态和电机锁定功能。
第四章运动控制器的软件设计
运动控制器的系统绘图流程如图10所示。
图4.1运动控制器系统绘图流程图
4.1PWM概述
4.1.1PWM简介
脉冲宽度调制(PWM),是英文“PulseWidthModulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制技术。
简单一点,就是对脉冲宽度的控制。
然而这种技术因为灵活,简单而得到了广泛的运用,特别是现在在运动控制器中有大量的运用。
并且拥有广阔的前景。
所以对于PWM波的控制输出学习和研究是必不可少的。
4.1.2PWM实现
STM32的定时器除了TIM6和TIM7。
其他的定时器都可以用来产生进行PWM输出。
其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。
而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出!
所以在这里,我们有足够的定时器来产生大量的PWM脉冲。
但是要使STM32的通用定时器TIMx产生PWM输出,我们要分别要给TIMx配置复用输出的I/O和输出PWM信号模式(如周期、极性、占空比):
1.开启给TIMx时钟并对相应I/O进行配置
配置TIMx时钟的I/O时要注意引脚的定义。
2.设置TIMx的ARR、PSC和CounterMode。
设置TIMx的重载寄存器(ARR)和预分频值(PSC)来确定PWM的周期。
周T=(TIMx_ARR+1)*时钟周期,时钟周期t=TIMx_CLK/CK_PSC,其中TIMx_CLK=72KHZ。
TIM_CounterMode为定时器的计数方式。
分为向上计数和向下计数。
3.给设置TIMx配置输出通道和通道的PWM模式
设置TIMx配置输出通道即为设置TIMx_OCx其中OCx中x即为几号通道,不同的定时器的个数不同所以他的取值也会有所不同,不同的通道对应着不同的I/O口。
而配置PWM的输出就是配置TIM3_CCMRx的值来配置模式,而PWM模式有两种。
两种情况可以根据自己的需求来配置。
4.修改TIMx_CCRx来控制占空比。
设置TIMx_CCRx来设置PWM的占空比及设置一个PWM周期中有效电平的占总周期的比率来改变波形。
5.使能TIMx的CHx输出,开启使能TIMx。
当我们将以上的配置配置好以后,只要打开时钟使能就可以将PWM波按照设置的频率从配置的通道(端口)输出。
4.2.设计要求
使用STM32开发板,编写程序,实现对三维运动平台的运动控制。
要求:
(1)能控制X轴、Y轴、Z轴步进电机精确定位,重复定位精度优于2mm;
(2)能控制高速直流电机画一个矩形(长×宽=20cm×15cm);
(3)进一步提高定位精度,如优于0.5mm。
(4)保证精度前提下,提高定位的速度;
4.3程序的配置
通过对STM32F103VET6芯片的定时器、TB6560步进电机驱动器以及步进电机的了解,并结合本设计的要求我选择STM32F103VET6芯片的TIM2定时器作为步进电机的脉冲输入。
在这过程中使用库函数来进行相应的配置。
但是要完成电机配置要分两步。
首先配置PWM波输出,再配置电机绘图程序。
4.3.1.PWM波输出的配置
首先,开启TIM2定时器,并配置TIM2中的第一个通道的I/O口为复用推挽输出。
其中第一通道对应PA.0,。
这些通道和引脚是相对应的,不可更改的。
(查看STM32引脚手册)且I/O得时钟为50KHZ.这样就完成了时钟TIM2的I/O配置。
代码如图7.1所示:
图4.1PWM端口配置程序图
接下来就要配置输出的PWM形式。
经过TB6560芯片手册我们可以知道TB6560芯片的最大的脉冲输入为15KHZ,所以我们要配置的PWM波的频率要小于15KHZ才不至于烧坏芯片。
所以跟据PWM波的计算方法配置出TIM_Period=7199(TIM2_ARR)和TIM_Prescaler=0(CK_PSC)并配置计数模式为向上计数(库函数里有直接的配置,所以直接调用)。
然后在配置PWM的输出模式为第一种模式(PWM1),及向上计数时高电平有效。
再把占空比设置为50%。
配置结束后再开启TIM2的使能就可以通模拟看到PA.0三个端口的PWM形了。
然后可以根据相同的工作原理配置定时器TIM3和TIM4,TIM3定时器为Y轴电机的驱动脉冲,TIM4定时器为Z轴的驱动脉冲。
代码如下图7.2和7.3
图4.2PWM占空比
图4.3PWM通道配置
4.3.2绘图控制程序的配置
配置了PWM波的输出,就已经配置好了步进电机的脉冲信号了。
但是要想实现电机的精确控制是不够。
通过TB6560接口表格我们可以知道仅有脉冲是无法使电机转起来的。
还需要一个方向控制端DIR(低电平正转,高电平反转)和使能控制端ENA(低电平电机停止,高电平运行)。
下面就是配置这写端口,配置原理给配置TIM2的I/O是一样的原理。
配置代码如下所示:
图4.4步进电机方向使能端口配置图
由步进电机的控制和原理我们知道给一个脉冲步进电机走一个步进角。
我们这用的是42步二相四线电机。
由此可知每一步是1.8度角走完一圈需要360/1.8=200步,也就是说200个脉冲可以使电机旋转一周。
而根据控制臂旋转一周的精度为1mm。
由计算可得X轴步进电机需要200*200=40000个脉冲才可以走到20cm处,而Y轴需要150*200=30000个脉冲才能走到15cm。
由此可以我们需要配置定时器的脉冲个数来实现精准的定位。
而在这里有两个方案:
一个是定时器同步来实现,及将一个定时器镶嵌在另一个定时器中来控制脉冲个数的输出。
第二个是将定时器的中断打开,然定时器每输出一个脉冲计数一次,在达到规定的次数后关闭计时器从关闭脉冲数来控制。
相对来说用中断实现的误差小,因此选用第二个方案。
接下来就是配置定时器中断的配置,配置中断跟配置PWM差不多,只是配置的函数发生变化。
先打开你要设定定时器的中断NVIC_IRQChannel。
然后在配置中断函数的优先级,优先级有抢占优先级和响应优抢占优先级在响应优先级之前。
先判断抢占优先级再判断响应优先级。
优先级数字越小等级越先被选则,在开启中断定时器处于准备状态。
TIM2的相关配置如图7.5:
图4.5时钟中断配置图
同样TIM3和TIM4也是一样的配置方法。
在配置中断服务函数就可以准确的确定脉冲个数了。
中断服务函数中设定要运行的步,脉冲累计数达到设定数就关闭时钟使能。
来控制如图7.6所示:
图4.6时钟中断服务配置图
当这些关键配置设定好以后,将这些调用起来就可以跟据要画的轨迹配置电机的运动轨迹了!
当我们把所需要的参数输入进去就可以实现然STM32控制电机实现相应的功能,通过控制DIR来控制正反方向。
在所要运行的方向的函数中输入自己的函数就可以实现电机按照自己的要求实现功能!
总结
经过两个月的毕业设计工作终于完成了自己的毕业设计,在这期间我虽然感觉很累,但是每次的劳累都有收获,同时也学到了许多以前没有学过的知识,也对以前一些模糊的知识进行了补充。
也让我知道每一次的一点点小错误会积累成大的错误!
一个小小的粗心就会使整个的劳动成果泡影。
在以后的学习路要学会更加的细心和思考。
从毕业设计中,学到了STM32的内部结构及其工作原理,了解了时钟电路和控制电路的工
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 运动 控制器 设计