打开 InvncibiltyCloak 打开了这个问题 2020 年 12 月 19 日 · 4条评论 打开 直流编码器电机 – 无硬件讨论!#712 InvncibiltyCloak 打开了这个问题 2020 年 12 月 19 日 · 4条评论 注释 无敌斗篷 评论了 2020 年 12 月 19 日 大家好, 我正致力于直接实现直流编码器电机驱动器。我正在创建一个与以前的问题分开的新问题,因为它偏离了对不同电机/编码器选项的讨论。这里不允许讨论硬件! 我来自 MaslowCNC 项目,并继续制作了一块带有 5 个直流电机驱动器的电路板。如果有人对细节感兴趣,可以在InvncibiltyCloak/ESPMaslowController找到设计。这台机器上有不同的运动学,但是在相关的机器文件中很容易实现,所以我们暂时忽略它。 这里的 TLDR 是我有 5 个编码器直接连接到 ESP32 和 5 个通过 SPI 连接的 PWM 发生器连接的直流电机驱动器。此时,我只尝试 3 轴控制。 ESP32 有一个脉冲计数器外设,能够进行正交解码和计数到 16 位。通过一些中断,它可以以最小的 CPU 负载扩展到任何大小。这就是编码器的计数方式。 我一直在寻找如何最好地处理关闭直流电机回路的源代码。看起来 stepper_pulse_func 是所有动作发生的地方。 我计划使用 Motor.step() 来允许我的自定义 DCMotor 类计算生成的步进/方向脉冲和基于此的 PID。有没有更直接的方法来获取总步数? 接下来,PID 需要一致的定时才能获得良好的性能。主要的 stepper_pulse_func 会根据各种因素在不同的时间被调用,并且通常被调用得过于频繁。此时我打算使用具有不同报警值的TimerG0、Timer 1来驱动PID更新。 对方案有何意见或建议?谢谢您的帮助! ?1个BarbourSmith 回应万岁表情符号 作者 无敌斗篷 评论了 2020 年 12 月 19 日 并回答“是否有更直接的方法来获取总步数?”这个问题。答案是由@BarbourSmith在其中一个旧线程中 – sys_position。所以计划改为使用它。 ?1个BarbourSmith 用竖起大拇指的表情符号回应❤️1个BarbourSmith 回应心形表情符号 巴伯史密斯 评论了 2020 年 12 月 19 日 听到这个我很兴奋! 所有者 培养 评论了 2020 年 12 月 19 日 在固件的核心中,它仅在机器空间中按步骤工作。所有单位、偏移量等都根据需要应用于输入和输出。 int32_t sys_position[6]是保存当前位置的数组。 所有者 培养 评论了 2020 年 12 月 19 日 这是我们的不和谐服务器的邀请 https://discord.gg/zex6DqHa(1天后过期) 免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论 受让人 无人分配 标签 还没有 项目 还没有 里程碑 没有里程碑 发展 没有分支机构或拉取请求 3人参加
大家好,
我正致力于直接实现直流编码器电机驱动器。我正在创建一个与以前的问题分开的新问题,因为它偏离了对不同电机/编码器选项的讨论。这里不允许讨论硬件!
我来自 MaslowCNC 项目,并继续制作了一块带有 5 个直流电机驱动器的电路板。如果有人对细节感兴趣,可以在InvncibiltyCloak/ESPMaslowController找到设计。这台机器上有不同的运动学,但是在相关的机器文件中很容易实现,所以我们暂时忽略它。
这里的 TLDR 是我有 5 个编码器直接连接到 ESP32 和 5 个通过 SPI 连接的 PWM 发生器连接的直流电机驱动器。此时,我只尝试 3 轴控制。
ESP32 有一个脉冲计数器外设,能够进行正交解码和计数到 16 位。通过一些中断,它可以以最小的 CPU 负载扩展到任何大小。这就是编码器的计数方式。
我一直在寻找如何最好地处理关闭直流电机回路的源代码。看起来 stepper_pulse_func 是所有动作发生的地方。
我计划使用 Motor.step() 来允许我的自定义 DCMotor 类计算生成的步进/方向脉冲和基于此的 PID。有没有更直接的方法来获取总步数?
接下来,PID 需要一致的定时才能获得良好的性能。主要的 stepper_pulse_func 会根据各种因素在不同的时间被调用,并且通常被调用得过于频繁。此时我打算使用具有不同报警值的TimerG0、Timer 1来驱动PID更新。
对方案有何意见或建议?谢谢您的帮助!