PWM signal for spindle speed

I am trying to install a custom speed controller for a Makita router. It works much like a BitRunner, but replaces the manual potentiometer in the router with a cable that connects to a digital potentiometer in the speed controller. At the moment, I am successfully turning the router off and on, but sending different speeds to the controller does not change the router speed.

In trying to troubleshoot this, I am measuring the PWM signal with a digital voltmeter at the Shapeoko controller between pins 3 (PWM) and 6 (GND). No matter what speed command I send, I am measuring 3.5vdc.

I’m hoping this is a setup problem and not a Shapeoko controller problem. I chose VFD spindle when I configured the machine. Here is my config output:
Machine: Shapeoko
GRBL Version: 1.1f

Carbide Motion 649
Machine Controller State: INIT
Grbl Cycle: Idle

{
“bitRunnerEnabled”: true,
“bitSetterEnabled”: true,
“bitSetterX”: -2.5,
“bitSetterY”: -438.0,
“bitZeroType”: 2,
“connection”: 1,
“hasLaser”: false,
“lastConfigSent”: 5,
“lastProbeIndex”: 0,
“lastSizeOption”: 1,
“odometer”: [
{
“cleared”: false,
“minutes”: 0.39791666666666653,
“startDate”: “2025-08-29”,
“travelX”: 191.50000017881393,
“travelY”: 1343.0499993413687,
“travelZ”: 115.0
}
],
“showCarbideRouterRpm”: false,
“spindleType”: 1,
“travelX”: -865.0,
“travelY”: -444.0,
“travelZ”: -95.0,
“version”: 0,
“webhooks”: ,
“workOffsetX”: 0.0,
“workOffsetY”: 0.0,
“workOffsetZ”: 0.0
}

0 = 10, Step pulse, microseconds
1 = 255, Step idle delay, milliseconds
2 = 0, Step port invert, mask
3 = 5, Direction port invert, mask
4 = 0, Step enable invert, boolean
5 = 0, Limit pins invert, boolean
6 = 0, Probe pin invert, boolean
10 = 255, Status report, mask
11 = 0.02, Junction deviation, millimeters
12 = 0.01, Arc tolerance, millimeters
13 = 0, Report inches, boolean
20 = 0, Soft limits, boolean
21 = 0, Hard limits, boolean
22 = 1, Homing cycle, boolean
23 = 0, Homing dir invert, mask
24 = 100, Homing feed, mm/min
25 = 2000, Homing seek, mm/min
26 = 25, Homing debounce, milliseconds
27 = 3, Homing pull-off, millimeters
30 = 30000, Max spindle speed, RPM
31 = 10000, Min spindle speed, RPM
32 = 0, Laser mode, boolean
100 = 40, X steps/mm
101 = 40, Y steps/mm
102 = 200, Z steps/mm
110 = 10000, X Max rate, mm/min
111 = 10000, Y Max rate, mm/min
112 = 1000, Z Max rate, mm/min
120 = 500, X Acceleration, mm/sec^2
121 = 500, Y Acceleration, mm/sec^2
122 = 270, Z Acceleration, mm/sec^2
130 = 845, X Max travel, millimeters
131 = 850, Y Max travel, millimeters
132 = 95, Z Max travel, millimeters

Maintenance:

Travel (km) 0.00, 0.00, 0.00, 0.01 Hours since 2025-08-29

Queue Empty

You’re going to need an oscilloscope to test it. It’s not a variable voltage output. It’s a pulse with modulate signal.

1 Like

What I am reading is that a DVM samples at about 6K and displays an average voltage from the PWM signal

Ok, problem solved. While I did have the configuration set for VFD Spindle, I also had enabled BitRunner. (I thought that made sense, but apparently the controller will use a constant PWM level when BitRunner is enabled, as it does not control speed, just on/off)

I deleted the existing config file (shapeoko.json), set up a new machine with the above settings. Working like a charm now!

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.