山社电机: SAMSR -外部接口测试
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了山社电机: SAMSR -外部接口测试相关的知识,希望对你有一定的参考价值。
简 介: 利用DM542对于桁架驱动步进电机SAMSR驱动,完成动态力学特性测试。利用ESP32的中断输出步进电机驱动信号,并对机械位置极限开关进行检测。在脉冲细分设置SW5,6,7,8 设置为OFF,ON,ON,ON的时候,机械全程行进脉冲量为10000.
关键词
: 步进电机,桁架
§01 步进电机
1.1 应用背景
在一台模拟体外向外侧挤压模型机械上,有一台山社电机(SAMSR)及其驱动。在 利用ESP32驱动控制步进电机驱动器:MS2806 对配套的步进电机驱动器进行了初步的测试,但无法驱动电机运行。后来更换为DM542进行测试,反过来验证原来的驱动出现了问题。
▲ 图1.1.1 实验机械框架
为了更好地驱动该实验框架,对于这台步进电机的接口进行测试。
1.2 步进电机接口
该步进电机具有两个接口:
- 步进电机A,B相功率接口;
- 角度传感器接口;
1.2.1 A,B相线圈接口
电机线圈接口有四根电线,它们分别是:
- A相: 红,蓝
- B向: 绿,黑
▲ 图1.2.1 A,B线圈接口
1.2.2 角度传感器
根据MS2806驱动器外壳上的标示,可以看到电机的驱动器的角度传感器输出包括六条线。
▲ 图1.2.2 步进电机驱动器的外观
六条线包括:红、黑,蓝、蓝白、橙、橙白。
根据 定制日本信浓60闭环步进电机高精度编码器闭环伺服电机驱动器控制套装 山社MS-2806驱动器 中对于山社步进电机角度传感器给出了接口的定义。
▲ 图1.2.3 传感器接口
(1)接口定义
▲ 图1.2.4 步进电机功能定义
(2)信号测量
- 工作电源:红、黑:+3.3V ~ 5V;
可以通过示波器查看到:A+,A-之间是反相关系; A+,B+之间相差90°关系。
下面是测量A+,B+,在手动旋转步进电机情况下的信号波形。
▲ 图1.2.5 测量A,B相的信号
1.3 运行测试
1.3.1 基本测试
通过输入数字,完成步进电机运行控制。
- 输入数字为正:滑轨打开,挤压往上;
- 输入数字为负:滑轨闭合,挤压往下;
(1)测试程序
from machine import Pin,PWM
import time
led = Pin(5, Pin.OUT)
pulse = Pin(2, Pin.OUT)
dir = Pin(17, Pin.OUT)
pulse.on()
dir.on()
while True:
keys = input('Input:')
print(keys)
if keys.replace('-', '').isdigit():
number = int(keys)
print(number)
if number > 0:
led.on()
dir.on()
else:
led.off()
dir.off()
number = -number
if number > 0:
for i in range(number):
time.sleep_ms(1)
pulse.off()
pulse.on()
time.sleep_ms(10)
(2)运行结果
▲ 图1.3.1 机械框架在运动
§02 运行框架
2.1 增加限位开关
为了保证框架在电机驱动下的运行安全,需要在移动端增加位置限位开关。另外一个方向上的极限,可以通过最大行进步数来保证。
2.1.1 限位开关
使用一个微触动开关的1,2之间的触点来感知框架运动的极限位置。
▲ 图2.1.1 限位开关
将1,2管脚引出,送入到控制板的IO口。使用胶水将开关固定在运动桁架的一段。
▲ 图2.1.2 限位开关固定位置
2.1.2 ESP32输入端口
实验控制平台使用的是 ESP32-S模块转接板设计与实现 ,将限位开关接入PIN16管脚。
▲ 图2.1.3 实验所使用的ESP32电路板
2.2 时钟中断输出脉冲
利用ESP32的定时器中断来输出脉冲并检测限位开关。
2.2.1 时钟中断输出脉冲
from machine import Pin,PWM,Timer
import time
led = Pin(5, Pin.OUT)
pulse = Pin(2, Pin.OUT)
dir = Pin(17, Pin.OUT)
limit = Pin(16, Pin.IN)
pulse.on()
dir.on()
STEP_MOTOR_NUMBER = 0
TimerCount = 0
def timerISR(t):
global STEP_MOTOR_NUMBER
global pulse,dir,limit,led,TimerCount
TimerCount += 1
if TimerCount >= 100:
TimerCount = 0
if led.value() > 0:
led.off()
else: led.on()
if STEP_MOTOR_NUMBER == 0: return
if STEP_MOTOR_NUMBER > 0:
dir.on()
if limit.value() == 0:
STEP_MOTOR_NUMBER = 0
return;
STEP_MOTOR_NUMBER -= 1
pulse.off()
pulse.on()
elif STEP_MOTOR_NUMBER < 0:
dir.off()
pulse.off()
pulse.on()
STEP_MOTOR_NUMBER += 1
tim0 = Timer(0)
tim0.init(period=1, mode=Timer.PERIODIC, callback = timerISR)
while True:
keys = input('Input:')
if keys.replace('-', '').isdigit():
number = int(keys)
print(STEP_MOTOR_NUMBER)
print(number)
STEP_MOTOR_NUMBER = number
time.sleep_ms(200)
2.2.2 测试效果
下面是在定时器中断输出脉冲波形控制下桁架运行情况。
▲ 图2.2.1 步进电机往返运动
测量得到的输出控制信号。
▲ 图2.2.2 输出控制信号波形
2.3 行进脉冲数量
按照现在SW5,6,7,8:设置为:0FF,ON,ON,ON,步进电机行进10000,完成机械最大行程。
※ 总 结 ※
利用DM542对于桁架驱动步进电机SAMSR驱动,完成动态力学特性测试。利用ESP32的中断输出步进电机驱动信号,并对机械位置极限开关进行检测。在脉冲细分设置SW5,6,7,8 设置为OFF,ON,ON,ON的时候,机械全程行进脉冲量为10000.
■ 相关文献链接:
● 相关图表链接:
- 图1.1.1 实验机械框架
- 图1.2.1 A,B线圈接口
- 图1.2.2 步进电机驱动器的外观
- 图1.2.3 传感器接口
- 图1.2.4 步进电机功能定义
- 图1.2.5 测量A,B相的信号
- 图1.3.1 机械框架在运动
- 图2.1.1 限位开关
- 图2.1.2 限位开关固定位置
- 图2.1.3 实验所使用的ESP32电路板
- 图2.2.1 步进电机往返运动
- 图2.2.2 输出控制信号波形
from machine import Pin,PWM,Timer
import time
led = Pin(5, Pin.OUT)
pulse = Pin(2, Pin.OUT)
dir = Pin(17, Pin.OUT)
limit = Pin(16, Pin.IN)
pulse.on()
dir.on()
STEP_MOTOR_NUMBER = 0
TimerCount = 0
def timerISR(t):
global STEP_MOTOR_NUMBER
global pulse,dir,limit,led,TimerCount
TimerCount += 1
if TimerCount >= 100:
TimerCount = 0
if led.value() > 0:
led.off()
else: led.on()
if STEP_MOTOR_NUMBER == 0: return
if STEP_MOTOR_NUMBER > 0:
dir.on()
if limit.value() == 0:
STEP_MOTOR_NUMBER = 0
return;
STEP_MOTOR_NUMBER -= 1
pulse.off()
pulse.on()
elif STEP_MOTOR_NUMBER < 0:
dir.off()
pulse.off()
pulse.on()
STEP_MOTOR_NUMBER += 1
tim0 = Timer(0)
tim0.init(period=1, mode=Timer.PERIODIC, callback = timerISR)
while True:
keys = input('Input:')
if keys.replace('-', '').isdigit():
number = int(keys)
print(STEP_MOTOR_NUMBER)
print(number)
STEP_MOTOR_NUMBER = number
time.sleep_ms(200)
以上是关于山社电机: SAMSR -外部接口测试的主要内容,如果未能解决你的问题,请参考以下文章