Universal Positioner

I've been looking into this one for a while. Target structure:

  • Two Encoder Inputs
  • Four Half Bridges with configurable fixed off time and hardware current limit
  • Software current limit (high or low)

The idea is to allow the following configurations (although I'm lacking in software for everything)

  • Open loop stepper driver with sinusoidal microstepping support
  • brushless driver (sensorless vector)
  • Open loop DC motor (with current limit)
  • Single encoder closed loop brushless
  • Single encoder closed loop DC
  • Stepper with encoder verification
  • Stepper as velocity control with encoder position control
  • Dual encoder brushless motor
  • dual encoder DC motor
  • Two single encoder DC motor
  • Stepper vector control (use a stepper as a high pole count brushless motor in OLV mode with an encoder)

I intend to support quadrature encoders and hopefully SSI encoders.

MCU requirements: It MUST have two encoder inputs and hopefully multiple SPI ports. I'm looking at a dsPIC or PIC32, but I may go PSOC 4/5 for the integrated CPLD support. There's also the possibility of ARM, but I'm going to have to go digging to find one. The downside of choice.

Half Bridge Requirements:

  • Shoot Through protection
  • Cycle by cycle current limit/measurement

Stepper driver control:

  • 4 half bridges
  • Lookup table for step to current and direction control

Servo mode control:

  • Layer 1: Current control
  • Layer 1A: Commutation control (Stepper and Brushless only)
  • Layer 2: Velocity Control
  • Layer 3: Position control

This is a typical multi-loop control of a system. As you go "down" the layers, the loop rate goes up. Position may be 1KHz, velocity 4KHz, current 20KHz (PWM rate). Each loop can use a different sensor. Current control takes current sensors (high or low side). Commutation can be determined either from the current sensors (Open Loop Vector control) or from hall effect sensors. Velocity measurements can be determined from current sensors (OLV again), hall sensors, or from an encoder. Position can be determined by all modes again. As you go down in the list towards current sensors, the software complexity goes up and the loop accuracy goes down. Not a big deal if you're running a washing machine. Big deal if you're trying to position a machine tool axis. Often times the position and velocity loops feed from the same encoder. However, they may also feed from separate encoders. This gives you true velocity (back of motor) for jerk and acceleration control, while you get true positional accuracy from an absolute linear encoder. This is ideal for using cheaper, sloppy gearboxes on an fairly accurate axis.

Just remember, software is great but software paired with good hardware is phenomenal.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License