开源改变世界

问题:微伺服不工作 #521

推推 grbl 2年前 (2023-02-05) 295次浏览
关闭
3 个任务中的第 1 个
xorkrus 打开了这个问题 2022 年 7 月 9 日 · 15条评论
关闭
3 个任务中的第 1 个

问题:微伺服不工作#521

xorkrus 打开了这个问题 2022 年 7 月 9 日 · 15条评论

评论

问题:微伺服不工作 #521

控制板

MKS DLC32 V2.01

董事会供应商的帮助

  • 是的
  • 不适用

机器描述

简易绘图机(笔式绘图仪)

配置文件

board: MKS-DLC32 V2.1
name: DrawBotDLC32
meta: 01.07.2022

kinematics:
  corexy:

stepping:
  engine: I2S_STATIC
  idle_ms: 0
  pulse_us: 4
  dir_delay_us: 1
  disable_delay_us: 0
axes:
  shared_stepper_disable_pin: I2SO.0
  x:
    steps_per_mm: 157.750
    max_rate_mm_per_min: 18000.000
    acceleration_mm_per_sec2: 1500.000
    max_travel_mm: 325.000
    soft_limits: true
    homing:
      cycle: 1
      positive_direction: false
      mpos_mm: 0.000
      feed_mm_per_min: 300.000
      seek_mm_per_min: 5000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.36
      hard_limits: false
      pulloff_mm: 2.000
      stepstick:
        step_pin: I2SO.1
        direction_pin: I2SO.2

  y:
    steps_per_mm: 157.750
    max_rate_mm_per_min: 12000.000
    acceleration_mm_per_sec2: 300.000
    max_travel_mm: 220.000
    soft_limits: true
    homing:
      cycle: 1
      positive_direction: false
      mpos_mm: 0.000
      feed_mm_per_min: 300.000
      seek_mm_per_min: 5000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.35
      hard_limits: false
      pulloff_mm: 2.000
      stepstick:
        step_pin: I2SO.5
        direction_pin: I2SO.6:low

  z:
    steps_per_mm: 100
    max_rate_mm_per_min: 5000
    acceleration_mm_per_sec2: 100
    max_travel_mm: 5
    homing:
      cycle: 1
      mpos_mm: 0
      positive_direction: true

    motor0:
      rc_servo:
        pwm_hz: 50
        output_pin: gpio.22
        min_pulse_us: 1000
        max_pulse_us: 2000

i2so:
  bck_pin: gpio.16
  data_pin: gpio.21
  ws_pin: gpio.17

spi:
  miso_pin: gpio.12
  mosi_pin: gpio.13
  sck_pin: gpio.14

sdcard:
  cs_pin: gpio.15
  card_detect_pin: NO_PIN

control:
  safety_door_pin: NO_PIN
  reset_pin: NO_PIN
  feed_hold_pin: NO_PIN
  cycle_start_pin: NO_PIN
  macro0_pin: gpio.33:low:pu
  macro1_pin: NO_PIN
  macro2_pin: NO_PIN
  macro3_pin: NO_PIN

macros:
  startup_line0:
  startup_line1:
  macro0: $SD/Run=lasertest.gcode
  macro1: $SD/Run=home.gcode
  macro2:
  macro3:

coolant:
  flood_pin: NO_PIN
  mist_pin: NO_PIN
  delay_ms: 0

user_outputs:
  analog0_pin: NO_PIN
  analog1_pin: NO_PIN
  analog2_pin: NO_PIN
  analog3_pin: NO_PIN
  analog0_hz: 5000
  analog1_hz: 5000
  analog2_hz: 5000
  analog3_hz: 5000
  digital0_pin: NO_PIN
  digital1_pin: NO_PIN
  digital2_pin: NO_PIN
  digital3_pin: NO_PIN

start:
  must_home: false

启动消息

