1

I have done s SE survey of BLDC motors and figured out they are essentially stepper motors but aimed for continuous torque. Moreover they differ from brushed DC motors significantly in terms of control.

I am building a linear rail for a camera (so the camera can be moved in linear axis) and the rail is quite long. I want to do position control over this rail. Can I use BLDC motors as rotary position encoders to control the brushed DC motors to move the rail precisely?

The motor I have is from Seagate ee25.2 HDD and has 3 wires. Can such BLDC motors provide accurate position control?

I have search but couldn't find a project for position control, I did find direction control and velocity control usage for scrapped BLDCs.

JRE
  • 67,678
  • 8
  • 104
  • 179
user0193
  • 416
  • 1
  • 3
  • 9
  • HDD motors incorporate hydrodynamic bearings, which can not carry significant load and can only rotate one direction. Also it probably will not generate enough voltage at low speed. Simple solution could be cheap BLDC motor for toy and 3-phase sinusoidal PWM drive without feedback. – Vladimir Jul 23 '22 at 15:43
  • 1
    BLDC motors only generate signals when they're moving. That's why you can find direction (moving) and velocity (moving) projects, but not position (not moving). You could get position if you count cycles from them though. How about use BLDC motors instead of DC motors for position control, and drive them as steppers to get them to a specific position? – Neil_UK Jul 23 '22 at 16:13
  • there are many tradeoffs between power, smooth torque, rotational inertia , acceleration due to inertial mass, resolution vs number of phases per rev, pulley/gear ratio reduction and torque increase, number of phases, friction. Then coil inductance, resistance, thermal power limits, conservation of energy, peak power, cable strategy. If you are going to do this properly, each value must be defined somehow or choose a starting point from power needs and a servo position, velocity, acceleration and jerk control system. – Tony Stewart EE75 Jul 23 '22 at 16:27
  • @Vladimir thanks but I am not going to use BLDC for driving, only encoding. The driving will be done by brushed DC motors – user0193 Jul 23 '22 at 19:21
  • @Neil_UK I have brushed DC motors which I want to drive and want to use BLDC as merely encoders. I think your counting cycles idea is good, but then I would need to re-calculate reference point each time. – user0193 Jul 23 '22 at 19:24
  • @TonyStewartEE75 yes, I would need to be quite thorough onto various parameters that you have mentioned. I wont be using BLDC to drive, rather use them for encoding, while rail would be driven with Brushed DC motor. So positional encoding must be good. – user0193 Jul 23 '22 at 19:25
  • positional encoding with a BLDC is non-existent, which is rather different from your required 'good'. You only need to recalculate the reference point each time power is lost, most pulse-counting systems do this with a limit switch that they drive into when power is first applied to establish the reference position, then count away from this. – Neil_UK Jul 23 '22 at 19:28
  • @Neil_UK yes, I did indeed planning on adding limit switch. So as per your comment, merely count the steps and calibrate the distance per step, right? – user0193 Jul 23 '22 at 19:31
  • 1
    As @Neil_UK says, counting "steps" is fairly easy while the rotor is rotating at a high speed. As you approach a target position, and slow down to a stop, step amplitude becomes quite small - at some slow speed, noise competes with tiny voltages, making mis-counting likely. – glen_geek Jul 23 '22 at 20:40
  • _"the rail is quite long"_ - how long? – Bruce Abbott Jul 23 '22 at 22:05
  • A BLDC motor used as a generator is the wrong tool for the job. You can use a hammer to put in screws, sort of, but a screwdriver works far, far better. – Neil_UK Jul 24 '22 at 05:18
  • The basic idea of using a position sensor to provide closed loop control is a good idea. But a bldc does not make a good position sensor. Use an encoder instead. The easiest thing would be to work with a motion control specialist company. They can help you select the right parts that will work together as a system. Once you have a motor (of any type) and a position sensor and some type of controller you basically have a servomotor positioning system. – user57037 Jul 24 '22 at 06:16
  • 1
    @mkeith thanks I just wanted to make-do with what is available as the project is low budget and is not persistant. More like 2-3 shots and thats it. So I think Ill follow what Neil_UK has mentioned, to count the pulses – user0193 Jul 24 '22 at 10:47
  • https://www.wikiwand.com/en/Synchro – Tony Stewart EE75 Jul 24 '22 at 11:14
  • @BruceAbbott around 15m – user0193 Jul 24 '22 at 11:17
  • 1
    counting pulses gives you an incremental displacement, but you have not shared your servo position control specs. which includes F=ma. P=VI , max acceleration, max velocity and position error tolerance and home calibration. You may also have hysteresis errors. A stepper control system on 8mm pulleys can do 1m/s full step and fractional steps are slower – Tony Stewart EE75 Jul 24 '22 at 17:41

1 Answers1

2

A BLDC motor, used as an generator, produces an AC output voltage with amplitude roughly proportional to velocity, and frequency exactly proportional to velocity.

There are two ways to try to extract position from this, both involve integration.

  • You can precision rectify the voltage, and perform an analogue integration. This is subject to gain and offset errors, which will give you unbounded position drift over time.
  • You can square-up the signal and integrate the frequency to phase, aka count the pulses. This will give you relative position exactly, down to some speed at which you can accurately detect the pulses. Below that speed, offset and noise errors mean that you can't determine whether the motor has produced a pulse or not. Unless you want the equivalent of analogue drift as you try to interpret noise as pulses, you need to set a lower amplitude threshold and reject signals below that, which means you cannot track final fine-positioning movements.

The best thing to do is to use the right tool for the job(™) . If you are going to count pulses, then use an optical encoder. These produce clean logic pulses at any speed, including very slow and stopped.

They also produce 2-phase pulses, which requires less logic to control the requisite bidirectional counter than the 3-phase waveform from a BLDC.

Neil_UK
  • 158,152
  • 3
  • 173
  • 387
  • I think your first point is more suitable, but I am not sure why would I get offset error, the sinusoidal output wave is pretty much periodic so what would cause it to drift? – user0193 Jul 24 '22 at 10:51
  • 1
    @user0193 the 3 ph windings produce voltage proportional to speed kV/RPM. There will be some low speed SNR error threshold. How low is hard to estimate. you have yet to define position resolution specs and velocity profile. You need either a "resolver" or a decoder with absolute position or like a stepper , relative with home switch or stop at both ends. – Tony Stewart EE75 Jul 24 '22 at 11:00
  • but "resolvers" use 3 windings XY+Z=excitation for quadrature XY rather than 3 phase – Tony Stewart EE75 Jul 24 '22 at 11:06
  • oh thanks makes so much sense. Just figured out that there is a analogous device to encoder called [resolver](http://www.nidec-avtron.com/encoders/knowledge-base/encoders-vs-resolvers/). I believe I have sufficient information to execute. Thanks – user0193 Jul 24 '22 at 11:13