EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

PCB layout suggestions for DC motor + op-amp

Started by Jay April 5, 2004
Hi all.

I'm working on a motor servo-loop which uses a 16-bit DAC to drive a 
single-supply op-amp which in turns drives a small brushed DC motor (< 
20mA @ 12V). The op-amp / motor combo have been tested and work well.

I'm now going to make a few prototypes so I can work on the control-loop 
but I'm very worred about the PCB layout. Any suggestions on how to keep 
the DAC's GND noisy free from the op-amp / DC motor GND?

Everything I've read tells me that I'll be lucky if I get 14-bits 
control of the DAC WITHOUT a noise source like a motor...

Best regards,
Jay.


On Mon, 5 Apr 2004 21:10:07 -0500, Jay wrote:
> Hi all. > > I'm working on a motor servo-loop which uses a 16-bit DAC to drive a > single-supply op-amp which in turns drives a small brushed DC motor (< > 20mA @ 12V). The op-amp / motor combo have been tested and work well. > > I'm now going to make a few prototypes so I can work on the control-loop > but I'm very worred about the PCB layout. Any suggestions on how to keep > the DAC's GND noisy free from the op-amp / DC motor GND? > > Everything I've read tells me that I'll be lucky if I get 14-bits > control of the DAC WITHOUT a noise source like a motor...
Can you actually get 16 (or even 14) bit's worth of speed resolution out of a DC brushed motor? I'd be suprised, although I've never tested it, if you could get anything like that. I reckon you'd be hard pressed to see a consistent difference in speed between 2 adjacent output values from a 8 bit DAC. Does anyone know anything different? -- Trevor Barton
Hello,

In article <pan.2004.04.06.19.53.08.70706.28167@freeby.mesanet.com>, 
pcw@freeby.mesanet.com says...
> > Actually 8 bits is overkill for a motion control servo loop, and 1 bit > (on-off) is just fine if your loop update rate is fast enough (say 50 KHz > or so) and you dont mind the electrical noise.
Unfortunetly, I do need close to to 14-16 bit control, it's a slightly atypical motor based servo loop.
> Just remember that your motor has variable and unpredictable amounts of > friction in the couple of percent of full scale range, plus cogging which > means that your nice 16 bit adjustable drive signal turns into about a 5 bit > accurate torque out from your motor...
Thanks, I will certainly bear this in mind. The motor I am using has almost zero percivable cogging torque and the motion is amazingly smooth. Any suggestions on layout, assuming I did want to get close to my range of control? Jay.
On Mon, 05 Apr 2004 19:10:07 -0700, Jay wrote:

> Hi all. > > I'm working on a motor servo-loop which uses a 16-bit DAC to drive a > single-supply op-amp which in turns drives a small brushed DC motor (< > 20mA @ 12V). The op-amp / motor combo have been tested and work well. > > I'm now going to make a few prototypes so I can work on the control-loop > but I'm very worred about the PCB layout. Any suggestions on how to keep > the DAC's GND noisy free from the op-amp / DC motor GND? > > Everything I've read tells me that I'll be lucky if I get 14-bits > control of the DAC WITHOUT a noise source like a motor... > > Best regards, > Jay.
Actually 8 bits is overkill for a motion control servo loop, and 1 bit (on-off) is just fine if your loop update rate is fast enough (say 50 KHz or so) and you dont mind the electrical noise. Just remember that your motor has variable and unpredictable amounts of friction in the couple of percent of full scale range, plus cogging which means that your nice 16 bit adjustable drive signal turns into about a 5 bit accurate torque out from your motor... Peter Wallace
"Jay" <127.0.0.1@127.0.0.1> wrote in message
news:PPEcc.153$HU5.150@fe03.usenetserver.com...
> Hello, > > In article <pan.2004.04.06.19.53.08.70706.28167@freeby.mesanet.com>, > pcw@freeby.mesanet.com says... > > > > Actually 8 bits is overkill for a motion control servo loop, and 1 bit > > (on-off) is just fine if your loop update rate is fast enough (say 50
KHz
> > or so) and you dont mind the electrical noise. > > Unfortunetly, I do need close to to 14-16 bit control, it's a slightly > atypical motor based servo loop. > > > Just remember that your motor has variable and unpredictable amounts of > > friction in the couple of percent of full scale range, plus cogging
which
> > means that your nice 16 bit adjustable drive signal turns into about a 5
bit
> > accurate torque out from your motor... > > Thanks, I will certainly bear this in mind. The motor I am using has > almost zero percivable cogging torque and the motion is amazingly > smooth. > > Any suggestions on layout, assuming I did want to get close to my range > of control? > > Jay. >
OK, the PCB layout question: if you have a 16-bit DAC (and want +/- 1/2 LSB say) with 12V supply, then 1/2LSB = 0.5*12V/65536 = 92uV. You are going to have to be very careful to ensure that your digital hardware doesnt produce more noise than this on your analogue output, and the motor/amp will be even noisier. The low-power analogue DAC circuitry will need to be on its own 0V plane, which connects to the digital 0V plane at (ideally) one place only. You will have to look closely at feedthrough, especially if the DAC is sitting on an "active" bus (eg data bus)....Analog Devices have written plenty of good app notes about how to lay out this type of circuitry. "ground loops" are your enemy here, as is temperature. for 16 bits you'll probably need an electrostatic shield..... the motor/controller is where you will have real trouble though - apart from the aforementioned motor performance issues, there is likely to be lots of H field from the motor/driver/cabling, which any loop antenna will happily pick up (hence the requirement for a solid 0V plane). Careful attention to (twisted) cabling, PCB layout, positioning of motor etc. is mandatory, and it might not be a bad idea to keep your prototype in a diecast metal enclosure. The logic, analogue and motor power supplies will have to be connected together at a star-point, and you will have to look very closely at the dac-power amp interconnection (maybe a differential connection required) Once you have dealt with the noise issues, you will need to look at the temperature coefficients of your circuitry, reference accuracy, drift etc. If you can get 10 bits you're doing well, 12 is great (not including motor of course). temperature can be compensated for if you have a micro with a temperature sensor. ultimately the circuitry only needs to be about 2-bits "better" than the motor

The 2024 Embedded Online Conference