How does it work?
Brushless 8 Click is based on the TC78B042FTG, a three-phase brushless motor controller that offers high efficiency over a wide rotation range with automatic phase adjustment from Toshiba Semiconductor. This motor controller incorporates Toshiba’s original developed Intelligent Phase Control that secures high-level efficiency for a wide range of rotation speeds. As a result, the new devices can be used with motor drivers that have various voltages and current capacities as well as being used in combination with intelligent power devices at the output stages. It uses a sine-wave drive system with a smooth current waveform that reduces noise and generates less noise and vibration than motors with a rectangular wave drive system.
This Click board™ also contains a 3 channel Half-Bridge driver inverter, TB67Z800FTG from Toshiba Semiconductor, that receives its high and low side gate drive signals from TC78B042FTG and runs the connected Brushless DC Motor up to 22V/3A. For this type of application, more precisely for Brushless Click boards that require BLDC Motor with Hall Sensor for their work, Mikroe offers its users just one such motor, whose offer you can find here. The typical oscillation frequency is 9.22 MHz based on resistor R23 value 22kΩ drives the motor with 120° commutation. When the Hall signal indicates a rotation speed of 1 Hz or more, the motor rotates by estimating the rotor position according to the command of the LA pin. When rotation speed is less than 1Hz or the motor rotation direction is reversed, the motor is driven with 120° commutation.
The desired value on the previously mentioned LA pin as well as on other pins related to lead angle control, the TC78B042FTG obtains by the DAC3608, a low-power, eight-channel, digital-to-analog converter from Texas Instruments which establishes communication with MCU via I2C serial communication. Besides, the DAC43608 also allows the user to select a valid I2C address byte between 5V, GND, or I2C communication lines by positioning the jumper to an appropriate position marked from JP1 to JP4. As for the TC78B042FTG power supply, it is powered with a voltage value obtained by TPS7A49, an ultralow-noise linear regulator from Texas Instruments that converts an input value in the range of 6.5 to 22V to 6V that powers the main chip.
In addition to I2C communication, several GPIO pins connected to the mikroBUS™ socket pins are also used. The DIR pin, routed on the CS pin of the mikroBUS™ socket, is used to select the direction of motor rotation, while the control of the motor rotation speed itself can be chosen via the VSP SEL jumper. With this jumper, the user has the option of the rotation speed control using a PWM signal or using a value obtained by the DAC43608. The pin marked with RES routed at the RST pin of the mikroBUS™ socket can be used for Error detection more precisely for enabling or disabling commutation outputs. The FG pin at the INT pin of the mikroBUS™ socket represents the rotating pulse based on the selectable number of pulses per revolution. And the last pin labeled as AN provides accurate current monitoring via LT1999-10, a high-voltage, bidirectional current sense amplifier from Analog Devices.
There are also 2 headers on the board that contain both W, V, and U-phase Hall input signals, as well as a header with High & Low-side commutation signals. Besides, it has 2 LED indicators labeled as ISD and TSD intended for thermal shutdown and over-current protection.
This Click board™ is designed to be operated only with a 5V logic voltage level. A proper logic voltage level conversion should be performed before the Click board™ is used with MCUs with different logic levels.
Specifications
Type
Brushless
Applications
Can be used in home appliances such as air-conditioner fans, air purifiers, and industrial equipment.
On-board modules
Brushless 8 Click is based on the TC78B042FTG, a three-phase brushless motor controller that offers high efficiency over a wide rotation range without phase adjustment from Toshiba Semiconductor.
Key Features
Sine-wave PWM control, automatic lead angle control (InPAC), Hall sensor input, rotation switch, output current limit, built-in motor lock detection, and more.
Interface
Analog,GPIO,I2C,PWM
Feature
No ClickID
Compatibility
mikroBUS™
Click board size
L (57.15 x 25.4 mm)
Input Voltage
5V
Pinout diagram
This table shows how the pinout on Brushless 8 Click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Onboard settings and indicators
Label | Name | Default | Description |
---|---|---|---|
LD1 | PWR | – | Power LED Indicator |
JP8 | VSP SEL | Left | Rotation Speed Control Selection PWM/DAC: Left position PWM, Right position DAC |
JP1-JP4 | JP1-JP4 | JP1 Populated | DAC43608 Address Byte Selection |
LD2 | TSD | – | TSD LED Indicator |
LD3 | ISD | – | ISD LED Indicator |
J1 | HALL | Populated | Hall Sensor Input Pins |
J2 | – | Unpopulated | High & Low-Side Commutation Signals Pins |
Brushless 8 Click electrical specifications
Description | Min | Typ | Max | Unit |
---|---|---|---|---|
Supply Voltage | 6.5 | – | 22 | V |
Maximum Output Voltage | – | – | 18 | V |
Maximum Output Current | – | – | 3 | A |
Operating Frequency | 6.8 | 9.22 | 15.5 | MHz |
Power Dissipation | – | – | 4.25 | W |
Operating Temperature Range | -40 | – | +115 | °C |
Software Support
We provide a library for the Brushless 8 Click on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
This library contains API for Brushless 8 Click driver.
Standard key functions
void brushless8_cfg_setup ( brushless8_cfg_t *cfg )
– Config Object Initialization function.BRUSHLESS8_RETVAL brushless8_init ( brushless8_t *ctx, brushless8_cfg_t *cfg )
– Initialization function.void brushless8_default_cfg ( brushless8_t *ctx )
– Click Default Configuration function.
Key functions:
uint16_t brushless8_dac_read_data ( brushless8_t *ctx, uint8_t reg )
– Brushless 8 I2C read function.void brushless8_set_direction ( brushless8_t *ctx, uint8_t status )
– Brushless 8 dir pin setting.void brushless8_set_duty_cycle ( brushless8_t *ctx, float duty_cycle )
– Sets PWM duty cycle.
Examples description
This example demonstrates the use of Brushless 8 Click board™.
Application Init
The demo application is composed of two sections :
Initializes the Click board™ to appropriate settings based on selected mode.
Initialization settings are sent through I2C bus and the motor itself is controlled via PWM or DAC over I2C.
Modes:
- BRUSHLESS8_PWM
- BRUSHLESS8_DAC
void application_init ( void ) { log_cfg_t log_cfg; /**< Logger config object. */ brushless8_cfg_t brushless8_cfg; /**< Click config object. */ // Logger initialization. LOG_MAP_USB_UART( log_cfg ); log_cfg.level = LOG_LEVEL_DEBUG; log_cfg.baud = 115200; log_init( &logger, &log_cfg ); log_info( &logger, "Application Init" ); // Click initialization. brushless8_cfg_setup( &brushless8_cfg ); // Select desired mode. brushless8_cfg.ctrl_mod = BRUSHLESS8_MODE; BRUSHLESS8_MAP_MIKROBUS( brushless8_cfg, MIKROBUS_1 ); BRUSHLESS8_RETVAL init_flag = brushless8_init( &brushless8, &brushless8_cfg ); if ( BRUSHLESS8_OK != init_flag ) { log_error( &logger, "Application Init Error" ); log_info( &logger, "Please, run program again..." ); for ( ; ; ); } brushless8_default_cfg ( &brushless8 ); if ( BRUSHLESS8_PWM == brushless8.ctrl_mod ) { brushless8_set_dac_vout( &brushless8, BRUSHLESS8_DAC_REG_CHN_A_DVSP, 0 ); brushless8_set_duty_cycle( &brushless8, 0.1 ); brushless8_pwm_start( &brushless8 ); Delay_ms( 3000 ); } else if ( BRUSHLESS8_DAC == brushless8.ctrl_mod ) { brushless8_pwm_stop( &brushless8 ); brushless8_set_dac_vout( &brushless8, BRUSHLESS8_DAC_REG_CHN_A_DVSP, 100 ); Delay_ms( 3000 ); } log_info( &logger, "Application Task" ); log_printf( &logger, "------------------------------rn" ); }
Application Task
This example demonstrates the use of Brushless 8 Click board™. Brushless 8 Click communicates with the device via I2C driver in order to set adequate voltage level for connected motor. Current PWM/DAC settings being output are sent via logger.
void application_task ( void ) { if ( BRUSHLESS8_PWM == brushless8.ctrl_mod ) { for ( float duty = 0.1; duty < 1; duty += 0.1 ) { Delay_ms( COMM_DELAY ); brushless8_set_reset( &brushless8, BRUSHLESS8_RESET_DIS ); brushless8_set_duty_cycle( &brushless8, duty ); brushless8_set_reset( &brushless8, BRUSHLESS8_RESET_EN ); log_info( &logger, "Duty: %u%%", ( uint16_t )ceil( duty * 100 ) ); float adc_vout; brushless8_read_an_voltage( &brushless8, &adc_vout ); log_info( &logger, "ADC [ V ]: %.2f", adc_vout ); log_printf( &logger, "------------------------------rn" ); } for ( float duty = 0.9; duty >= 0; duty -= 0.1 ) { Delay_ms( COMM_DELAY ); brushless8_set_reset( &brushless8, BRUSHLESS8_RESET_DIS ); brushless8_set_duty_cycle( &brushless8, duty ); brushless8_set_reset( &brushless8, BRUSHLESS8_RESET_EN ); log_info( &logger, "Duty: %u%%", ( uint16_t )ceil( duty * 100 ) ); float adc_vout; brushless8_read_an_voltage( &brushless8, &adc_vout ); log_info( &logger, "ADC [ V ]: %.2f", adc_vout ); log_printf( &logger, "------------------------------rn" ); } Delay_ms( COMM_DELAY ); brushless8_pwm_stop( &brushless8 ); Delay_ms( COMM_DELAY ); brushless8_pwm_start( &brushless8 ); } else if ( BRUSHLESS8_DAC == brushless8.ctrl_mod ) { for ( int16_t dsvp = 200; dsvp <= 5000; dsvp += ( ( 5000 - 200 ) / 10 ) ) { Delay_ms( COMM_DELAY ); brushless8_set_reset( &brushless8, BRUSHLESS8_RESET_EN ); brushless8_set_dac_vout( &brushless8, BRUSHLESS8_DAC_REG_CHN_A_DVSP, ( uint16_t )dsvp ); brushless8_set_reset( &brushless8, BRUSHLESS8_RESET_EN ); log_info( &logger, "DSVP [ mV ]: %d", dsvp ); float adc_vout; brushless8_read_an_voltage( &brushless8, &adc_vout ); log_info( &logger, "ADC [ V ]: %.2f", adc_vout ); log_printf( &logger, "------------------------------rn" ); } for ( int16_t dsvp = 5000; dsvp >= 200; dsvp -= ( ( 5000 - 200 ) / 10 ) ) { Delay_ms( COMM_DELAY ); brushless8_set_reset( &brushless8, BRUSHLESS8_RESET_EN ); brushless8_set_dac_vout( &brushless8, BRUSHLESS8_DAC_REG_CHN_A_DVSP, ( uint16_t )dsvp ); brushless8_set_reset( &brushless8, BRUSHLESS8_RESET_EN ); log_info( &logger, "DSVP [ mV ]: %d", dsvp ); float adc_vout; brushless8_read_an_voltage( &brushless8, &adc_vout ); log_info( &logger, "ADC [ V ]: %.2f", adc_vout ); log_printf( &logger, "------------------------------rn" ); } } else { log_error( &logger, "Application Task Error" ); log_info( &logger, "Please, run program again..." ); for ( ; ; ); } }
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
- I2C
- PWM
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. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.
mikroSDK
This Click board™ is supported with mikroSDK – MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant Click board™ demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.
For more information about mikroSDK, visit the official page.