BioMech Motor Bridges
Date: Wed, 23 Jul 1997 22:53:50 -0700
To: beam@webconn.com
From: "Mark W. Tilden"
Subject: Biomech Motor Bridges.
The following circuits were developed in 1988 when I needed a quality H-switch and just got fed up with all the conventional drivers I rapidly destroyed under variable loads. Even today I still can't find a commercial motor driver with specs like these, so I present them here. Some assembly required. Personal use only.

Excerpted from the draft Principa Robotica, due out this (fall? spring?).

markt.


Motor Drivers and Control:

Biomech Motor Bridges:

Though there are many other DC motor drivers on the market, most are difficult to configure for the low-power, variable load operations biomech devices require. The following circuits are based on a SCR-like current amplifier arrangement which, when biased correctly, works quite well for most push-pull inductive actuators from solenoids to stepper motors. The advantages are:

The motor bridge circuit is based on this simple power-mode amplifier:


			             Vcc |
			                 |
			                 p
			   R1      N---n
	      +ve input >--\/\/\--p      P
			           n     |
			           |    (M) (DC motor)
			           |     |
			           |     N
			           |----p
 			                 n
 			                 |
 			                 |
 			             Gnd |


	Figure 1: A high-gain one-way motor driver (+ve trigger)

When the input is high, current flows through the respective drive transistor bases biasing them into an active state and allowing current to flow through the motor. When the input is low, the current shuts off creating a very high impedance across the circuit. The advantage here is that the activating control input can be very low current provided its voltage is kept close to Vcc. This circuit is useful for pulse driving a motor in one direction from, for example, CMOS control outputs in solar-style designs where a high-impedance off-state is critical to save power.

By doubling this circuit and folding it appropriately, a positive-edge triggered biomech motor H-bridge circuit can be configured as follows:

             Vcc |--------------------------|
                 |  drive transistor        |  bias transistor
                 p /                        p       /
   R1      N---n                              n---N     R2
|-\/\/\--p       P                          P       p--\/\/\-|
|          n     |       (DC motor)         |     n          |
|          |     *--------*--(M)--*---------*     |          |
|    |-----|     |        |       |         |     |          |
|    |           N        |       |         N     |          |
|    |   |-----p          |---||--|           p---|-----|    |
|    |   |       n           0.47uF         n     |     |    |
|    |   |       |                          |     |     |    |
|    |   |       |                          |     |     |    |
|    |   |   Gnd |--------------------------|     |     |    |
|    |   |                                        |     |    |
|    |   |----------------------------------------|     |    |
|    |                                                  |    |
|    |--------------------------------------------------|    |
|                                                            |
|                                                            |
^+ve input1                                        +ve input2^

	Figure 2: The Basic Biomech Motor Bridge (+ve trigger)


Where:


N
  p  - NPN transistor (N = collector, p = base, n = emitter), e.g., 2N2222, 2N3904
n

P
  n  - PNP transistor (P = collector, n = base, p = emitter), e.g., 2N2907, 2N3906
p
R1 and R2 must be greater than 50k ohms to avoid over saturating the drive transistors (the drive transistors heat up and motor efficiency drops drastically. Usually not a fatal problem but power is wasted). R1, R2 can be as high as 20Mohms and still allow enough current to spin the motor, though current drops linearly with bias resistance increase. Exact bias equations vary depending on transistors used, but even high-power drive transistors can be controlled through small bias transistors, typically 2N3904s or 2N3906s.

The motor power profile can be set at the driver itself by varying R1 and/or R2 accordingly. For example, on a legged robot, while a leg is raised it can move forward on very little power (R1 = 5meg typical), but while on the ground the motor power can be maximized (R2 = 68k) to take best advantage of battery power and to minimize 'kicking' force as robot travels through an environment. That is, the bridge can be easily biased to deliver a full-power leg-drive force, but only a minimal power leg-return force. Such biasing can also linearise the action of motors with a forward-reverse rotational discrepancy. Gearing or internal friction can give a motor uneven forward-backwards motion, which the careful biasing of either R1 or R2 can reduce. Furthermore, uniformly high values of R1 and R2 can cut down the motor torque to where it is unlikely to allow the motor to damage to itself from unexpected external forces. This biomech bridge can serve as a 'variable suspension' to reduce power requirements and back-gearing damage without the need for suspension. This is its one major advantage over all-or-nothing FET-based H-bridge drivers, and makes the biomech bridge invaluable during debugging and fine-tuning of complex mechanical designs.

