开源改变世界!!

环阳变频器 3.3v TTL 转 RS485 #940

推推 grbl 2年前 (2022-10-19) 123次浏览 0个评论
关闭
MisterDiz 打开了这个问题 on 12 Jul 2021 · 14 条评论
关闭

环阳VFD 3.3v TTL转RS485#940

MisterDiz 打开了这个问题 on 12 Jul 2021 · 14 条评论

注释

环阳变频器 3.3v TTL 转 RS485 #940

我有一个标准的环阳 HY 1.5kHz VFD,我正在尝试使用 RS485 设置主轴控制。

我假设 VFD 上的设置都很好,因为当使用出色的 Spindle Talker 应用程序直接连接到 PC 时,Spindle 会按预期启动和旋转。不幸的是,我没有从我的 GRBL ESP32 中得到快乐。

我在这上面花了几天时间,基本上已经到了放弃/对它或我自己变得暴力的阶段。
我将非常感谢任何帮助以确认我正在做的事情没有一些令人毛骨悚然的基本错误并且可能对其他人有用。

我所做的唯一配置是 mymachine.h 配置文件:

#define SPINDLE_TYPE SpindleType::HUANYANG
#define HUANYANG_TXD_PIN GPIO_NUM_32
#define SPINDLE_RXD_PIN GPIO_NUM_33

这就是我需要做的所有代码明智的事情吗?

我正在使用亚马逊的 3.3v 兼容 TTL 到 RS 485 板,如下所示:


环阳变频器 3.3v TTL 转 RS485 #940

我已经将 TX、RX、3.3v 和 GND 引脚连接到 ESP32 上的相应引脚,A+、B- 到 RS+、RS-。据我所知,似乎一致认为输出侧的接地没有连接到 VFD。(还尝试交换 TX 和 RX)。

在 UGS 平台(用于电机控制、冷却液继电器等)中,我正在向 ESP32 发送 M3 S1000 命令,但没有收到任何闪烁的 TX 灯或动作。我没有范围可以看到发生了什么,但是 TTL 到 RS485 板上的电压在 3.3V/GND 输入上存在,并且 A+ B- 上的电压显示为 4.8 伏。

顺便说一句,当我将 VFD 设置为接受外部电压控制而不是 RS485 时,我可以使用 VFD 上的 0-5v 输入设置来读取 0-3.3v PWM 信号(只是看看是否有任何工作)。M3 S1000 更改 VFD 上的频率设置,但不启动主轴(不确定原因或是否相关)。

有什么我想念的吗?有什么我没有做的设置吗?发送“M3 S1000”是否足以运行主轴?

抱歉,如果有一个或多个愚蠢的菜鸟动作正在进行,但我做了相当多的拖网作业,似乎无法到达任何地方。看起来我正在尝试最常用的部件,它可能对其他人有用,以有一种巧妙的方式来获得工作的 RS485 HY 主轴设置。任何帮助都将不胜感激。

环阳变频器 3.3v TTL 转 RS485 #940
所有者

婚戒 评论 2021 年 7 月 13 日

您可以在此处粘贴启动消息吗?

你能确认你的 VFD 设置是这样设置的吗…

PD004   400  Base frequency as rated on my spindle (default was 50)
PD005   400  Maximum frequency Hz (Typical for spindles)
PD011   120  Min Speed (Recommend Aircooled=120 Water=100)
PD014   10   Acceleration time (Test to optimize)
PD015   10   Deceleration time (Test to optimize)
PD023   1    Reverse run enabled
PD141   220  Spindle max rated voltage
PD142   3.7  Max current Amps (0.8kw=3.7 1.5kw=7.0, 2.2kw=??)
PD143   2    Poles most are 2 (I think this is only used for RPM calc from Hz)
PD144   3000 Max rated motor revolution at 50 Hz => 24000@400Hz = 3000@50HZ

PD001   2    RS485 Control of run commands
PD002   2    RS485 Control of operating frequency
PD163   1    RS485 Address: 1 (Typical. OK to change...see below)
PD164   1    RS485 Baud rate: 9600 (Typical. OK to change...see below)
PD165   3    RS485 Mode: RTU, 8N1
环阳变频器 3.3v TTL 转 RS485 #940

感谢您的快速回复。

VFD 设置如您所描述,我从
HuanyangSpindle.cpp SpindleTalker 将它们读取为:

环阳变频器 3.3v TTL 转 RS485 #940

引导消息溢出了引脚未定义的 bean,但我已按照我最初的帖子进行了设置。
我正在编辑 VSCode,但使用“本地”草图文件夹从 Arduino IDE 上传

[MSG:Grbl_ESP32 Ver 1.3a Date 20210424]
[MSG:Compiled with ESP32 SDK:v3.3.5-1-g85c43024c]
[MSG:Using machine:ESP32_V4]
[MSG:Axis count 4]
[MSG:RMT Steps]
[MSG:初始化电机]
[MSG:X 轴标准步进步进:GPIO(4) Dir:GPIO(16) 禁用:无限制(0.000,300.000)]
[MSG:Y 轴标准步进步进:GPIO(17) Dir:GPIO(5 ) Disable:None Limits(0.000,300.000)]
[MSG:Z Axis Standard Stepper Step:GPIO(18) Dir:GPIO(19) Disable:None Limits(-300.000,0.000)]

