background image

Co rtex

2M3架构上进行了多项改进 ,在提升性能的同

时 ,所有新功能都具有较低的功耗 , 其内核电压为 1. 8

V ,芯片电压为 3. 3 V ,可以选择睡眠模式 、

待机模式 ,

保证低功耗应用的要求 ;相对于 ARM 系列其他芯片 ,

STM32运行速度更快 ; 7个 TIM 最多可以产生 28个精

准的 PWM 信号 ,方便地用于步进电机控制 ;丰富的通
信模块便于与上位机进行通信

[ 4 ]

本系统要用到 3 台两相四线制步进电机 , 采用

2HB504MA 来驱动 。系统总体方案如图 1所示 。

1

 系统总体方案

上位机发送控制指令 ,主控芯片接收指令并将其

转化为用于控制步进电机的 PWM 信号和方向信号 ,
然后通过步进电机驱动器对步进电机进行细分驱动 ,
细分后步进电机运行将更加平稳

[ 6, 9 ]

。其中控制一台

步进电机需要 STM32 产生 PWM 信号和方向控制信
号 ,并利用 HCPL0630进行光耦隔离后经三极管放大
输出 。通过光耦合器的隔离 ,电路具有良好的电绝缘
能力和抗干扰能力 。又由于光耦合器的输入端属于电
流型工作的低阻元件 ,因而具有很强的共模抑制能

[ 5 ]

。三极管放大采用开漏输出 ,方便线与逻辑功能

的实现 ,同时通过外接不同上拉电阻可以增加外围的
驱动能力 。

2

 系统软件设计

2. 1 两步进电机同步运行控制方法

以两台步进电机为研究对象 ,上位机发送的命令

中包含完成两个目标位置移动所需的直线距离

L

1

L

2

两台步进电机所在子系统的机械传动等装置的转化系
数是常数

,

分别设为

q

1

q

2

。电机所需运行圈数设为

Q

1

Q

2

,则

Q

i

= L

i

q

i

 

( i = 12)

  驱动器细分倍数 、

电机运行总步数 、PWM 脉冲总

个数分别为

n

N

P

,则

P

i

= N

i

=

200 n

i

Q

i

=

200n

i

L

i

q

i

 

( i = 12)

  步进电机每一次目标位置的移动 ,都需要经过启

动 、

加速 、

高速 、

减速和制动过程 。速度大小是由 PWM

脉冲信号频率决定的 ,所以完成目标位置移动的过程
就是不断调整 PWM 脉冲信号频率的过程

[ 7, 8 ]

如果两台步进电机每次调整的 PWM 信号频率运

行的时间 Δ

t

相同 ,同时启动后的加速 、

高速 、

减速整个

过程经过相同的调整次数 ,则同时停止运转 。即 A 电
机各次调整后运行时间为 :Δ

t

11

,

Δ

t

12

,

,

Δ

t

1n

, B 电机

各次调整后运行时间为 :Δ

t

21

,

Δ

t

22

,

,

Δ

t

2n

,

使 Δ

t

11

=

Δ

t

21

,

,

Δ

t

1n

t

2n

,则两电机可同步完成整个运动过

程 。

STM32定时器产生的 PWM 脉冲频率由时钟频率

f

预分频值

M

计数周期

T

决定 。时钟频率和计数周

期通常固定不变 ,而是通过修改预分频值来调整输出
脉冲频率 。

以其中一台电机为基准 ,根据需要给该电机依次

设定 6个预分频值来完成运动过程 ,其值为

M

1

σ

,

σ =

1

,

2

,

,

6。由

V

1

σ

=

f

(M

1

σ

+ 1

) ( T

+ 1

)

可求出各预分频

值对应的电机步速

V

1

σ

,

σ = 1

,

2

,

,

6。

每个步速运行下所走过的步数分别设置为

N

1

/

β

,

β= 8, 8, 2, 12, 12, 12。在各步速下运行时 ,步进电机走

过的步数占总步数的比重可以调整 。

进一步可得出

Δ

t

σ

=

N

1

/

β

V

1

σ

=

N

1

(M

1

σ

+

1) ( T + 1)

β

f

 σ

=

12,

,

6

  第 2台步进电机每个步速运行下所走过的步数分

别设置为

N

2

/

β

,

β= 8, 8, 2, 12, 12, 12。

则由

Δ

t

σ

=

N

1

(M

1

σ

+

1) ( T + 1)

β

f

=

N

2

(M

2

σ

+

1) ( T + 1)

β

f

  可得

M

2

σ

=

N

1

(M

1

σ

+

1)

N

2

-

1

 σ

=

12,

,

6

  在程序设计中 ,通过计算并设定

M

1

σ

, M

2

σ

,

Δ

t

σ

,

可实现对步进电机的同步控制 。同样的方法也可以实
现对多台步进电机的同步控制 。

2. 2 程序流程控制

本系统中要求步进电机所控制的设备从初始位置

开始运行 。但由于突发情况的存在 ,步进电机的实际
位置相对于初始位置会有一定位移 。这就要求软件系
统中有回零功能 ,以控制步进电机拖动设备回到初始
位置 。 STM32主程序完成初始化后 ,通过硬件中断来
触发回零程序 。然后采用串口中断的方式不断接收上
位机指令 ,在中断服务程序中把指令中的距离信息

L

1

L

2

转化为电机运行步数

N

1

N

2

,

然后通过设定的

M

1

σ

,

求出

M

2

σ

Δ

t

σ

,

σ = 1

,

2

,

,

6

,

M

1

σ

M

2

σ

分别赋

给两个 TIM 并使能后产生两个 PWM 信号 ,且同时延

时 Δ

t

σ

,

用于控制电机速度的大小 。令

:

Δ

T

= ∑

6

σ

= 1

Δ

t

σ

,

电机运行 Δ

T

,

读取位置反馈信息并转化为电机实

际运行步数

,

与控制指令步数比较

,

进行偏差控制 。如

果偏差 Δ

L

1

Δ

L

2

超出规定值

,

则程序就会把 Δ

L

1

Δ

L

2

5

5

基于 STM32的多步进电机控制系统研究