To drive the same motor from negative logic, the following circuit is required. The only change is the bias transistors' type (PNP) and orientation, and is the circuit most commonly used in biomech designs to take advantage of standard Nervous Net (Nv) control polarities.

             Vcc |--------------------------|
                 |                          |
                 p                          p
   R1      p---n                              n---p     R2
|-\/\/\--n       P                          P       n--\/\/\-|
|          P     |                          |     P          |
|          |     *--------*--(M)--*---------*     |          |
|    |-----|     |        |       |         |     |          |
|    |           N        |       |         N     |          |
|    |   |-----p          |---||--|           p---|-----|    |
|    |   |       n           0.47uF         n     |     |    |
|    |   |       |                          |     |     |    |
|    |   |       |                          |     |     |    |
|    |   |   Gnd |--------------------------|     |     |    |
|    |   |                                        |     |    |
|    |   |----------------------------------------|     |    |
|    |                                                  |    |
|    |--------------------------------------------------|    |
|                                                            |
|                                                            |
^+ve input1                                        +ve input2^

	Figure 3: The Basic Biomech Motor Bridge (-ve trigger)
And of course, the bias transistors can also be mismatched to make an alternate input polarity driver, fine for straight push-pull from a single control source if desired. The only problem being that the motor can never turn off while power is applied.

             Vcc |--------------------------|
                 |                          |
                 p                          p
   R1      p---n                              n---N     R2
|-\/\/\--n       P                          P       p--\/\/\-|
|          P     |                          |     n          |
|          |     *--------*--(M)--*---------*     |          |
|    |-----|     |        |       |         |     |          |
|    |           N        |       |         N     |          |
|    |   |-----p          |---||--|           p---|-----|    |
|    |   |       n           0.47uF         n     |     |    |
|    |   |       |                          |     |     |    |
|    |   |       |                          |     |     |    |
|    |   |   Gnd |--------------------------|     |     |    |
|    |   |                                        |     |    |
|    |   |----------------------------------------|     |    |
|    |                                                  |    |
|    |--------------------------------------------------|    |
|                                                            |
|                                                            |
*------------------------------------------------------------|
|
^
input

	Figure 4: The Single Input Biomech Motor Bridge
The difficulty is that either of the first two basic bridges can still smokeshow if both sides of the bridge are triggered at the same time. For a more stable, generic motor controller, the following does the job of isolating the decoded inputs so that a standard two-bit digital output can never fry the circuitry (provided the control signals are kept at low frequency):
             Vcc |---------------------*----|
                 |                     |    |
                 p                     |    p
   R1      p---n                       |      n---p     R2
|-\/\/\--n       P                     |    P       n--\/\/\-|
|          P     |                     |    |     P          |
|          |     *--------*--(M)--*----|----*     |          |
|    |-----|     |        |       |    |    |     |          |
|    |           N        |       |    |    N     |          |
|    |   |-----p          |---||--|    |      p---|-----|    |
|    |   |       n           0.47uF    |    n     |     |    |
|    |   |       |                     |    |     |     |    |
|    |   |       |                     |    |     |     |    |
|    |   |   Gnd |------*--------------|----|     |     |    |
|    |   |              |              |          |     |    |
|    |   |--------------| -------------|----------|     |    |
|    |                  |              |                |    |
|    |------------------| -------------|----------------|    |
|                       |              |                     |
|-----------------------|---| |--------|---------------------|
                        |   | |        |---|
                        |   | |   ---------|-----< Reverse
          Error < --------- | |   | -------|-----< Forward
                        | | | |   | | -----|-----< enable (-ve)
                        | | | | | | | |    |
                      | 8             1 |  |
                      |    74x139       <  |
                      | 9            16 |  |
                        | | | | | | | |    |
                        | | | | | | | |----|
                         

		Figure 5: The Safety Motor Bridge