[MSG:Initializing RS485 VFD主轴]
[信息:未定义的 VFD_RS485_TXD_PIN]
[信息:未定义的 VFD_RS485_RXD_PIN]
[信息:未定义的 VFD_RS485_RTS_PIN]
[信息:RS485 VFD 主轴错误]

[MSG:本地访问点 GRBL_ESP 已启动,192.168.0.1]
[MSG:Captive Portal 已启动]
[MSG:HTTP 已启动]
[MSG:TELNET 已启动 23]
[MSG:GPIO(13) 引脚上的冷却液]
[MSG:X 轴引脚 GPIO(21) 上的限位开关]
[MSG:Y 引脚 GPIO(22) 上的轴限位开关]
[MSG:Z 引脚 GPIO(23) 上的轴限位开关]
[MSG:A 引脚 GPIO(27) 上的轴限位开关]
[MSG:引脚 GPIO(14) 上的探针]

环阳变频器 3.3v TTL 转 RS485 #940

由于您已经在使用 VsCode,您可以安装 platformio 并使用它来代替 Arduino。Platformio 可以做 Arduino IDE 所做的一切,而且只会更好、更快。所有使用开发者都使用platformio,我们大多数人在VsCode下使用它。

环阳变频器 3.3v TTL 转 RS485 #940

感谢您的提醒。我刚刚重新安装了 platformio 并重新上传了相同的结果。不过上传速度肯定更快?

环阳变频器 3.3v TTL 转 RS485 #940

呜呼!

更改:
#define HUANYANG_TXD_PIN GPIO_NUM_32
#define SPINDLE_RXD_PIN GPIO_NUM_33

至:
#define VFD_RS485_TXD_PIN GPIO_NUM_32
#define VFD_RS485_RXD_PIN GPIO_NUM_33

并添加:
#define VFD_RS485_RTS_PIN GPIO_NUM_25

这清除了错误,我很高兴能够闪烁 RS485 灯和功能齐全的主轴,我可以发送正确的 S24000 消息并朝任一方向旋转。小板似乎是让 HY VFD 与 ESP32 3.3v 输出一起工作的一种廉价而简单的方法。

非常感谢您帮助找到解决方案,我希望其他人觉得它有用。

最后一件事,我没有定义 RTS 引脚,因为我(似乎不正确)的理解是它是可选的。但是定义它是让一切正常工作的必要步骤,但是引脚没有物理连接到任何东西。我希望我不必用完 3 个珍贵的别针。这是不正确的吗?

环阳变频器 3.3v TTL 转 RS485 #940

如果我必须分配 3 个引脚,我可以将 GPI 引脚 34、35、36、39 中的一个用于 RXD 吗?大概 GPIO 2 可用于 TXD?

环阳变频器 3.3v TTL 转 RS485 #940

抱歉,我设法删除了我以前的帖子 – 看起来你已经整理好了

我对类似硬件成功使用了以下定义

#define SPINDLE_TYPE SpindleType::HUANYANG
#define VFD_RS485_TXD_PIN GPIO_NUM_4
#define VFD_RS485_RTS_PIN GPIO_NUM_2
#define VFD_RS485_RXD_PIN GPIO_NUM_27

我的设置确实有所不同,因为我使用的是带有di de re roesp32 端引脚的 max485/rs485 模块,dere连接到 RTS

环阳变频器 3.3v TTL 转 RS485 #940

谢谢杰尔斯登 :)

它的工作非常好,pin 2 -> TXD 很好,pin 15 也适用于 RXD。我所有的“安全”引脚都已加载,所以如果有人知道我是否可以“隐藏”不需要物理连接到任何东西的 RTS 引脚(引脚 12?)或者我是否可以使用 GPI 引脚,那就太好了RXD?

环阳变频器 3.3v TTL 转 RS485 #940

我认为,基于对 Grbl_Esp32 和底层软件开发工具包中的驱动程序代码的快速浏览,可以将 VFD_RS485_RTS_PIN 保留为未定义 – 除了阻止它工作的错误检查。换句话说,唯一会阻止它工作的是错误检查本身。代码在 Grbl_Esp32/src/Spindles/VFDSpindle.cpp 中。它看起来像这样:

        if (_rts_pin == -1) {
            grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Undefined VFD_RS485_RTS_PIN");
            pins_settings_ok = false;
        }

我认为如果您通过添加#if 0 .. #endif 将其注释掉,它会起作用,如下所示:

#if 0
        if (_rts_pin == -1) {
            grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Undefined VFD_RS485_RTS_PIN");
            pins_settings_ok = false;
        }
#endif
环阳变频器 3.3v TTL 转 RS485 #940

谢谢米奇,他很享受

我现在在 GPIO 2 和 15 上运行 TX 和 RX,未分配 RTS。

感谢大家的帮助。案件结案:)

环阳变频器 3.3v TTL 转 RS485 #940

我们正在开发下一代代码,让您无需重新编译即可分配引脚。我将添加不将 rts 引脚分配给该版本的功能。

环阳变频器 3.3v TTL 转 RS485 #940

我在我们的下一代工作列表中创建了一张票来执行此操作。

环阳变频器 3.3v TTL 转 RS485 #940
喜欢 (0)

您必须 登录 才能发表评论!