Modus 3 Axis Servo Driver/Amplifier


This page will document the progress of the Modus 3 axis Servo driver board from concept to creation. Why Modus? Well, it just happened to be one of my favorite logical reasoning statements back when I was studying logic. Modus Ponens: If P, then Q. P, therfore Q. I needed a name for this project, and Modus beat out a couple of other choices!

Modus specifications:

  • 3 axis 30 amps per axis Servo amplifier for DC brushed motors
  • Fully tunable PID parameters programmable via RS232 over USB
  • Velocity mode, position mode, manual mode, step/dir mode
  • PID parameters stored in flash memory so they remain sticky even when the power is turned off
  • Quadrature encoder input for closed loop DC motor control
  • RC receiver connection for controlling MODUS via remote control (great for battlebot users)
  • Adjustable 2-30 amp current limiter on each axis
  • DB-25 male connector for easy hookup to PC parallel port
  • All parallel port inputs/outputs optically isolated
  • Joystick inputs for CNC machine control
  • Step/Dir inputs for CNC control software
  • Jumper selectable locked anti-phase PWM or signed magnitude PWM drive modes

    Phase 8: Building a new bridge (02.19.2006)

    Phase 7: Engineering work/component selection (01.25.2006)

    Phase 6: Modus makes it's first servo moves! (01.02.2006)

    Phase 5: New magnetic stirrer/hot-plate for rapid PCB etching (12.18.2005)

    Phase 4: H-bridge drive logic (12.14.2005)

    Phase 3: Microcontroller code is up and running with the encoder! (12.09.2005)

    Phase 2: Tooling up for SMT parts (11.28.2005)

    Phase 1: Learning about Mosfets (10.26.2005)

    Hardware issues that I've run into:

  • Isolated 12v supply for bridge drivers. Lots of burned parts learning about this.
  • Driving the high-side Mosfets on an all N-Channel H-Bridge. More burned parts.
  • Low RDSon effecting switching time
  • Minimizing shoot-through with switch delay
  • Bootstrap capacitance
  • High-side PWM
  • Current limiter circuitry on a ~25 amp controller
  • High-current (~75 amp) PCB layout considerations
  • Snubber at the motor
  • Power dissipation of the D2Pak FET package
  • RS232 over USB
  • Locked anti-phase vs signed magnitude PWM mode H-bridge control

    Firmware issues that I've run into:

  • Writing a super-fast servo interrupt handler: still not there yet
  • Timers, Timers, and more Timers
  • IRQ priority, semaphores, other low-level maddness
  • USART interrupts. Grrr, this one was a real pain
  • Programming a PIC18 device
  • Enabling and configuring the QEI interrupts on the PIC18F2331
  • Fast 32-bit math on an 8-bit microcontroller
  • 32-bit position registers implemented on an 8-bit microcontroller
  • PWM duty cycle
  • RC servo input
  • RS232 over USB PID tuning software
  • Joystick input
  • Step/Dir input
  • Locked anti-phase vs signed magnitude PWM modes
  • State machine