Управление регулятором оборотов бесколекторного двигателя

Fibonachi
Offline
Зарегистрирован: 27.04.2022

Ребята Всем доброго времени суток. 

Не пинайте сильно за мою безграмотность и возможно неумением пользоваться поиском, но не смотря на это реш создать тему на которою надеюсь получить ответ )))) заранее благодарю Всех. Мир в Ваш дом.

Имеется плата Arduino UNO, ESC регулятор оборотов ( квадракоптерный) и собственно бесколекторный мотор.

Имеется скетч с управлением через потенциометр. Все работает.

Но хотелось бы иметь скетч для управления мотором с помощью двух кнопок т.е. одна кнопка по часовой стрелки , вторая против.

скетч который использовал ниже:

#include <Servo.h>
 
Servo motor;
 
void setup() {
  motor.attach(2);
  motor.writeMicroseconds(2300);
  delay(2000);
  motor.writeMicroseconds(800);
  delay(6000);
}
 
void loop() {
  int val = map(analogRead(0), 0, 1023, 800, 2300);
  motor.writeMicroseconds(val);
 
}
Fibonachi
Offline
Зарегистрирован: 27.04.2022

используемые кнопки - нормально разомкнутые.

b707
Offline
Зарегистрирован: 26.05.2017

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

Алгоритм-то элементарный:

1. Для начала ставим турель в некое положение, скажем угол 180 градусов.

2. Если кнопка А была нажата - добавляем к углу 5 градусов.

3. если кнопка Б нажата - отнимаем от угла 5 градусов.

Бинго! Код написан, задача решена.

Fibonachi
Offline
Зарегистрирован: 27.04.2022

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

b707
Offline
Зарегистрирован: 26.05.2017

я не в курсе, как устроен "квадрокоптерный мотор"... - в вашем коде я вижу не мотор, а серву.

Если это серва постоянного вращения, то мой алгоритм подойдет, она будет вращаться постоянно, а кнопки будет менять скорость и направление. А если это обычная серва, то ваши хотелки "чтоб вращалась постоянно" на ней не осуществимы.

Fibonachi
Offline
Зарегистрирован: 27.04.2022

b707 пишет:

я не в курсе, как устроен "квадрокоптерный мотор"... - в вашем коде я вижу не мотор, а серву.

Если это серва постоянного вращения, то мой алгоритм подойдет, она будет вращаться постоянно, а кнопки будет менять скорость и направление. А если это обычная серва, то ваши хотелки "чтоб вращалась постоянно" на ней не осуществимы.

Это именно бесколекторный мотор, а не серво. Большое СПАСИБО Вам, попробую данный алгоритм. Просто именно смущало, что будет работать рывками. Еще раз спасибо

b707
Offline
Зарегистрирован: 26.05.2017

Fibonachi пишет:

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

если брать серву постоянного вращения, то рывков не будет - у нее через writeMicroseconds() задается скорость вращения, а не угол.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

мотор как и серва управляются длительностью импульса, по стандарту от 1000 до 2000, если не калиброван то от 800 до 2400 где-то