伺服电机控制器设计.docx
- 文档编号:15423202
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:15
- 大小:1.46MB
伺服电机控制器设计.docx
《伺服电机控制器设计.docx》由会员分享,可在线阅读,更多相关《伺服电机控制器设计.docx(15页珍藏版)》请在冰点文库上搜索。
伺服电机控制器设计
伺服电机控制器设计
1实验目的
(1)掌握对输出脉冲的频率和个数的控制;
(2)实现对伺服电机梯形速度控制功能。
2实验任务
(1)运用位置控制指令函数设置加减速时间;
(2)调节伺服电机的启动频率和最高频率。
3实验说明
(1)伺服电机
伺服电机(sermotor)是指在伺服系统中控制机械元件运转的发动机,是一种补助马达间接变速装置。
伺服电机可使控制速度,位置精度非常准确,可以将电压信号转化为转矩和转速以驱动控制对象。
伺服电机转子转速受输入信号控制,并能快速反应,在自动控制系统中,用作执行元件,且具有机电时间常数小、线性度高、始动电压等特性,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。
分为直流和交流伺服电动机两大类,其主要特点是,当信号电压为零时无自转现象,转速随着转矩的增加而匀速下降。
(2)伺服驱动器
伺服驱动器(servodrives)又称为“伺服控制器”、“伺服放大器”,是用来控制伺服电机的一种控制器,其作用类似于变频器作用于普通交流马达,属于伺服系统的一部分,主要应用于高精度的定位系统。
目前主流的伺服驱动器均采用数字信号处理器(DSP)作为控制核心,可以实现比较复杂的控制算法,实现数字化、网络化和智能化。
功率器件普遍采用以智能功率模块(IPM)为核心设计的驱动电路,IPM内部集成了驱动电路,同时具有过电压、过电流、过热、欠压等故障检测保护电路,在主回路中还加入软启动电路,以减小启动过程对驱动器的冲击。
功率驱动单元首先通过三相全桥整流电路对输入的三相电或者市电进行整流,得到相应的直流电。
经过整流好的三相电或市电,再通过三相正弦PWM电压型逆变器变频来驱动三相永磁式同步交流伺服电机。
功率驱动单元的整个过程可以简单的说就是AC-DC-AC的过程。
整流单元(AC-DC)主要的拓扑电路是三相全桥不控整流电路。
随着伺服系统的大规模应用,伺服驱动器使用、伺服驱动器调试、伺服驱动器维修都是伺服驱动器在当今比较重要的技术课题,越来越多工控技术服务商对伺服驱动器进行了技术深层次研究。
伺服驱动器是现代运动控制的重要组成部分,被广泛应用于工业机器人及数控加工中心等自动化设备中。
尤其是应用于控制交流永磁同步电机的伺服驱动器已经成为国内外研究热点。
当前交流伺服驱动器设计中普遍采用基于矢量控制的电流、速度、位置3闭环控制算法。
该算法中速度闭环设计合理与否,对于整个伺服控制系统,特别是速度控制性能的发挥起到关键作用。
关于本实验所用伺服驱动器,以下是其参数选择说明。
伺服驱动器需要设置6个参数,分别为pr0.00*、pr0.01*、pr0.05*、0r0.06*、pr0.07*、r0.08*。
各指令设定的参数如下:
Pr0.000逆时针旋转为正方向
Pr0.010位置控制模式
Pr0.050光耦合器输入
Pr0.060旋转方向设定
Pr0.073pulse2控制速度,sign2控制方向
Pr0.081000010000p/r
1)驱动器最开始显示的数据为当前的转速;(图12.1)
图12.1初始转速为0图12.2模式d01.SPd
2)驱动器上电后按设置键S进入模式d01.SPd(图12.2),如再按一次将进入测试模式,显示当前的速度;
图12.3模式PAr.000图12.4模式EE_SEt
3)按模式键M进入参数设定模式PAr.000(图12.3),通过上、下、左键选择所要修改的参数,按S键进入该参数的设定值,上下左修改设定值,把对应参数的设定值修改后,再按住设置键约2秒后,界面自动返回到对应的参数设定模式PAr.***;
4)在返回到对应的参数设定模式PAr.***后,按模式键M进入参数EEPROM写入模式EE_SEt;(图12.4)
图12.5模式EEP-图12.6FiniSh
5)按一次设置键S进入EEP-模式(图12.5),再按住向上键约5秒后,显示EEP---逐渐增加直到显示rESEt或FiniSh(图12.6)为止,设置参数写入完毕。
断电后再次上电,参数才会生效。
4预习要求
(1)伺服电机控制器的各个引脚功能是什么?
(2)简单地了解伺服电机如何运行。
5实验步骤
(1)将24VPWM模块与已连接上交流伺服电机的交流驱动器相连;
(2)将DAC上的GND24V和DGND连接,按键模块的KEY0和PE3相连;
(3)将24V电源和电源模块相连;
(4)复制工程模板,新建5个文件并写入函数,分别为main.c、key.c、key.h、timer.c、timer.h;
(5)编译成功,下载程序至实训平台,并调试验证。
硬件设计
本实验用到的硬件资源有:
24VPWM输出模块(原理图如图12.7所示)、交流伺服电机和交流伺服驱动器(如图12.8所示)。
(1)24VPWM模块原理图如下图所示:
图12.724VPWM输出原理图
(2)交流伺服电机与交流伺服驱动器如下图所示:
图12.8交流伺服电机与交流伺服驱动器
(3)伺服电机有三种控制模式:
位置控制、速度控制、转矩控制。
本实验选用第一种位置控制模式。
设定值
第1模式
第2模式
【0】
位置
—
1
速度
—
2
转矩
—
3
位置
速度
4
位置
转矩
5
速度
转矩
6
全闭环
—
图12.9控制模式
(4)其指令脉冲输入有如下几个模式,这里使用脉冲串+符号控制的方式,PA2输出脉冲控制转速,PA3输出高电平控制正转,输出低电平控制反转。
图12.10指令脉冲输入形态
(5)电机的指令脉冲有三个可以配置的参数(图12.11),只需要设定第一项,电机每旋转一圈的指令脉冲数即可,这里选择为默认的10000p/r。
配置完另外两个参数,其余选择默认参数即可。
依据这些参数来配置交流伺服驱动器的参数。
(关于交流伺服驱动器的参数设定方法,请参看实验说明第4项)
图12.11指令脉冲数设定
(6)上面参数配置完后,开始讲解上位机与交流伺服控制器的连接。
这里需要连接7个端口,3、4、5、6、7、29、41。
3、5、7连接VCC24V,4连接PA2控制电机速度,6连接PA3控制电机方向,29为伺服电机开启输入端,低电平使能,所以要连接GND24V,41连接GND24V,端口连接如下图所示:
图12.12端口连接
在实训平台上的连接(后面数字与接口一一对应),如图12.13所示。
图12.1324VPWM输出模块图12.14连接GND24V和DGND
(7)在实训平台上操作时,有两个需要注意的地方。
在使用时,图12.13中S5必须按下,S5连接着伺服驱动器的29端使能管脚,只有在29端为低电平时,电机才能开始工作,即S5为电机的工作开关。
图12.14中的GND24V与DGND必须使用短线进行短接,否则电机不会运行。
软件设计
本次实验需要编写5个文件,分别为main.c,key.c,key.h,timer.c,timer.h。
(1)key.h和key.c的编写。
本实验中只需要用到一个按键来控制电机的开启与关断,所以只需配置一个端口即可,程序中使用的是PE3。
图12.15key.h文件
图12.16key.c文件
(2)timer.h和timer.c的编写。
脉冲输出采用两个定时器,定时器2输出高速脉冲,定时器3改变定时器2输出脉冲的频率。
timer.h程序如下:
图12.17timer.h文件
timer.c的程序如下:
图12.18gpio_init()函数
freq1为当前输出的脉冲频率,初始值为设定的启动频率。
dir为加减速的标志,因为freq1,dir在整个程序中一直在调用,所以需要定义为全局变量。
gpio_init()函数是用来初始化输出端口PA.2和PA.3的。
a.编写TIM2_PWM_Init()函数。
它被用来配置高速脉冲,先使能定时器2的时钟,然后初始化TIM2,设置定时器的周期,预分频值,时钟分割系数,定时器的计数模式,然后按照结构体变量中的参数初始化定时器。
再初始化定时器2的PWM输出模式,这里使用的是定时器2的CH3输出比较通道。
定时器模式选择为PWM2模式,在定时器计数值小于比较值时,输出为无效电平,计数值大于比较值时,输出有效电平。
然后使能比较输出,设置输出极性为高,即有效电平为高电平,无效电平为低电平。
最后根据指定的参数初始化TIM2定时器的OC3,OC3指的是输出比较通道3。
接着使能定时器2在CCR上的寄存器,使能TIM2的更新中断。
b.配置中断。
中断通道设置为定时器2中断,设置先占优先级(抢占优先级)为2级,从优先级(响应优先级)为3级,接着使能中断通道,并根据上面的参数初始化中断。
最后设置一下定时器的比较值。
图12.19TIM2_PWM_Init()函数
配置完定时器2后,开始配置定时器2的中断服务函数。
图12.20TIM2_IRQHandler()函数
c.编写TIM2_IRQHandler()函数。
先检测TIM2是否发生了中断,如果发生了中断,则会执行提前设定好的程序(这里没设置其他程序),然后清除中断待处理位。
没有发生中断则会重新等待进入中断。
d.编写TIM3_Int_Init()函数。
先使能定时器3的时钟,然后配置定时器计数周期,预分频值,时钟分割系数和计数模式,再使能定时器更新中断,配置定时器中断通道,定时器中断通道选择TIM3中断,先占优先级为1级,高于定时器2,从优先级为3级,再打开中断通道,最后初始化中断。
图12.21TIM3_Int_Init()函数
e.编写TIM3_IRQHandler()定时器3的中断服务函数。
这里用来改变定时器2输出脉冲的周期。
先检查TIM3是否发生中断,如果发生了中断,则会清除中断
图12.22TIM3_IRQHandler()函数
待处理位,再根据dir和freq1来判断加减速和是否关闭定时器。
f.编写PWM_Change()函数。
这里用来改变定时器2的计数周期。
根据传入的频率值来计算计数周期,然后调用定时器2的初始化函数,改变定时器2的周期,然后开启TIM2。
图12.23PWM_Change()函数
(4)编写main.c文件。
先引用头文件delay.h,key.h,timer.h。
这里电机转动指令脉冲数为10000p/r,即10000个脉冲转一圈,加速时间和减速时间都设置为3S,启动频率为2KHz,最高频率为62KHz,此时电机转速为372r/min。
可以通过伺服驱动器的监视器查看转速。
Externu8dir声明dir为外部变量。
Key_Value为按键值,Key_Value的最高位为电机的当前运转状态,1代表电机处于开启状态,0代表电机处于关闭状态。
Key_Value的低7位存储键值。
gpio_init()为初始化PA2和PA3的函数,KEY_Init()初始化按键,中断分组为2,2位抢占优先级(0~3),2位响应优先级(0~3)。
TIM2_PWM_Init()里的第一个参数为定时器周期,第二个为预分频系数,定时器周期计算公式为:
时钟频率/{}频率*(预分频系数+1)}=定时器周期+1,当预分频系数为0时,不分频,时钟频率/频率=定时器周期+1。
TIM3_Int_Init(),设为5ms中断一次,每隔5ms进入一次中断,改变定时器2的输出脉冲频率。
在初始化时,把定时器全部关闭。
图12.24main.c文件
接着在while内进行控制,KEY_Scan的返回值进行或运算是为了不影响Key_Value的其他位。
Key_Value与0x03进行与运算,只取低三位来判断当前的键值。
如果键值不为0,则进行后面的操作。
当按键按下后,Key_Value右移7位,判断最高位的值,如果为0,则表示电机当前处于关闭状态,接着给电机加速脉冲,让电机加速到最高速度,并把Key_Value的最高位赋值为1(同时清除了键值),表示电机已开启。
如果Key_Value的最高位为1,则表示当前电机处于运行状态,接着会打开定时器3,开始减速,并把Key_Value赋值为0。
图12.25main.c文件
仿真与调试
程序编译无误使用软件仿真示波器观察脉冲频率,观察是否正确,再将程序下载至实训平台观察伺服电机是否正常运行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 伺服 电机 控制器 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)