Найти в Дзене

Мудрён дом и esp32, DC MOTOR, key, L289N НЕ АРДУИН

Неплохо почитать теорию по ШИМ и ШИМ. можете кстати и сами поискать в просторах информационных. Пример по шим есть и в espressif и многа. Выше можно выбрать пример по ШИМ)). Кнопка есть , движок припас. Чип добыл и драйвер взял. И пример на раз нашли В чём подвох? Судьба кажи? Так всё просто не бывает? Где облом нас ожидает? Как его нам умаслить и удачу обрести? Схемное решение и уже поправленное в кнопе там не оч и понятно было ПРИМ если в поисковике набрать комплектующие для роботов и дронов, то много что нарыть можно. Исходный код ниже и уже поправленный #include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_attr.h"
#include "driver/mcpwm.h"
#include "soc/mcpwm_periph.h"
#define GPIO_PWM0A_OUT 15 //Set GPIO 15 as PWM0A
#define GPIO_PWM0B_OUT 16 //Set GPIO 16 as PWM0B
#define PUSH_BUTTON_PIN_SPEED 33
int buttonState = 0; int count_value =0; int prestate =0;
static void mcpwm_example_gpio_initial

  • Цель: воспользоваться примером для отработки элементарных знаний по управлению двигателя по постоянному току.

Неплохо почитать теорию по ШИМ и ШИМ. можете кстати и сами поискать в просторах информационных.

Пример по шим есть и в espressif и многа.

окно выбора примера
окно выбора примера

Выше можно выбрать пример по ШИМ)).

Кнопка есть , движок припас. Чип добыл и драйвер взял.
И пример на раз нашли В чём подвох? Судьба кажи?
Так всё просто не бывает? Где облом нас ожидает?
Как его нам умаслить и удачу обрести?
  • За основу берем перечень ресурсов :
  1. espressif [ПО] - на просторах интернета на раз два три находим
  2. hercules_3 [ПО]- на просторах интернета на раз два три находим
  3. esp32 s (в интернет магазине, но не микро, не мини, и платой с встроенным usb-uart и rezet , а не чип ). лучше как тут. одн в один для чистоты эксперимента
  4. ПК ddr3 8 /128 2.5Ггц. (5т<цена<10т ) tehnosell.ru
  5. кнопку взял из набора для ардуино на 31шт. , а набор для моделирования 45 сенсоров и модулей для Arduino / Ардуино тоже пойдет. можно просто как в описании взять резистор и кнопку. но правда там не понятно до конца как контачить кнопку и можно неопытному сжечь или всё или кое что.
модернизирована  по смыслу.
модернизирована по смыслу.

Схемное решение и уже поправленное в кнопе там не оч и понятно было

ПРИМ если в поисковике набрать комплектующие для роботов и дронов, то много что нарыть можно.

Исходный код ниже и уже поправленный

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_attr.h"
#include "driver/mcpwm.h"
#include "soc/mcpwm_periph.h"
#define GPIO_PWM0A_OUT 15 //Set GPIO 15 as PWM0A
#define GPIO_PWM0B_OUT 16 //Set GPIO 16 as PWM0B
#define PUSH_BUTTON_PIN_SPEED 33
int buttonState = 0; int count_value =0; int prestate =0;
static void mcpwm_example_gpio_initialize(void)
{ printf("initializing mcpwm gpio...\n");
mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0A, GPIO_PWM0A_OUT);
mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0B, GPIO_PWM0B_OUT);
} /////////////////////////////
static void brushed_motor_forward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num , float duty_cycle)
{ mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B);
mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle);
mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); //call this each time, if operator was previously in low/high state
}//////////////////////////
static void brushed_motor_backward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num , float duty_cycle)
{ mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_A);
mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle);
mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); //call this each time, if operator was previously in low/high state
}}//////////////////////////
static void brushed_motor_stop(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num)
{ mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_A);
mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B);
}/////////////////////
static void mcpwm_example_brushed_motor_control(void *arg)
{ //1. mcpwm gpio initialization
mcpwm_example_gpio_initialize();
//2. initial mcpwm configuration
printf("Configuring Initial Parameters of mcpwm...\n");
mcpwm_config_t pwm_config;
pwm_config.frequency = 1000; //frequency = 500Hz,
pwm_config.cmpr_a = 0; //duty cycle of PWMxA = 0
pwm_config.cmpr_b = 0; //duty cycle of PWMxb = 0
pwm_config.counter_mode = MCPWM_UP_COUNTER;
pwm_config.duty_mode = MCPWM_DUTY_MODE_0;
mcpwm_init(MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config); //Configure PWM0A & PWM0B with above settings
brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, 20.0);
vTaskDelay(5000 / portTICK_
PERIOD_MS);
brushed_motor_backward(MCPWM_UNIT_0, MCPWM_TIMER_0, 20.0);
vTaskDelay(5000 / portTICK_
PERIOD_MS);
brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0);
vTaskDelay(2000 / portTICK_
PERIOD_MS);
gpio_set_direction(PUSH_BUTTON_PIN_SPEED, GPIO_MODE_INPUT);
while(1){
buttonState = gpio_get_level(PUSH_BUTTON_PIN_SPEED);
if (buttonState == 1 && prestate == 0) {
count_value = count_value + 10;
float duty_cycle = count_value;
brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, duty_cycle);
prestate = 1;
} else if(buttonState == 0) { prestate = 0;
brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); }
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}////////////////////////////////////////////
void app_main(void)
{ printf("Testing brushed motor...\n");
xTaskCreate(mcpwm_example_brushed_motor_control, "mcpwm_example_brushed_motor_control", 4096, NULL, 5, NULL);
}

при сборке схемы надо учитывать ниже код

#define GPIO_PWM0A_OUT 15 //Set GPIO 15 as PWM0A
#define GPIO_PWM0B_OUT 16 //Set GPIO 16 as PWM0B
#define PUSH_BUTTON_PIN_SPEED 33

который согласно схеме собираемой вами можно и нужно изменить.

  • Как обычно выполняем пункты ниже
ттри операции
ттри операции
четыре операции
четыре операции

далее четыре операции (выше картинка)

две операции
две операции
  • Создадим проект. Найдем файл main.c и вставим туда код. кто разбирается в коде может его поизучать , или в поисковике осмотреть что значит каждая строка кода....🙄 Дале смотрим операции ниже и выполняем.
всего две операции
всего две операции

Второй пункт надо выполнить, если проверена связь с МК. Как проверить ниже.

четыре операции.
четыре операции.

Четвертая операция на прошивку МК .

проверяем схему. подаём питание ! ДЫм не? Баба не? Жмём на кноку.

собранна Может визжать? Смотрим как всё жужит - это двигатель старается.

собранная схема
собранная схема

ну на время не ставил - на прогон . У меня пищать начало до начала нажатия кнопки. резко нажал и прошло.

в общем понял так , что движки у меня не те или блок питания не тот по схеме . У меня 5-12В , а надо 3-6 вольт. Там в примере видеоролик посмотрите - там прям видно , что движок для дронов. Придётся покупать , другие движки.

Результат: плачевный .много времени потратил. за двигателя не понятно . в общем до разбираться надо.

Есть информация по САПР ТП - это тем кто не устал.

Кто устал в поисковике, на берите в промежутках между жизнью почитать.😋

спонсор ООО АК ПРАВОВОЕ СОТРУДНИЧЕСТВО.

лайки ставить если не жаль красным тапочкам, ну и исполнительнице.👍