µModule H-Bridge module

Introduction

This µModule implements a 16A H-bridge with rich feed-back options to create a closed-loop speed-controller application. The module interfaces to the external world using the TWI interface that's common among all µModules. It also has an optional CMOS-level RS-232 interface. It can control motors up to 18V.

Features

  • Standard µModule TWI with optional RS-232 interface
  • Integrated 3.3V power supply, 5V operation is optional using an external power source
  • 16A current limit
  • 7 to 18V motor voltage
  • High-side short-circuit protection
  • High efficiency n-channel MOSFETs
  • Rich speed-feedback options for closed-loop operation
  • Back-EMF feedback for sensorless motion-control
  • PID control loop
  • Acceleration and deceleration limits
  • Traveled distance calculation
  • 'Go-to-distance' support with trapezoid speed-profile
  • Braking and free-wheeling support
  • Parameters can be stored in permanent EEPROM storage
  • Duty-cycle throttling to limit torque
  • Per-cycle programmable current-limit
  • Servo controller mode with external position feedback potentiometer

License

This document and all the accompanying design documentation (for example schematic and PCB files) are covered by the H-Storm Non-Commercial License (HSNCL).

H-Storm Non-Commercial License (HSNCL)

Copyright 2004-2007 Andras Tantos and Modular Circuits. All rights reserved.

Redistribution and use in source or binary forms, or incorporated into a physical (hardware) product, with or without modification, are permitted for non-commercial use only, provided that the following conditions are met:

  • The redistribution doesn't result in financial gain.
  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in any other form must contain in printed or electronical format the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • All advertising materials mentioning features or use of this technology must display the following acknowledgment:
    This product includes H-Storm technology developed by Andras Tantos and Modular Circuits.
  • Neither the name of Andras Tantos or Modular Circuits may be used to endorse or promote products derived from or using this technology without specific prior written permission.

ALL THE INFORMATION, TECHNOLOGY, AND SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANDRAS TANTOS, MODULAR CIRCUITS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE OR TECHNOLOGY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Design description

The bus interface

The TWI bus interface follows the µModule standards. There are six or four-pin connectors on the board, both with identical functionality. Two wires are used for the TWI signal transmission (clock and data) while the rest provide power and ground signals. The interface can be operated at a rate up to 400kHz. This module never initiates any transactions on the bus, it operates in slave-only mode. Status information can be acquired by polling and commands can be sent to the module at any time. The module implements the standard 8-bit register bank µModule communication protocol.

Powering options

The module can source and sink power on this interface. The power to and from these sockets can be interrupted by an on-board jumper. With this there are three possible powering configurations with regards to the logic-level functions:
  • The module is powered form the same power supply as the motor. The module provides power to other devices on the TWI bus
  • The module is powered from the power supply of the motor however it does not power other devices on the TWI bus
  • The module is powered from the TWI bus
The third powering mode has to be used if 5V operation is required.

The H-bridge

The H-bridge is comprised from 4 n-channel power MOSFETs. These transistors have extremely low on-resistance, leading to high-efficiency and low heat-generation even at high power levels. By replacing the standard IRFZ48 transistors with IRL2203 ones, no heat-sink is required up to 10A of continuous current. The efficiency of the bridge is almost 98% from a 18V supply, 96% at 10V and 94.7% at 7.2V supply voltage. The transistors are driven by LTC1155 dual-channel high-side driver ICs. These devices can deliver higher gate control voltages than the power supply thus allowing the use of n-channel MOSFETs on the high-side of the bridge as well. These chips also provide a second level of short-circuit protection by measuring the voltage drop on the sense resistor. Shot-through protection is established by monitoring the low-side gate voltage and disabling the high-side gate drives until the low-side gate voltage drops low enough. This mechanism also provides protection against opening a low and a high-side driver of the same half of the bridge at the same time. Since the drivers can provide significantly higher voltages (especially for the low-side MOSFETs) than the maximum allowable GS voltage, a zenner protection diode limits the GS voltage to 10V. All four MOSFETs can independently be turned on and off (with the exception of two MOSFETs on the same side being turned on at the same time) allowing all possible valid operating modes of the bridge to be used:
  • Forward drive
  • Backward drive
  • Free-wheeling
  • Braking

Feedback options

A wide range of feedback options are available on the module to provide additional health-monitoring and establishing closed-loop speed-control functionality. Both voltage (relative to the ground) on the motor connectors can be monitored as well as the voltage across the current-sense resistor which is proportional to the current flowing through the motor. Monitoring these values with a 10-bit resolution A/D converter precise knowledge of the current system status can be established. These measurements can be used to calculate the back-EMF response of the driven motor, which is proportional to the rotation speed. This value in turn can be used to close the control loop and create a true speed-controlled H-bridge. When more precise measurement of the rotation is required, an external quadrature encoder can be used and the signal of the optical gates can be fed back to the module. Two input pins are wired to a header for that purpose.

