#Servo issues: determine servo pulsewidth settings/check if servo is damaged

6 messages · Page 1 of 1 (latest)

potent shoal
#

Hi everybody, I have two servos installed in my Voron 2.4, one on the ERCF and another one for the Filametrix toolhead. Both seem to behave really odd. The min/max angles shift apparently between restarts, like, 87° was the zero position once, and then it suddenly raised to 143°.
I think that the pulsewidth is completely out of range, but it doesn't seem so from the numbers. Unfortunately both servos behave like this, even though they are controlled from two independent boards (the ERCF has it's own board, the Filametrix toolhead servo is directly attached to my btt octopus). As an example I share the settings for the ERCF servo.

For finding out and tuning, I should probably remove the servo arms, so they are not damaged?

[mmu_servo selector_servo]
pin: mmu:MMU_SEL_SERVO
maximum_servo_angle: 180
minimum_pulse_width: 0.00085
maximum_pulse_width: 0.00215
initial_angle: 0

potent shoal
#

I mean, from my understanding: The BTT Octopus has a carrier frequency of 50Hz. The Pulse width can thus generally be in the range from 0-20ms (0%PWM/100%PWM). Typically Servos seem to work in a range from 10-20% of the maximum carrier pulse width, that means 1-2ms for 0° to 180°.

  • minimum_pulse_width
    • too high: servo cannot reach 0° position
    • too low: servo will not respond directly on low angles, but skip some
  • maximum_pulse_width
    • too high: servo will reach 180° blockade when set to lower angles
    • too low: servo will not be able to reach 180°

Basically that leaves me with 0.001s to 0.002s as starting values, and probably no issues other than not reaching the correct angles.
The behaviour I describe in the help request does it maybe point on another issue, like broken servos?

#

Servo issues: determine servo pulsewidth settings/check if servo is damaged

ionic ether
potent shoal
#

I did the following:

  • read up values from datasheet (vendor: Pulse Width Range: 750 → 2250 µ second)
  • test values, marking the 0-position and checking movement
  • refine values based on findings
  • have values that allow me to precisely set 0° and 170° on my servo

minimum_pulse_width: 0.0007
maximum_pulse_width: 0.0023

After putting these values into the configuration of my ercf (mmu_hardware.cfg), something gets completely messed up:

  • set servo=myservo angle=0° => works as calibrated
  • set servo=myservo angle=170° => works as calibrated
  • use macro that calls the values => servo moves, but has a huge offset of like 20°, that literally brakes (printed) things...
#

Wow. I think I found it... In mmu_vars.cfg the actual "up"/"down" angles are defined yet again. What a mess...