C3D Spindle speed display

Anybody know why when I set in CC my speed at 18000 that when I run it, the spindle display is at 16500?
This is a C3D VFD Spindle

1 Like

The VFD is PWM controlled. PWM is an analog signaling technique. It does not convey precise speeds. Instead it conveys a voltage to the VFD and it is up to the VFD to translate that into a speed. This adds room for errors. I believe Carbide3D specifies that the actual speed will be +/- 10% of the desired speed. 16500 is 92% of 18000 so you are within specs if that is true. I do not own the Carbide3D VFD/Spindle but most VFDs can be tuned to get that closer but it will never be spot on. I would recommend reaching out to Carbide3D’s support and ask them.


I assume that in order to tune the spindle speed, you would have to have the password for the spindle controller to make the changes, and from previous posts, C3D isn’t giving that out.

1 Like

Yeah most likely, though there might be some GRBL settings that can be changed as well.

I would recommend you try using the search feature of the forums next time. This question gets asked frequently.

You can compensate for the PWM error using a post processor with a calibration table that interpolates the correct setpoint. A calibration table implementation needs to be used since the variance is not linear. I reliably get within 0-10RPM of intended setpoint this way.

1 Like

Or just buy another brand spindle that doesn’t lock the consumer out. What you describe is just a band aid.


I agree that going with a different vendor is a much better option. I am currently waiting on Carbide3D to send me my third VFD box since the other two stopped working after a few weeks of use. Their custom PCB inside of the VFD box fails rather quickly. It seems that they have some decent mechanical engineers on staff but their electrical/software engineering section is lacking. I have a list of electrical/software oddities but no mechanical issues.

1 Like

You must have gotten a couple of bad boards, I’m sorry. I’ve had a C3D VFD Spindle on the shop S4Pro since the spindle was released. Not a single issue. I have one on my S5Pro at home since the machine was released, again, no issues.

1 Like

Hopefully third time is the charm. None the less, when they release the 80mm spindle mount for the SO5 Pro I will definitely be going with a vendor that does not lock the VFD’s when purchasing a 2.2kw spindle kit or source myself. I should be able to use the dial on the VFD display if the interlock/filtering PCB breaks. Machine down time due to a faulty interlock board sucks.

Only work around currently would be to open the VFD enclosure and put a potentiometer and pull down resistor on the VFD, but that would void the warranty so I can’t do that. Also probably not the safest as the spindle will keep going if you hit the estop.

IMO, having the VFD display spindle torque/power is much more useful than having an accurate setting/display of spindle speed. pwnCNC’s spindle systems, which appear virtually identical to Carbide3D’s (except for their more realistic 110V 7A spindle power rating) reportedly aren’t locked down. :wink:


Can you explain the symptoms that you saw when your VFD Controller was bad?

I’ve only had my Shapeoko 5 Pro since the end of April. Since then, the VFD Spindle’s bearings went bad (replaced by C3D) and now I’m waiting for my 3rd VFD Controller box to see if that fixes the other issues I’m seeing. When I command any RPM speed of 8000 to 16000, the resulting RPMs on the VFD Controller’s front panel shows 7998. Commanded RPM of 18000 results in 9030, 20000 → 11220, 22000 → 13410 and 24000 → 17940.

C3D’s support team has been very responsive but haven’t tracked down the issue yet. It also takes 6 days for a new VFD Control box to get from California to western NY via FedEx Home Delivery so the turnaround times are long.

For my issue, the VFD will not spin at all when commanded to from the SO5 controller. I can get the spindle to move by pressing the jog button on the VFD but not by sending it PWM signals. A symptom of this issue is the interlock button light on the VFD box will become dimmer than it used to be. I am pretty sure there is a issue with power regulation on the VFD control board that is causing issues with them buffering/regenerating the PWM signal for the VFD itself. VCC for my bad board is around 2.14V and that does not seem right as I’m assuming it should be 5V. The issue appeared for me both times after powering on the machine from use earlier in the day where I had no issue.

It sounds like you could possibly have a similar issue that has not fully failed yet or maybe bad grounding. If you have a multi meter you can check the RMS voltage between the black and white wire of the VFD pigtail when you are requesting 12000RPM and 24000RPM. At 12000RPM you should get about 2.5V and at 24000 RPM you should get close to 5V but probably slightly under due to voltage loss.

I would also check ground if I were you. A bad ground between the SO controller and VFD controller can cause the voltages to be interpreted differently between the two controllers and lead to a issue that you described. Set your DMM to resistance and put the black lead onto the black wire from the VFD pig tail and the red lead onto the metal housing of the VFD. You should read a low resistance of about 0.1 Ohms. That will tell you if the grounding inside of the VFD is good. Next you will check the SO5 controller by putting the black lead back onto the black wire of the VFD pigtail and then putting the red lead onto the SO controllers heat sink. You should also ready about 0.1 Ohms here. Please note that power to the machine should be turned off when taking resistance measurements.

If your grounding checks out good and you are getting the correct Vrms from the SO controller then the probably cause of failure would be the VFD controller PCB board. My guess is the board is outputting a lower Vrms signal due to a linear regulator that is failing which causes the VFD to spin at a lower speed.

Looking through the forums, this seems to be a common failure mode of these VFD boxes.

Thanks for taking the time to put together such a detailed response.

My first VFD Controller failure started with the symptom of not getting to the correct RPMs and then quickly went to the problem that you described (i.e., no response to speed commands at all and a dim LED). I sent it in to C3D, but after three weeks they agreed that it was taking too long to repair so they sent me another unit. This one has had the issue of not getting to the correct RPMs from the start but is still responding to commands. It could be minutes away from complete failure, who knows.

