Browse Source

修改底层电机驱动

master
zhaohe 1 year ago
parent
commit
9db5073339
  1. 4
      .settings/language.settings.xml
  2. 7
      .vscode/settings.json
  3. 2
      sdk
  4. 7
      usrc/main.cpp
  5. 78
      电机底层开发要求.md

4
.settings/language.settings.xml

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-206106158118006178" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="336939840050793459" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-156978002256279217" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="386067995912520420" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

7
.vscode/settings.json

@ -75,7 +75,12 @@
"stop_token": "cpp",
"thread": "cpp",
"early_ticket.h": "c",
"chrono": "cpp"
"chrono": "cpp",
"charconv": "cpp",
"cstring": "cpp",
"optional": "cpp",
"ranges": "cpp",
"span": "cpp"
},
"files.autoGuessEncoding": false,
"files.encoding": "gbk"

2
sdk

@ -1 +1 @@
Subproject commit 8cf48f33ade97f6e95c654429722b06f6818ccc3
Subproject commit 9de9f8940b0013d7a97db35e0acad9a4e072015a

7
usrc/main.cpp

@ -11,6 +11,7 @@
#include "sdk\components\mini_servo_motor\mini_servo_motor_ctrl_module.hpp"
#include "sdk\components\tmc\ic\ztmc4361A.hpp"
#include "sdk\components\tmc\ic\ztmc5130.hpp"
#include "sdk\components\step_motor_ctrl_module\tmc51x0_motor.hpp"
#define TAG "main"
using namespace iflytop;
@ -54,7 +55,7 @@ static void initsubmodule() {
osDelay(1000);
{
static TMC5130 g_motor;
static StepMotorCtrlModule g_stepMotorCtrlModule;
static TMC51X0Motor g_stepMotorCtrlModule;
TMC5130::cfg_t cfg = {
.spi = &TMC_MOTOR_SPI, //
.csgpio = MOTOR0_CSN, //
@ -69,8 +70,8 @@ static void initsubmodule() {
input[0].initAsInput(MOTOR0_REFL /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
input[1].initAsInput(MOTOR0_REFR /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
StepMotorCtrlModule::flash_config_t smcm_cfg = {0};
StepMotorCtrlModule::create_default_cfg(smcm_cfg);
TMC51X0Motor::flash_config_t smcm_cfg = {0};
TMC51X0Motor::create_default_cfg(smcm_cfg);
smcm_cfg.base_param.motor_one_circle_pulse = 1000;
smcm_cfg.base_param.motor_one_circle_pulse_denominator = 1;
smcm_cfg.base_param.stepmotor_ihold = 1;

78
电机底层开发要求.md

@ -0,0 +1,78 @@
1. 不同的电机,不同的负载,不同的速度,需要配置不同的参数
----->
2. 电机存在一个参数列表
1. 归零时,清零编码器
2.
-------------------------------------------------------------------------------
电机驱动
1. 初始化电机参数,对电机参数进行优化。
2. 电机单圈精度配置,需要在电机驱动程序中完成。
3. 参数配置是一个指令集合(list)。
4. 驱动器的参数可以根据项目写死。
驱动器配置完成后的目标:
1. 一圈的脉冲数和应用对齐。例如单位是mm,或者单位是0.01度
2. 编码器对于上层来说是透明的,如果驱动器使用了编码器,则上报编码器的真实位置。
3. 底层自己检查丢步事件。当丢步事件发生时,上报丢步事件。(丢步事件的检查 允许误差,由底层调整)
4. 上层不需要对电机进行任何配置,直接使用。(特殊情况下,如果不方便更新代码,可允许临时覆盖部分参数)
5. 归零只需要上层下发一条指令。
6. 归零存在归零超时这个参数,由底层自己配置
单片机层需要设置好:
1. 默认速度(快速,慢速,中速)
2. 上层可修改速度等级(例如快速,慢速,中速)
3. 每种速度等级可能需要微调部分参数。
加速度,减速度........
每种速度使用一样的参数
4.
上位机需要支持脚本加载。
cmdType, regadd regval speedlevel
local_reg 0/default
subdevice_reg
------------------------------------------------------------------------
去现场版本:
1. 上位机&驱动
2.
不去现场版本:
1. 读取编码器真实位置()
1. 读取编码器处理过后的位置()
2. 清零,清零编码器
3. 经过设置的编码器数值(配置好转换因子)
1. 参数配置同以前保持一致
2. 增加一个set_cover_reg的指令
3. readpos读取的位置是编码器的位置(如果有编码器)
4. 底层检查位置是否有偏差,如果出现偏差则报错。
5. 上层可以读取偏差数值。
6. 上层可以设置编码器偏差数值。
7. 添加终点光电检测,这个检查需要上层自己检查。(上层应该抽象出两个指令,开门,关门,附带检查的自定义指令)
8. 归零时,清零编码器,清零驱动器位置。
9. 上层可以读到编码器的数值
------------------------------------------------------------------------
setspeedlevel
覆盖部分配置
设置部分参数()
move_to_zero
归零
Loading…
Cancel
Save