Плавная регулировка набора скорости бесщёточного мотора

тут тоже упростить, просто сдвигать на бит

Согласен. Я в твои посты с советами не встреваю.
Но кто я такой. Мне проще слиться с этой темы.

Без разницы - ассемблерная команда будет та же, но так понятнее.

А где я встрял?

Отвечаю сразу всем!
Код от BOOMa - при свободной ручке газа пищит ардуинка. Только начинаю вращение - писк (короткие сигналы) прекращается совсем, но начало вращения колеса происходит после порядка 15-17 градусов оборота газа. сам процесс ускорения чуть медленнее чем обычно - на глаз! Спасибо, но сигнал в свободном состоянии не прекращается (частые короткие)

Далее по прошивке от ua6em.
Замена на 2000 и 1000 результатов не дала. колесо вращается даже чуть быстрее при холостом ходу (на тронутой ручке газа).

эти параметры менял и для BOOMa прошивки - там колесо стоит мирно

Сейчас поставлю старую свою - может я где-то сам не правильно указал какой либо пин и вас всех ввожу в заблуждение!

У вас аналоговый считыватель, который зачастую далеко не идеален. Нужно первые 10 -20-30 значений таблицы заменить нулями. Подберите практически когда и не пищит и начинает трогаться. У меня же нет вашего оборудования.

Ёлки-иголки. Я конечно понимаю, что пятница. Но писал то я не про тебя. Перечитай)

ЗЫ: Вроде бы по памяти никогда ты не вмешивался…

Воооот )))

1 лайк

Ребята, дайте разобраться пожалуйста!
Потом уже о личном…

Пятница. У нас тут по пятницам всегда так. ))
Завтра модераторы по трут лишнее.)

Вот ЭТА прошивка у меня работает:

#include <Servo.h>

Servo motor;
//Пин подключения мотора
int mot_pin = 9;

//Максимальное значение ШИМ 2.3 мс
int max_pwm = 1940;

//Минимальное значени ШИМ 0.8 мс
int min_pwm = 980;
int Speed;

void setup(){
  // запуск последовательного порта
  Serial.begin(9600);
  // инициализация мотора
  motor.attach(mot_pin);
  // калибровка
  delay(1000);
  motor.writeMicroseconds(max_pwm);
  delay(2000);
  motor.writeMicroseconds(min_pwm);
  delay(4000);
}
void loop() {
  Speed = analogRead(A1);
  Speed = map(Speed,0,1023,0,180);
  motor.write(Speed);
}  

когда включаешь питание мотор делает два писка, первый и через несколько секунд второй. типа таратадам?

Да! делает!

ua6em, у вас получилось очень достойное ускорение (прям кайфует), но оно начинается не с нуля а при уже слегка работающем колесе.

BOOM! Я пытаюсь обнулить первые цифры, но ручка схватывает мотор уже после 30% оборота газа

Нашёёёёёёл!!!

Минимальное значени ШИМ 0.8 мс
int min_pwm = 1200 ;

При смене этого параметра до 1200 (взял от балды) колесо перестало вращаться на ХХ!
Нужно будет поиграться с этим параметром и найти самый оптимальный.

Это относится к прошивке от ua6em!
Стоит ли потом менять что либо из других - ниже перечисленных параметров для плавности хода???

ua6em,

для моей системы этот показатель составил 1070!
Тут же сразу проявился недостаток - после сброса ручки газа двигатель продолжает вращаться порядка 2 секунд - на очень малых оборотах.
Хотелось бы устранить и этот недостаток - может где-то какую то задержку подправить?

по моим данным запас в 30 единиц за глаза, то-есть ставь 1030
С тебя описание механики велосипеда, я допилю скетч и выложим в проекты!

Я чего-то недо понимаю?!
Этот запас влияет на остановку двигателя после сброса ручки газа???
колесо при 1070 и так стоит на месте. И чтобы ему начать движение необходимо порядка 10% нажатия акселератора!