How to Control Speed of Small AC Motor
-
@alankilian So if I'm understanding this right, I could power the servo directly from a separate 5v power supply (which I happen to already have in my printer), and then send the pwm signal from one of the IO headers, and not have to worry about protecting the board from damage with diodes?
I have a servo motor here with a 300 degree sweep. Can I set M950 to an io pin rather than an output, and then just have the motor turn from, say, 5 degrees to 295 degrees by just setting the fan speed the same way I would a normal fan? I could just mount the dimmer board to a spring so the entire thing twists when the servo goes beyond the range of the pot. Or is the PWM signal not the same in servo vs fan mode?
-
@GoremanX I have never used a servo, so I'm not going to really be able to help with the controls-side of things.
Don't the links I sent discuss how to control the angle of the servo from GCODE?
-
@alankilian Yeah but angular motion isn't how the firmware controls fan speed. If I want part cooling to work, it looks like the part cooling fan needs to be assigned with M950 and M106, and then assigned to the appropriate tool with M563. I don't know if a servo that was assigned with M42 can be assigned to M563. In any case, M42 basically does the same thing as M106, but with preset frequencies that are appropriate to servos. So it's possible I can just replicate that with M950 Q50
-
Wait... does it even matter what connector I use? Isn't the PWM signal on fan headers generated by the ground pin? Couldn't I just hook up the PWM signal wire of the servo motor to any fan output ground pin? I don't know if the io headers are evn PWM-capable...
-
No, you need a pin that can go high and low to signal the servo.
The fan outputs only go high-impedance to low.
So you COULD tie a resistor to +5 from the fan ground pin and use tht as a signal.
I don't know why that would help you control the servo though.
I just don't know enough about fan control to be able to help.Other than that, I don't know how fan-control can be mapped into servo-angle control.
Maybe searching on the forum will help you come up with something.
-
@alankilian ugh, I feel like the whole thing is getting too complicated. I might settle for just an on/off solution with the motor speed set manually with the knob. I already have a 110v AC outlet on my printer that's switched by the Duet board.
But it sure would be nice to somehow be able to control AC motor speed through the Duet board... I can think of a bunch of applications that would benefit from it, like spindle speed on a CNC router, this air pump setup, etc
-
How about one of these?
https://www.amazon.com/dp/B00OSWQC9YLooks like it accepts a standard 12v PWM signal to control a 110v AC router spindle speed up to 10A
-
That's for controlling DC spindle motors.
- 12V 24V 48V 110V DC Motor Speed Controller
-
@alankilian It actually says both: "Can support AC and DC input"
And the printed text on the board says input can be AC or DC, while the PWM signal can be up to 12v DC
-
I am not an expert but the PCB design doesn't seem to have sufficient physical separation between the input and the output (creepage and clearance Distance) to be safe for high voltage.
-
You can make up a circuit to control a triac from another device. Here is an example https://circuitspedia.com/remote-control-ac-dimmer-arduino/. It would need some adaptation to take a PWM input.
-
@GoremanX
Why do you try to control the pumps RPM? The resulting airstream would be very non-linear.
Why not run the pump at full RPM ( maybe ON/OFF controlled by a Relais ) and control a waste gaste with a servo. That's much safer than trying to control AC!Just split the airtube and control the amount of air guided to the printer. That would result in a much faster response and the opening angle of the air-splitter is proportional to the air stream.
To safe energy, you can feed the wasted airstream back to the inlet.
Best of all: It's a printable thing!
-
@o_lampe That's a really interesting idea! I like it.
The main reason I want to control the pump's RPM is to minimize noise when full flow isn't needed. This pump puts out a ton of air, and full flow is only really required when printing very fast.
Also, for this particular pump, there is no single inlet. The air is drawn in through a wide foam filter into a large intake manifold, and there are 2 pump diaphragms inside that are on opposite sides of the motor. It's a pretty decent design that creates a very smooth airflow and makes vibrations nearly nonexistent.
But your idea would be really cool for splitting airflow between the hotends on my dual extruder printer...
-
@GoremanX
A loud pump can cost you a marriage...but a pump that frequently varies speed can be equally annoying. It's a Pest or Cholera decision.
From your description, it could be an aquaristic air pump, but bigger? Maybe a smaller one would do? It still takes a while to get used to the humming of such aquaristic pump, but it won't cost you your loved ones -
@o_lampe Oh I've gone through multiple pumps in my search for the right one. The cylindrical air pump that looks like a phallic symbol and is a pain to mount:
the Nidec 24v brushless pump:
a Vivosun AC pump:
(that one was by far the worst one)Most were too noisy (though the Nidec could be silenced easily), or had very pulsating air flow. None of them had adequate airflow. It's been a very expensive journey. I think I've finally found the perfect pump, and it's this one. Smooth, plentiful airflow, almost zero vibrations, and by far the quietest so far.
Still, I like my workshop silent, and I don't always need max airflow.
-
@GoremanX I just configured a pin to control a hobby servo and it's "working" as far as my logic analyzer can tell.
- M950 S0 C"exp.heater3"
- M280 P0 S100
The M950 configures the pin as a servo output and sets the frequency to 50Hz
The M280 sets the servo's position to 100-degrees.The M280 Sxxx value and the actual angle of the servo will be related, but not precise if you know what I mean.
Now, can you add in M280 commands to your slicer to control your "fan" or do you need something else?
-
@alankilian It needs to work with M106 so that slicer-generated part cooling commands turn the fan on and control its speed. The slicer doesn't use M280. What you're describing would require manually adding M280 commands at appropriate places in the file to replace the M106 commands that the slicer generates. For example, in some of my profiles, the fan turns on at about 33% after layer 1 (M106 S85), then gradually gets faster until it reaches 1mm of height, at which point it's set to 100%. Other profiles have different settings, depending on material and nozzle size. I use different slicing software, some make it easier than others to modify gcode automatically. Ideally, the solution I use would "just work" with M106 and no special gcode editing would be required.
-
I tried creating a fan and running it at 50 Hz and I get an appropriate waveform.
M106 doesn't have a lot of resolution (as expected) to produce between 1 and 2 ms pulses.
- M106 L0 Sxx
-S12 is 1 ms
-S25 is 2 ms
So that will get you fan-control with at least a few steps of servo angle.
- M106 L0 Sxx
-
What will happen if you will increase the frequency to let's say 100Hz, will this improve the pulse width resolution? Will servos still interpret it correctly?
"even as short as 5ms works with some.",
Edit: http://www.manual.spirit-system.com/index.php?title=Servo_list
-
@zapta said in How to Control Speed of Small AC Motor:
What will happen if you will increase the frequency to let's say 100Hz, will this improve the pulse width resolution?
Yes it will.
The faster the pulse-rate your particular servo can receive the better the resolution you will get controlling it as a fan.
The math is: 1/(rate in HZ) / 255 is the number of second-per-bit for the high-going pulse. (Maybe / 256, but it doesn't matter)
- A 1 millisecond pulse will be 0.001 / (1/Hz/255) in "Speed units"
- A 2 millisecond pulse will be twice that.
So the 1mS pulse tells you how many "Speed counts" you have for fill servo angle change.
-50 Hz gives you 12
-100 Hz gives you 25
-200 Hz gives you 50