Hello all
I've read so many stuff about speed-controlling a universal motor that I currently don't know what to do.
What I want to do: control the rpm of a universal motor.
Parts that I have to use: arduino, hall sensor, potentiometer, universal motor (230VAC, wattage usually around 250W, but might peak around 400W, max rpm: 16000)
circuit should run on 115V@60Hz and 230V@50Hz
I found 2 major solutions:
this is the same for both solutions:
- measuring the speed using a hall sensor
- setting different fix rpm values using a potentiometer
solution A) setting speed using a triac.
some people say this works, some people say it won't because the current-voltage phase shift
some say it's enough to measure the 0-crossing of the AC mains using an optocoupler, some say measure the voltage over the triac, because of the phase shift etc
for this solution I have to get the mains frequency into the equation and set the timings accordingly
solution B) this is what I kinda want to do. making a PFC that works from (let's say) 85V to 265V input, so we'll have an intermediate circuit voltage of around 380-400V DC. The universal motor can run with DC voltage without problems it seems (I hope that's really the case)
So I can control it using a PWM and a MOSFET or IGBT or something and an optocoupler to decouple the arduino from the mains. (a small PSU using a VIPer16 or something similar could be realized, too, to make the VCC for Arduino etc)
Doing this I would avoid some problems: circuit can run from 85-265V AC mains, no need to measure the main frequency, DC voltage with PWM to control the motor's drive.
But this is all I currently have on my hands, along with too many questions.
So let me start this slowly with these questions:
Is solution B indeed the way to go?
Will the motor have any problems with square-wave DC?
Do I need to ponder something like a snubber, initial current and RFI?
Thanks a lot for any reply that helps me start this project
BTW, I'm from Germany, so if you don't understand something at first, please ask me about it
With best regards,
Nik
PS: Additional stuff:
I'm an Arduino beginner, but I guess the sketch would be quite simple for solution B.
From my understanding I have to read the potentiometer using an ADC port, define a rpm value for the read-out level. Then I have to measure the rpm value, I guess this is done via interrupt (or I count the hi level on a digital port for 1 second, using millis() and a previously stored millis() value, then calculate the rpm)
after that I risen or lower the PWM value that's fed to the MOSFET/IGBT.
But again, I don't know the best way to do that without running into timing problems or cause slow reactions to speed changes.
I've read so many stuff about speed-controlling a universal motor that I currently don't know what to do.
What I want to do: control the rpm of a universal motor.
Parts that I have to use: arduino, hall sensor, potentiometer, universal motor (230VAC, wattage usually around 250W, but might peak around 400W, max rpm: 16000)
circuit should run on 115V@60Hz and 230V@50Hz
I found 2 major solutions:
this is the same for both solutions:
- measuring the speed using a hall sensor
- setting different fix rpm values using a potentiometer
solution A) setting speed using a triac.
some people say this works, some people say it won't because the current-voltage phase shift
some say it's enough to measure the 0-crossing of the AC mains using an optocoupler, some say measure the voltage over the triac, because of the phase shift etc
for this solution I have to get the mains frequency into the equation and set the timings accordingly
solution B) this is what I kinda want to do. making a PFC that works from (let's say) 85V to 265V input, so we'll have an intermediate circuit voltage of around 380-400V DC. The universal motor can run with DC voltage without problems it seems (I hope that's really the case)
So I can control it using a PWM and a MOSFET or IGBT or something and an optocoupler to decouple the arduino from the mains. (a small PSU using a VIPer16 or something similar could be realized, too, to make the VCC for Arduino etc)
Doing this I would avoid some problems: circuit can run from 85-265V AC mains, no need to measure the main frequency, DC voltage with PWM to control the motor's drive.
But this is all I currently have on my hands, along with too many questions.
So let me start this slowly with these questions:
Is solution B indeed the way to go?
Will the motor have any problems with square-wave DC?
Do I need to ponder something like a snubber, initial current and RFI?
Thanks a lot for any reply that helps me start this project
BTW, I'm from Germany, so if you don't understand something at first, please ask me about it
With best regards,
Nik
PS: Additional stuff:
I'm an Arduino beginner, but I guess the sketch would be quite simple for solution B.
From my understanding I have to read the potentiometer using an ADC port, define a rpm value for the read-out level. Then I have to measure the rpm value, I guess this is done via interrupt (or I count the hi level on a digital port for 1 second, using millis() and a previously stored millis() value, then calculate the rpm)
after that I risen or lower the PWM value that's fed to the MOSFET/IGBT.
But again, I don't know the best way to do that without running into timing problems or cause slow reactions to speed changes.