I checked the voltage levels like you suggested for 12000 and 24000 RPMs. The readings I observed were just under 2.5V and just under 5V respectively as I think is expected.

For the ground checks, on the SO Controller, I didn’t get any reading (0 ohms) but on the VFD Controller I saw 200 kOhms which from your description means there’s something wrong inside the VFD Controller. Another controller is on its way but they sent it “slow boat” FedEx again so I won’t know if it works until late next week.

When you were dealing with C3D for your VFD issues, who on the support team was your main contact?

Do you still get 200KOhms if you probe directly on the pin to the VFD rather than through the connector? If so, then yes it sounds like there is a internal issue. If not then you probably have a badly crimped or damaged pin.

Oscar and his manager Jenny.

I actually probed the pin directly just to take any cabling issues out of the equation so it looks like it’s an internal issue as you said. I’m dealing with the same folks at C3D plus Fleming has been helping out too. Thanks again for all your help!

Why don’t reach out since you are making the claim?

My new(est) VFD Controller arrived today and worked perfectly. I repeated the ground test on the new controller and it showed nearly 0 Ohms as expected unlike the 200 kOhms that the broken one showed. I passed along this information to C3D support too. If this happens to others now it can be tracked down quicker. Having my machine down for 6+ weeks has been a real bummer! Hopefully having this information in the forums will hopefully help others track this issue down quickly too.

Thanks again for the help!


The C3D control board only puts out 0-4.82v.
A normal vfd is pwm driven. A C3D vfd, not so much if you are using CM (not sure how it would work with other senders).
If you check pwm voltage while using CM’s MDI, you will note that pwm voltage is 4.82v for any speed over 500.
It appears that CM parses the speed request to send max voltage to THEIR vfd.
Since the pwm is at max, I would have to assume that the m3sxxxx is passed to the control board in the vfd by CM, where the control board in the vfd then sends the correct voltage/frequency to the spindle. Not nice.
BTW $750 C3D locked vfd and spindle with an rpm error of 10%, only good with CM (I assume)
$250 third party unlocked vfd (not anywhere near top of the line) and spindle with an rpm error of 0.2% running with any other gcode sender (I use CNCjs).
Just my two cents, choice is yours.

What you just described are the default GRBL settings on the Carbide Motion Control Board that ships with the Shapeoko. Those are the default because the Shapeoko has always been designed around using a trim router as a spindle for the longest time. Trim routers have speed control built into them so there is no adjusting that. What you can do however is turn them on and off with a relay. A relay like the one in this product offering from them:

As such as soon as your GCode calls for an RPM over 500 the GRBL board will switch the PWM port from fully off to fully on. This turns the relay on.

When you get the spindle kit from Carbide3D you have to go into the settings section of Carbide motion and tell it that you have one install. It will then push new MDI settings to the GRBL controller in the Shapeoko. As I said I do not own the Carbide3D spindle so I do not know what those MDI settings are or if they can be adjusted to get the RPM closer.

The reason for the +/-10% error in the spec is because different components between the Carbide Motion boards PWM pins and the VFDs microcontrollers ADC pin have different tolerances. The way PWM is typically implemented is that the PWM signal is passed through an optical isolator on the VFD end to prevent ground loops. The isolated side uses the VFDs logic level high voltage and not the voltage supplied on the PWM signal. That isolated signal is then passed through an RC circuit (Resistor Capacitor circuit). The resistor and capacitor in this circuit are chosen based off the expected PWM frequency. The capacitor’s voltage increases with every logical 1 pulse of the PWM signal. The resistor drains the voltage on the capacitor with every logical 0 pulse of the PWM signal. A bigger capacitor value causes the voltage to rise slower. A bigger resistor value causes the voltage to drain slower. The voltage across the capacitor is fed into one of the Analog to Digital Converter (ADC) pins on the VFDs microcontroller. This digitally converted voltage is then passed through a look up table in the VFD to determine the RPM to use for this voltage.

There are a lot of things that can impact this voltage. Environment noise can impact the PWM signal. Tolerances in the VFDs voltage regulator can impact the high voltage it uses on the isolated side. Tolerances in the capacitor and resistor can impact the charge and discharge speed of the RC circuit. Carbide3D’s VFD comes with one set of default settings for that lookup table. As such those tolerances can cause the RPM to vary. Apparently by +/-10%. On a standard VFD you can adjust the settings of this lookup table to get the RPM spot on. Unfortunately Carbide3D has apparently chosen to lock down these settings with a password that they will not share. I am assuming they do so because there are settings in there that if an end user messes with it can cause permanent damage to the Spindle or VFD and they do not want to have to deal with the returns caused by people tinkering. I do not agree with this logic, but it is the only explanation I can come up with.

EDIT: corrected an error


Not arguing.
CM set for vfd (appears all that does is set $30=24000)
send m3s500 via mdi, get 0.2v
send m3a501 via mdi, get 4.82v
send /m3s501 via mdi, get 2v (the backslash bypasses the CM parser, cannot be used within gcode files).
so vfd/spindle is still on/off like a router.
use same vfd hook up (pwm to 5vin, gnd to gnd, gnd to fwd).
use CNCjs as controll software.
vfd/spindle operate proberly in all speed setings, with an error of 0.2%
not being an expert, it still appears that the C3D vfd takes the full +5v (+4.82v) signal and internally uses the gcode speed command to convert it to close to the required voltage.