hbridge14  2.1.0.0
Main Page

H-Bridge 14 Click

H-Bridge 14 Click is a compact add-on board with an H-Bridge gate driver, also known as a full-bridge pre-driver. This board features the DRV8873, an automotive H-Bridge motor driver from Texas Instruments. The DRV8873 is an N-channel H-Bridge motor driver that can drive one bidirectional brushed DC motor, two unidirectional brushed DC motors, solenoids, or other resistive inductive loads.

Click Product page


Click library

  • Author : Stefan Ilic
  • Date : Sep 2023.
  • Type : I2C/SPI type

Software Support

We provide a library for the H-Bridge 14 Click as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.

Package can be downloaded/installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Library Description

This library contains API for H-Bridge 14 Click driver.

Standard key functions :

Example key functions :

Example Description

This example demonstrates the use of the H-Bridge 14 board by driving the

motor in both directions with braking and coasting in between.

The demo application is composed of two sections :

Application Init

Initializes the driver and performs the Click default configuration.

void application_init ( void )
{
log_cfg_t log_cfg;
hbridge14_cfg_t hbridge14_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
hbridge14_cfg_setup( &hbridge14_cfg );
HBRIDGE14_MAP_MIKROBUS( hbridge14_cfg, MIKROBUS_1 );
err_t init_flag = hbridge14_init( &hbridge14, &hbridge14_cfg );
if ( ( I2C_MASTER_ERROR == init_flag ) || ( SPI_MASTER_ERROR == init_flag ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( HBRIDGE14_ERROR == hbridge14_default_cfg ( &hbridge14 ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}

Application Task

Drives the motor in both directions with coasting and braking in between, every sate is lasting 5 seconds.

void application_task ( void )
{
uint8_t fault_status = 0;
log_printf( &logger, " Driving motor Clockwise \r\n" );
hbridge14_register_read( &hbridge14, HBRIDGE14_REG_FAULT_STATUS, &fault_status );
log_printf( &logger, " Fault status : 0x%.2X \r\n", ( uint16_t ) fault_status );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
log_printf( &logger, " Brake is on \r\n" );
hbridge14_register_read( &hbridge14, HBRIDGE14_REG_FAULT_STATUS, &fault_status );
log_printf( &logger, " Fault status : 0x%.2X \r\n", ( uint16_t ) fault_status );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
log_printf( &logger, " Driving motor counter-clockwise \r\n" );
hbridge14_register_read( &hbridge14, HBRIDGE14_REG_FAULT_STATUS, &fault_status );
log_printf( &logger, " Fault status : 0x%.2X \r\n", ( uint16_t ) fault_status );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
log_printf( &logger, " Driving motor Coasting \r\n" );
hbridge14_register_read( &hbridge14, HBRIDGE14_REG_FAULT_STATUS, &fault_status );
log_printf( &logger, " Fault status : 0x%.2X \r\n", ( uint16_t ) fault_status );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}

The full application code, and ready to use projects can be installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Other Mikroe Libraries used in the example:

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.HBridge14

Additional notes and informations

Depending on the development board you are using, you may need USB UART Click, USB UART 2 Click or RS232 Click to connect to your PC, for development systems with no UART to USB interface available on the board. UART terminal is available in all MikroElektronika compilers.


hbridge14_s
H-Bridge 14 Click context object.
Definition: hbridge14.h:273
hbridge14_drive_motor
err_t hbridge14_drive_motor(hbridge14_t *ctx, uint8_t state)
H-Bridge 14 drive motor function.
hbridge14_sleep_state
err_t hbridge14_sleep_state(hbridge14_t *ctx, uint8_t sleep_state)
H-Bridge 14 control sleep function.
HBRIDGE14_DRIVE_MOTOR_BRAKE
#define HBRIDGE14_DRIVE_MOTOR_BRAKE
Definition: hbridge14.h:129
hbridge14_cfg_setup
void hbridge14_cfg_setup(hbridge14_cfg_t *cfg)
H-Bridge 14 configuration object setup function.
HBRIDGE14_ERROR
@ HBRIDGE14_ERROR
Definition: hbridge14.h:321
hbridge14_cfg_t
H-Bridge 14 Click configuration object.
Definition: hbridge14.h:293
application_task
void application_task(void)
Definition: main.c:65
HBRIDGE14_MAP_MIKROBUS
#define HBRIDGE14_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: hbridge14.h:253
hbridge14_set_pins
err_t hbridge14_set_pins(hbridge14_t *ctx, uint8_t set_mask, uint8_t clr_mask)
H-Bridge 14 set pins function.
hbridge14_init
err_t hbridge14_init(hbridge14_t *ctx, hbridge14_cfg_t *cfg)
H-Bridge 14 initialization function.
HBRIDGE14_DRIVE_MOTOR_CCW
#define HBRIDGE14_DRIVE_MOTOR_CCW
Definition: hbridge14.h:128
HBRIDGE14_REG_FAULT_STATUS
#define HBRIDGE14_REG_FAULT_STATUS
H-Bridge 14 description register.
Definition: hbridge14.h:75
application_init
void application_init(void)
Definition: main.c:28
hbridge14_register_read
err_t hbridge14_register_read(hbridge14_t *ctx, uint8_t reg, uint8_t *data_out)
H-Bridge 14 data register reading function.
HBRIDGE14_DRIVE_MOTOR_CW
#define HBRIDGE14_DRIVE_MOTOR_CW
H-Bridge 14 motor states setting.
Definition: hbridge14.h:127
hbridge14_default_cfg
err_t hbridge14_default_cfg(hbridge14_t *ctx)
H-Bridge 14 default configuration function.
HBRIDGE14_DRIVE_MOTOR_COASTING
#define HBRIDGE14_DRIVE_MOTOR_COASTING
Definition: hbridge14.h:130