Miscellaneous functions

The module on the top of the standard TWI interface, that is common among all µModules also contains a (logical level) RS-232 interface as well. This interface can be used to connect the module to other microcontroller modules or (after level-shifting) to a PC which doesn't have a TWI interface.

The TWI interface

The TWI interface adheres to the standard µModule communication protocol. It implements 8-bit register-bank addressing, and defines 32 registers. Each register corresponds to a single channel.

OffsetSizeNameAccessComment
0int16_tRequestValueR/WSpeed control request signal R/W (Scaled between -0x3fff and 0x3fff). 0x4000 is freewheeling and 0x4001 is braking.
2int16_tIFactorR/WPID control loop integrator value
4int16_tPFactorR/WPID control loop proportional value
6int16_tDFactorR/WPID control loop differentiator value
8int16_tPFFactorR/WControl bypass proportional value
10int16_tSampleOffsetR/WControl loop input bias
12int16_tMaxPositiveChangeR/WMaximum single-step change in speed in the positive direction. If a bigger change is requested in RequestValue a ramp is generated.
14int16_tMaxNegativeChangeR/WMaximum single-step change in speed in the negative direction. If a bigger change is requested in RequestValue a ramp is generated.
16int32_tDistanceR/WIntegrated actual speed value. An approximate measurement of the travelled distance.
20int32_tFwDistanceLimitR/WMaximum distance allowed in the positive direction. When Distance approaches this value, a speed-ramp using MaxPositiveChange is generated such that speed will reach 0 when distance reaches FwDistanceLimit
24int32_tBwDistanceLimitR/WMaximum distance allowed in the negative direction. When Distance approaches this value, a speed-ramp using MaxNegativeChange is generated such that speed will reach 0 when distance reaches BwDistanceLimit
28int32_tDistanceToStopR/OCurrent estimated distance required to stop
32int16_tCurrentRequestR/OActual current speed request value. This in general is equal to RequestValue except when ramp-generation is in progress
34int16_tCommandR/OCommand given to the H-bridge. This is the output of the control loop
36int16_tIValueR/OPID loop working set
38int16_tLastErrorR/O
40int16_tErrorR/O
42int16_tVoltageSampleR/OLast Back-EMF sample. This is the measured speed, and the input of the control loop
44int16_tBaseValueR/OBack-EMF sampling code working set
46int16_tSampleCnt_SnapshotR/O
48int16_tMinValue_SnapshotR/O
50int16_tMinValueR/O
52int16_tMaxValueR/O
54int16_tSampleCntR/O
56int16_tOriginalRequestValueR/ORamp-generation code working set
58uint8_tSampleStateR/OBack-EMF sampling code working set
59uint8_tDutyCycleThrottleR/WMaximum duty cycle allowed on the H-bridge. This limits the maximum (average) voltage that can be applied to the motor
60uint8_tNewDataR/OUsed for debug outputs
61bool8_tIsForwardR/OSet to true if the motor is energized in the forward direction
62uint16_tCurrentMaxR/OPeak current drawn by the motor
64uint16_tCurrentDeltaR/OCurrent draw detection code working set
66uint16_tCurrentTempR/O
68uint16_tCurrentMaxSearchR/O
70uint8_tADBufferEnableR/OWhen set to 0, AD sampling is in progress
71bool8_tADBufferEnableHostR/WWhen set to true, host request a new set AD sampling. It will happen in the next control cycle. When sampling is done, it is reset to false
72uint16_tCurrentLimitR/WMaximum current draw allowed. If during the 'on' part of the cycle, the current draw reaches above this level, the MOSFETs are switched off and the 'on' part of the cycle is terminated
74uint8_tOperatingModeR/WSet to 0 for speed-controller, and 1 for servo-controller mode
75uint8_tDummy1R/WReserved
76uint16_t*80ADBufferR/WAD sampling buffer

Legend:

int8_t
Signed 8-bit integer
int16_t
Signed 16-bit integer
int32_t
Signed 32-bit integer
uint8_t
Unsigned 8-bit integer
uint16_t
Unsigned 16-bit integer
uint32_t
Unsigned 32-bit integer
bool8_t
8-bit boolean value (possible values are 0 for false, and non-zero for true)
R/W
Register has read/write access
R/O
Register has read-only access

Design files

µModule Users Manual (HSOL)
Schematic and PCB in PDF format (HSNCL)
Firmware source code (HSNCL)
© 2004-2007 Andras Tantos