开源改变世界

直流编码器电机 – 无硬件讨论! #712

推推 grbl 3年前 (2023-01-30) 182次浏览
打开
InvncibiltyCloak 打开了这个问题 2020 年 12 月 19 日 · 4条评论
打开

直流编码器电机 – 无硬件讨论!#712

InvncibiltyCloak 打开了这个问题 2020 年 12 月 19 日 · 4条评论

注释

直流编码器电机 - 无硬件讨论! #712

大家好,
我正致力于直接实现直流编码器电机驱动器。我正在创建一个与以前的问题分开的新问题,因为它偏离了对不同电机/编码器选项的讨论。这里不允许讨论硬件!

我来自 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更新。

对方案有何意见或建议?谢谢您的帮助!

直流编码器电机 - 无硬件讨论! #712

并回答“是否有更直接的方法来获取总步数?”这个问题。答案是由@BarbourSmith在其中一个旧线程中 – sys_position。所以计划改为使用它。

直流编码器电机 - 无硬件讨论! #712

听到这个我很兴奋!

直流编码器电机 - 无硬件讨论! #712
所有者

在固件的核心中,它仅在机器空间中按步骤工作。所有单位、偏移量等都根据需要应用于输入和输出。

int32_t sys_position[6]是保存当前位置的数组。

直流编码器电机 - 无硬件讨论! #712
所有者

这是我们的不和谐服务器的邀请

https://discord.gg/zex6DqHa(1天后过期)

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

3人参加
直流编码器电机 - 无硬件讨论! #712直流编码器电机 - 无硬件讨论! #712直流编码器电机 - 无硬件讨论! #712

喜欢 (0)