代码拉取完成,页面将自动刷新
该库支持 macOS、Linux 和 Windows 三个平台。
🎉 欢迎加入 QQ 群:677900232 进行达妙电机技术交流。
🛒 点击访问达妙智能控制企业店:达妙店铺
确保 DM_CAN.py
文件在项目文件夹中,使用以下方式导入:
from DM_CAN import *
该库依赖以下 Python 库:serial
和 numpy
,请使用以下命令安装:
pip install -r requirements.txt
使用以下代码定义电机对象:
Motor1 = Motor(DM_Motor_Type.DM4310, 0x01, 0x11)
Motor2 = Motor(DM_Motor_Type.DM4310, 0x02, 0x12)
Motor3 = Motor(DM_Motor_Type.DM4310, 0x03, 0x13)
0x00
,且不与 SlaveID 冲突)serial_device = serial.Serial('COM8', 921600, timeout=0.5)
MotorControl1 = MotorControl(serial_device)
将电机对象添加到控制对象中:
MotorControl1.addMotor(Motor1)
MotorControl1.addMotor(Motor2)
MotorControl1.addMotor(Motor3)
使能电机前,建议先设置好所有电机参数:
MotorControl1.enable(Motor1)
MotorControl1.enable(Motor2)
MotorControl1.enable(Motor3)
如果是旧版固件,需指定控制模式:
MotorControl1.enable_old(Motor1, Control_Type.MIT)
MotorControl1.enable_old(Motor2, Control_Type.POS_VEL)
MotorControl1.enable_old(Motor3, Control_Type.VEL)
将电机移动到所需零点位置(在失能状态下),然后执行:
MotorControl1.set_zero_position(Motor3)
MotorControl1.set_zero_position(Motor6)
MotorControl1.disable(Motor3)
MotorControl1.disable(Motor6)
通过以下代码可以获取电机的实时状态(位置、速度、力矩等):
MotorControl1.refresh_motor_status(Motor1)
print("Motor1:", "POS:", Motor1.getPosition(), "VEL:", Motor1.getVelocity(), "TORQUE:", Motor1.getTorque())
使用 MIT 模式控制电机:
MotorControl1.controlMIT(Motor1, 50, 0.3, 0, 0, 0)
通过以下代码控制电机的目标位置和速度:
q = math.sin(time.time())
MotorControl1.control_Pos_Vel(Motor1, q*10, 2)
控制电机的速度:
q = math.sin(time.time())
MotorControl1.control_Vel(Motor1, q*5)
控制电机的目标位置和力:
MotorControl1.control_pos_force(Motor1, 10, 1000, 100)
电机状态保存在对应的电机对象中,可以通过以下函数读取:
vel = Motor1.getVelocity() # 获得电机速度
pos = Motor1.getPosition() # 获得电机位置
tau = Motor1.getTorque() # 获得电机输出力矩
可以在线修改电机的控制模式:
if MotorControl1.switchControlMode(Motor1, Control_Type.POS_VEL):
print("切换到 POS_VEL 模式成功")
if MotorControl1.switchControlMode(Motor2, Control_Type.VEL):
print("切换到 VEL 模式成功")
修改参数后,需要保存到电机的 flash 中:
MotorControl1.save_motor_param(Motor1)
读取电机内部寄存器的参数:
print("PMAX:", MotorControl1.read_motor_param(Motor1, DM_variable.PMAX))
print("MST_ID:", MotorControl1.read_motor_param(Motor1, DM_variable.MST_ID))
print("VMAX:", MotorControl1.read_motor_param(Motor1, DM_variable.VMAX))
print("TMAX:", MotorControl1.read_motor_param(Motor1, DM_variable.TMAX))
修改电机内部寄存器的参数(此更改在掉电后会恢复):
if MotorControl1.change_motor_param(Motor1, DM_variable.KP_APR, 54):
print("写入成功")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。