esp_sensorless_bldc_control
is a sensorless BLDC control library based on ESP32 series chips, supporting the following features:
Please refer to:https://docs.espressif.com/projects/esp-iot-solution/zh_CN/latest/motor/index.html
Use the component manager command add-dependency
to add esp_sensorless_bldc_control
to your project's dependencies. The component will be automatically downloaded to the project directory during CMake
execution.
Plaintext
idf.py add-dependency "espressif/esp_sensorless_bldc_control=*"
Copy the esp_sensorless_bldc_control/user_cfg/bldc_user_cfg.h
file to your project directory and rename it to bldc_user_cfg.h
. Add the following to your main/CMakeLists.txt
file:
Plaintext
idf_component_get_property(bldc_lib espressif__esp_sensorless_bldc_control COMPONENT_LIB)
cmake_policy(SET CMP0079 NEW)
target_link_libraries(${bldc_lib} PUBLIC ${COMPONENT_LIB})
Note: This file is used to set motor control related parameters and must be included in the project.
C
esp_event_loop_create_default();
esp_event_handler_register(BLDC_CONTROL_EVENT, ESP_EVENT_ANY_ID, &bldc_control_event_handler, NULL);
switch_config_t_t upper_switch_config = {
.control_type = CONTROL_TYPE_MCPWM,
.bldc_mcpwm = {
.group_id = 0,
.gpio_num = {17,16,15},
},
};
switch_config_t_t lower_switch_config = {
.control_type = CONTROL_TYPE_GPIO,
.bldc_gpio[0] = {
.gpio_num = 12,
.gpio_mode = GPIO_MODE_OUTPUT,
},
.bldc_gpio[1] = {
.gpio_num = 11,
.gpio_mode = GPIO_MODE_OUTPUT,
},
.bldc_gpio[2] = {
.gpio_num = 10,
.gpio_mode = GPIO_MODE_OUTPUT,
},
};
bldc_zero_cross_adc_config_t zero_cross_adc_config = {
.adc_handle = NULL,
.adc_unit = ADC_UNIT_1,
.chan_cfg = {
.bitwidth = ADC_BITWIDTH_12,
.atten = ADC_ATTEN_DB_0,
},
.adc_channel = {ADC_CHANNEL_3, ADC_CHANNEL_4, ADC_CHANNEL_5, ADC_CHANNEL_0, ADC_CHANNEL_1},
};
bldc_control_config_t config = {
.speed_mode = SPEED_CLOSED_LOOP,
.control_mode = BLDC_SIX_STEP,
.alignment_mode = ALIGNMENT_ADC,
.six_step_config = {
.lower_switch_active_level = 0,
.upper_switch_config = upper_switch_config,
.lower_switch_config = lower_switch_config,
.mos_en_config.has_enable = false,
},
.zero_cross_adc_config = zero_cross_adc_config,
};
/*!< Init hardware driver */
bldc_control_init(&bldc_control_handle, &config);
/*!< Setting motor direction */
bldc_control_set_dir(bldc_control_handle, CCW);
/*!< Start motor control */
bldc_control_start(bldc_control_handle, 300);
6d8e9c96419c51b1d4a982dedbae2d900546a404
idf.py add-dependency "espressif/esp_sensorless_bldc_control^1.0.0"