[MSG:INFO: FluidNC v3.5.0]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.1-1-gb8050b365e]
[MSG:INFO: Local filesystem type is SPIFFS]
[MSG:INFO: Configuration file:DLC32XYZ.yaml]
[MSG:INFO: Machine DrawBotDLC32]
[MSG:INFO: Board MKS-DLC32 V2.1]
[MSG:INFO: I2SO BCK:gpio.16 WS:gpio.17 DATA:gpio.21]
[MSG:INFO: SPI SCK:gpio.14 MOSI:gpio.13 MISO:gpio.12]
[MSG:INFO: SD Card cs_pin:gpio.15 detect:NO_PIN]
[MSG:INFO: Stepping:I2S_static Pulse:4us Dsbl Delay:0us Dir Delay:1us Idle Delay:0ms]
[MSG:INFO: Axis count 3]
[MSG:INFO: Shared stepper disable I2SO.0]
[MSG:INFO: Axis X (0.000,325.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.1 Dir:I2SO.2 Disable:NO_PIN]
[MSG:INFO:     Neg Limit gpio.36]
[MSG:INFO: Axis Y (0.000,220.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.5 Dir:I2SO.6:low Disable:NO_PIN]
[MSG:INFO:     Neg Limit gpio.35]
[MSG:INFO: Axis Z (-1000.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     rc_servo Pin:gpio.22 Pulse Len(1000,2000)]
[MSG:INFO: macro0_pin gpio.33:low:pu]
[MSG:INFO: Kinematic system: CoreXY]
[MSG:INFO: Using spindle NoSpindle]
[MSG:INFO: Connecting to STA SSID:xopkland]
[MSG:INFO: Connecting.]
[MSG:INFO: Connected - IP is 192.168.1.40]
[MSG:INFO: WiFi on]
[MSG:INFO: Start mDNS with hostname:http://fluidnc.local/]
[MSG:INFO: SSDP Started]
[MSG:INFO: HTTP started on port 80]
[MSG:INFO: Telnet started on port 8080]
Grbl 3.5 [FluidNC v3.5.0 (wifi) '$' for help]

用户界面软件

网页界面

发生了什么?

我在 IO35 上连接中国伺服 TowerPro SG90(默认这是一个“探针”引脚)。没有回应任何命令。
我用 wifi 重新编译固件并将 PWM 分辨率更改为 12 位而不是 16 位。
const int SERVO_PWM_RESOLUTION_BITS = 16;
在文件 FluidNC/src/Motors/RcServoSettings.h
中,舵机已经开始工作并响应命令,但是没有任何东西可以使舵机向相反的方向移动。仅将 PWM_HZ 设置为“1”或“2”会在相反方向产生一些冲击

其他信息

没有反应

问题:微伺服不工作 #521
  1. 配置文件与启动消息不一致。配置文件具有 z/max_travel_mm: 5、z/homing/mpos_mm:0 和 z/homing/positive_direction:true。这些设置将使 Z 范围为 -5mm 到 0mm,但启动消息显示不同的范围:[MSG:INFO: Axis Z (-1000.000,0.000)]
  2. 你没有告诉我们你在移动伺服时尝试了哪​​些命令,所以我们无法判断你是否对这些命令做错了什么。
  3. 您没有告诉我们您用于执行重新编译的源代码版本,因此我们没有足够的信息从该数据点得出任何结论,
  4. 根据https://github.com/makerbase-mks/MKS-DLC32/blob/main/hardware/MKS%20DLC32%20V2.1_003/MKS%20DLC32%20V2.1_003%20SCH.pdf的示意图,GPIO 35 是Y-,不是探针。
  5. 同样根据该原理图,连接到 GPIO 35 的电路具有用于输入信号调节的电阻器和电容器。该信号调节会影响应用于伺服的 PWM 信号的质量,可能导致其误读 PWM 信号。Makerbase 原理图没有给出组件的值,因此很难确切知道发生了多少过滤。
  6. SG90 舵机指定使用 5V 的信号电压,而不是来自 ESP32 GPIO 的 3.3V。我有一个 Tower Pro MG90S 伺服器,它可以使用 5V 电源和 3.3V 信号(直接来自 ESP32,而不是通过 RC 网络)。所以一些伺服系统确实在某种程度上使用 3.3V 信号工作,但这并不能保证,RC 网络只会让情况变得更糟。
    请尝试使用没有 RC 滤波电路的输出引脚。如果您还有其他问题,我们需要准确的信息。当您提供的信息不一致时,我们不知道哪一部分是正确的,所以我们不得不猜测,而且很可能猜错了。那会浪费我们和你的时间。
问题:微伺服不工作 #521
所有者

GPIO.22(探针)有一个未知值的 R/C 滤波器。R/C 滤波器通常不应与 PWM 信号一起使用。

我在模拟和数字 RC 伺服系统上使用 3.3V 时运气不错。

问题:微伺服不工作 #521
作者

对米奇布拉德利:

  1. 抱歉,我整晚都在尝试不同的选择。即时进行更改。也许这就是它不同意配置的原因。低于当前配置的输出。
  2. 来自 wiki 的命令 – G53 G0 Z5 和 G53 G0 Z0 以及来自 webui 的箭头
  3. Git 版本为 08.07.22(可能是 3.5.0)
    4、5、6。是的,我探测了任何引脚。22/34/35/36 等。我也试过引脚 22、25、26,它似乎是直接来自 ESP32 的。情况是一样的。

> rst:0xc (SW_CPU_RESET),boot:0x1b (SPI_FAST_FLASH_BOOT)
> 
> configsip: 0, SPIWP:0xee
> 
> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
> 
> mode:DIO, clock div:1
> 
> load:0x3fff0030,len:1184
> 
> load:0x40078000,len:12812
> 
> load:0x40080400,len:3032
> 
> entry 0x400805e4
> 
> 
> 
> [MSG:INFO: FluidNC v3.5.0]
> 
> [MSG:INFO: Compiled with ESP32 SDK:v4.4.1-1-gb8050b365e]
> 
> [MSG:INFO: Local filesystem type is SPIFFS]
> 
> [MSG:INFO: Configuration file:DLC32XYZ.yaml]
> 
> [MSG:INFO: Machine DrawBotDLC32]
> 
> [MSG:INFO: Board MKS-DLC32 V2.1]
> 
> [MSG:INFO: I2SO BCK:gpio.16 WS:gpio.17 DATA:gpio.21]
> 
> [MSG:INFO: SPI SCK:gpio.14 MOSI:gpio.13 MISO:gpio.12]
> 
> [MSG:INFO: SD Card cs_pin:gpio.15 detect:NO_PIN]
> 
> [MSG:INFO: Stepping:I2S_static Pulse:4us Dsbl Delay:0us Dir Delay:1us Idle Delay:0ms]
> 
> [MSG:INFO: Axis count 3]
> 
> [MSG:INFO: Shared stepper disable I2SO.0]
> 
> [MSG:INFO: Axis X (0.000,325.000)]
> 
> [MSG:INFO:   Motor0]
> 
> [MSG:INFO:     stepstick Step:I2SO.1 Dir:I2SO.2 Disable:NO_PIN]
> 
> [MSG:INFO:     Neg Limit gpio.36]
> 
> [MSG:INFO: Axis Y (0.000,220.000)]
> 
> [MSG:INFO:   Motor0]
> 
> [MSG:INFO:     stepstick Step:I2SO.5 Dir:I2SO.6:low Disable:NO_PIN]
> 
> [MSG:INFO:     Neg Limit gpio.35]
> 
> [MSG:INFO: Axis Z (-5.000,0.000)]
> 
> [MSG:INFO:   Motor0]
> 
> [MSG:INFO:     rc_servo Pin:gpio.22 Pulse Len(1000,2000)]
> 
> [MSG:INFO: macro0_pin gpio.33:low:pu]
> 
> [MSG:INFO: Kinematic system: CoreXY]
> 
> [MSG:INFO: Using spindle NoSpindle]
> 
> [MSG:INFO: Connecting to STA SSID:xopkland]
> 
> [MSG:INFO: Connecting.]
> 
> [MSG:INFO: Connected - IP is 192.168.1.40]
> 
> [MSG:INFO: WiFi on]
> 
> [MSG:INFO: Start mDNS with hostname:http://fluidnc.local/]
> 
> [MSG:INFO: SSDP Started]
> 
> [MSG:INFO: HTTP started on port 80]
> 
> [MSG:INFO: Telnet started on port 8080]
> 
> 
> Grbl 3.5 [FluidNC v3.5.0 (wifi) '$' for help]

问题:微伺服不工作 #521

尝试步进/idle_ms:255

idle_ms 为 0 时,系统禁用所有电机,从而消除伺服位置脉冲。

我建议使用 GPIO 25 并从 EXP1 连接器 (LCD_CS) 的引脚 7 获取它。该信号通过 5V 驱动器驱动,没有任何过滤。

问题:微伺服不工作 #521
作者

我使用了 25 号针。没有任何变化。G53 G0 Z5 和 G53 G0 Z5 仅使伺服电机沿一个方向移动。同时,它看起来不像是步步为营的动作,而是一种即兴演奏。

问题:微伺服不工作 #521
所有者

试试G53G0Z0G53G0Z-5

舵机是锁定到位还是可以自由手动旋转?

问题:微伺服不工作 #521
作者

Z-5 相同 – 只向前而不是后退…如果 idle_ms=0 则位置自由,如果 idle_ms=255 则仍然工作

问题:微伺服不工作 #521
所有者

你的回答不清楚。idle_ms:255 是锁定还是自由旋转。

请将连接图片发送到控制器,并确保我们可以看到伺服。

问题:微伺服不工作 #521
作者

回答 – 原样。在 idle_ms:255 上,伺服不会停止,直到我输入命令 $stepping/idle_ms=0 和 G53…
pic

问题:微伺服不工作 #521

同时,它看起来不像是步步为营的动作,而是一种即兴演奏。

你能指望什么?以 z/max_rate_mm_per_min: 5000 移动 5 毫米需要 1/1000 分钟,或 1/17 秒。在 50 Hz 的伺服脉冲速率下,这少于三个伺服更新,当然也比人类对平滑运动的感知要少得多。

问题:微伺服不工作 #521

此外,您的 z 设置为 max_travel_mm:5、mpos_mm:0、positive direction:true,行程范围为 -5..0,与 一致[MSG:INFO: Axis Z (-5.000,0.000)],因此 G53 G0 Z5 在运动范围之外,G53 G0 Z0(这我假设你的意思是当你说G53 G0 Z5两次时,也处于运动的极限,与 Z5 相同的极限。

您提供的任何信息都不符合配置限制内的运动。

问题:微伺服不工作 #521

如果您希望范围为 0..5,请设置 positive_direction:false 以便 mpos_mm:0 位于行程范围的负端。将 max_rate_mm_per_min 设置为更合理的值,或者使用 G1 移动,并使用与您想要的速度相对应的显式进给率,考虑到爱好伺服的 50 Hz 最大更新率。

我用 MKS DLC32 V1.1 复制了您的设置,将伺服连接到 EXP1 引脚 7(信号)、9(接地)、10(5V)。它按预期工作,使用 和 之类的G1 Z-5 F100动作G1 Z0 F100