The 74x139 (x represents LS, C, HCT, HC, or whatever voltage specification is required) is a symmetrical dual one-of-four decoder that can handle two such motor bridges elegantly from one chip, typically mirrored on either side. The Error output from the 74x139, if put through an LED for example, would indicate if an inappropriate input was generated by the controller, often useful in debugging control code in processor based designs.

The decoders enable input will turn off the bridge adequately but it does make the bridge circuit susceptible to stray inductive signals. If this driver is in a noisy environment or driven over long control lines (six inches or more), two 1meg pull-up resistors to Vcc on the outside edges of R1 and R2 will keep the bridge from picking up stray trigger signals and false starting the motor.

A further use for the Error output is as a dynamic break control. The modifications for this is as follows:


                  Vcc |---------------------*----|
        1N914         |                     |    |
      |--|<------------------------------------------|
      |               |                     |    |   |
  |---*--|<-------|   |                     |    |   |
  |               |   p                     |    p   |
  |     R1      p-*-n                       |      n-*-p     R2
  |  |-\/\/\--n       P                     |    P       n--\/\/\-|
  |  |          P     |                     |    |     P          |
  |  |          |     *--------*--(M)--*----|----*     |          |
  |  |    |-----|     |        |       |    |    |     |          |
  |  |    |           N        |       |    |    N     |          |
  |  |    |   |-----p          |---||--|    |      p---|-----|    |
  |  |    |   |       n           0.47uF    |    n     |     |    |
  |  |    |   |       |                     |    |     |     |    |
  |  |    |   |       |                     |    |     |     |    |
  |  |    |   |   Gnd |------*--------------|----|     |     |    |
  |  |    |   |              |              |          |     |    |
  |  |    |   |--------------| -------------|----------|     |    |
  |  |    |                  |              |                |    |
  |  |    |------------------| -------------|----------------|    |
  |  |                       |              |                     |
  |  |-----------------------|---| |--------|---------------------|
  |                          |   | |        |---|
  |                          |   | |   ---------|-----< Reverse
  |                          |   | |   | -------|-----< Forward
  |--------------------------|-| | |   | | -----|-----< engage (-ve)
                             | | | | | | | |    |
                           | 8             1 |  |
                           |    74LS139      <  |
                           | 9            16 |  |
                             | | | | | | | |    |
                             | | | | | | | |----|
                              

		Figure 6: The Full-Feature Motor Bridge
The two additional diodes mean that when both Reverse and Forward are triggered (1, 1), the motor shorts across the connecting Vcc rail. Not as good as a relay short, but effective, simple, and solid-state for using the motors back-EMF to quickly halt the motor and assist in holding its position. This design thus features all four useful control states for a motor: Free-wheel (0,0), Forward (0,1), Backward (1,0), and Break (1,1). Furthermore, as dynamic breaking does not shunt across Vcc and ground, the electrical noise generated is significantly reduced, making this circuit safer, if not ideal, for sensitive digital controllers.

For motors up to one watt (standard hobby motors) these circuits have shown themselves quite capable using common switching transistors. For more powerful motors, larger transistors with built-in shunt diodes are recommended to keep back-EMF spikes from blowing out the base-emitter couplings. The problem with such designs is that these spikes are dumped on the Vcc-ground rails and can severely destabilize any control circuitry that share this power. Nv designs are resistant to such effects but even still, strong bypass caps (1000uF or better) are recommended across the Vcc-ground rails on every bridge.

Copyright Mark W. Tilden
All rights reserved.
Jan. 1993


emphasis added, edited and converted to html by
Brian O. Bush / bushbo@mediaone.net
Updated: Dec. 8th, 1997



Back to the BEAM Robotics FAQ or Tek page.