From f7634146a231a9fcb660070215cca3382f2f0391 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 13 Jul 2020 01:23:39 +0300 Subject: [PATCH] add --- AccelMotor/AccelMotor.cpp | 184 ++++++++++++++++++ AccelMotor/AccelMotor.h | 178 +++++++++++++++++ AccelMotor/docs/jga25.jpg | Bin 0 -> 98458 bytes .../enc_digitalRead/enc_digitalRead.ino | 43 ++++ .../examples/enc_interrupt/enc_interrupt.ino | 35 ++++ AccelMotor/examples/motor_demo/motor_demo.ino | 111 +++++++++++ AccelMotor/keywords.txt | 49 +++++ AccelMotor/library.properties | 9 + README.md | 98 ++++++++++ 9 files changed, 707 insertions(+) create mode 100644 AccelMotor/AccelMotor.cpp create mode 100644 AccelMotor/AccelMotor.h create mode 100644 AccelMotor/docs/jga25.jpg create mode 100644 AccelMotor/examples/enc_digitalRead/enc_digitalRead.ino create mode 100644 AccelMotor/examples/enc_interrupt/enc_interrupt.ino create mode 100644 AccelMotor/examples/motor_demo/motor_demo.ino create mode 100644 AccelMotor/keywords.txt create mode 100644 AccelMotor/library.properties diff --git a/AccelMotor/AccelMotor.cpp b/AccelMotor/AccelMotor.cpp new file mode 100644 index 0000000..ebafc99 --- /dev/null +++ b/AccelMotor/AccelMotor.cpp @@ -0,0 +1,184 @@ +#include "AccelMotor.h" +#define _sign(x) ((x) > 0 ? 1 : -1) + +bool AccelMotor::tick(long pos) { + _currentPos = pos; + if (millis() - _tmr2 > _dt) { + _tmr2 += _dt; + _curSpeed = (long)(_currentPos - _lastPos) / _dts; // ищем скорость в тиках/секунду + _curSpeed = filter(_curSpeed); // медиана + RA + _lastPos = _currentPos; + + switch (_runMode) { + case ACCEL_POS: + { + long err = _targetPos - controlPos; // "ошибка" позиции + if (err != 0) { + float accelDt = _accel * _dts; + float accel = accelDt; + if (abs(err) < _stopzone && abs(_lastSpeed - controlSpeed) < 2) { // условие завершения движения + controlPos = _targetPos; + controlSpeed = 0; + accel = 0; + } + if (abs(err) < (float)(controlSpeed * controlSpeed) / (2.0 * accelDt)) { // если пора тормозить + err = -err; // разворачиваем ускорение + accel = (float)(controlSpeed * controlSpeed) / (2.0 * abs(err)); // пересчёт ускорения для плавности + if (_sign(controlSpeed) == _sign(err)) err = -err; // поворачивай обратно + } + controlSpeed += accel * _sign(err); // применяем ускорение + controlSpeed = constrain(controlSpeed, -_maxSpeed*_dts, _maxSpeed*_dts); // ограничим + controlPos += controlSpeed; // двигаем позицию + _lastSpeed = controlSpeed; + + } + PIDcontrol(controlPos, _currentPos, true); + } + break; + case PID_POS: + PIDcontrol(_targetPos, _currentPos, true); + break; + case ACCEL_SPEED: + { + int err = _targetSpeed - _curSpeed; // ошибка скорости + float reducer = min(abs(err) / _accel, 1.0); // уменьшает ускорение, если шаг будет дальше чем установка + _dutyF += (float)_sign(err) * _accel * _dts * reducer; // ускоряем/замедляем + _dutyF = constrain(_dutyF, -_maxDuty, _maxDuty); // ограничитель 8/10 бит + setSpeed(_dutyF); + } + break; + case PID_SPEED: + PIDcontrol(_targetSpeed, _curSpeed, false); + break; + } + } + if (_runMode > 1) return (getState() != 0); + else return (getState() != 0 || abs(_targetPos - _currentPos) > _stopzone); +} + +void AccelMotor::PIDcontrol(long target, long current, bool cutoff) { + // cutoff нужен только для стабилизации позиции, обнуляет integral и учитывает мёртвую зону мотора + long err = target - current; + _dutyF = err * kp; // P составляющая + _dutyF += (float)(_prevInput - current) * kd / _dts; // D составляющая + _prevInput = current; + integral += (float)err * ki * _dts; + _dutyF += integral; // I составляющая + if (cutoff) { // отсечка + if (abs(err) > _stopzone) _dutyF += _sign(err)*_minDuty; // учитываем _minDuty - мёртвую зону мотора (метод setMinDuty) + else integral = 0; + } else { + if (err == 0 && target == 0) integral = 0; + else _dutyF += _sign(err)*_minDuty; + } + _dutyF = constrain(_dutyF, -_maxDuty, _maxDuty); // ограничиваем по 8 или 10 бит + setSpeed(_dutyF); // и поехали +} + +bool AccelMotor::isBlocked() { + return (abs(_dutyF) > _minDuty && _curSpeed == 0); +} + +// ===== settings ===== +void AccelMotor::setRatio(float ratio) { + _ratio = ratio; +} +void AccelMotor::setDt(int dt) { + _dt = dt; + _dts = dt / 1000.0; +} +void AccelMotor::setCurrent(long pos) { + _currentPos = pos; +} +void AccelMotor::setRunMode(runMode mode) { + _runMode = mode; + if (mode == ACCEL_POS) controlPos = _currentPos; // костыль! +} + +// ===== current position ===== +long AccelMotor::getCurrent() { + return _currentPos; +} +long AccelMotor::getCurrentDeg() { + return (long)_currentPos * 360 / _ratio; +} + +// ===== current speed ===== +int AccelMotor::getSpeed() { + return _curSpeed; +} +int AccelMotor::getSpeedDeg() { + return (long)_curSpeed * 360 / _ratio; +} +float AccelMotor::getDuty() { + return _dutyF; +} + +// ===== target position mode ===== +void AccelMotor::setTarget(long pos) { + _targetPos = pos; + _mode = AUTO; +} +void AccelMotor::setTargetDeg(long pos) { + _targetPos = (long)pos * _ratio / 360; + _mode = AUTO; +} +long AccelMotor::getTarget() { + return _targetPos; +} +long AccelMotor::getTargetDeg() { + return (long)_targetPos * 360 / _ratio; +} + +void AccelMotor::setStopZone(int zone) { + _stopzone = zone; +} + +// ===== target speed mode ===== +void AccelMotor::setTargetSpeed(int speed) { + _targetSpeed = speed; + _mode = AUTO; +} +void AccelMotor::setTargetSpeedDeg(int speed) { + _targetSpeed = (long)speed * _ratio / 360; + _mode = AUTO; +} +int AccelMotor::getTargetSpeed() { + return _targetSpeed; +} +int AccelMotor::getTargetSpeedDeg() { + return (long)_targetSpeed * 360 / _ratio; +} + +// ===== max speed / acceleration ===== +void AccelMotor::setMaxSpeed(int speed) { + _maxSpeed = speed; +} +void AccelMotor::setMaxSpeedDeg(int speed) { + _maxSpeed = (long)speed * _ratio / 360; +} +void AccelMotor::setAcceleration(float accel) { + _accel = accel; +} +void AccelMotor::setAccelerationDeg(float accel) { + _accel = (float)accel * _ratio / 360.0; +} + +// ==== filter ==== +int AccelMotor::filter(int newVal) { + _buf[_count] = newVal; + if (++_count >= 3) _count = 0; + int middle = 0; + if ((_buf[0] <= _buf[1]) && (_buf[0] <= _buf[2])) { + middle = (_buf[1] <= _buf[2]) ? _buf[1] : _buf[2]; + } else { + if ((_buf[1] <= _buf[0]) && (_buf[1] <= _buf[2])) { + middle = (_buf[0] <= _buf[2]) ? _buf[0] : _buf[2]; + } + else { + middle = (_buf[0] <= _buf[1]) ? _buf[0] : _buf[1]; + } + } + _middle_f += (middle-_middle_f) * 0.7; + return _middle_f; +} diff --git a/AccelMotor/AccelMotor.h b/AccelMotor/AccelMotor.h new file mode 100644 index 0000000..1333390 --- /dev/null +++ b/AccelMotor/AccelMotor.h @@ -0,0 +1,178 @@ +#pragma once +#include +#include + +// БЕТА! ЭТО БЕТА! beta 0.0000 кек + +/* + Библиотека для расширенного управления и стабилизации мотора с энкодером + - Наследует все фишки из библиотеки GyverMotor (поддержка разных драйверов и режимов) + - Режим поддержания скорости с обратной связью + - Режим поворота на заданный угол с обратной связью + - Настраиваемые коэффициенты PID регулятора + - Ограничение ускорения и скорости + - Библиотека принимает любой тип обратной связи: энкодер, потенциометр, и т.д. + - Поддержка мотор-редукторов, настройка передаточного отношения энкодера + - Регулятор учитывает "мёртвую зону" мотора + - Все функции работают в градусах и "тиках" энкодера +*/ + +enum runMode { + ACCEL_POS, + PID_POS, + ACCEL_SPEED, + PID_SPEED, + IDLE_RUN, +}; + +class AccelMotor : public GMotor { +public: + using GMotor::GMotor; + + // управляет мотором. Вызывать как можно чаще (внутри таймер с периодом dt) + // принимает текущее положение вала мотора (по счёту энкодера) + // возвращает true если мотор всё ещё движется к цели + bool tick(long pos); + + // установка передаточного отношения редуктора и энкодера + // пример: если редуктор 1:30 - передаём в функцию 30 + // пример: если редуктор 1:30 и энкодер на 12 тиков - передаём 30*12 + void setRatio(float ratio); + + // установка периода регулятора (рекомендуется 2-50 миллисекунд) + void setDt(int dt); + + // установка и получение текущей позиции в тиках энкодера и градусах. + // setCurrent(pos) равносильна вызову tick(pos) и в принципе не нужна! + void setCurrent(long pos); + long getCurrent(); + long getCurrentDeg(); + + // установка и получение целевой позиции в тиках энкодера и градусах + void setTarget(long pos); + void setTargetDeg(long pos); + long getTarget(); + long getTargetDeg(); + + // установка максимальной скорости в тиках энкодера/секунду и градусах/секунду + void setMaxSpeed(int speed); + void setMaxSpeedDeg(int speed); + + // установка ускорения тиках энкодера и градусах в секунду + void setAcceleration(float accel); + void setAccelerationDeg(float accel); + + // установка и получение целевой скорости в тиках энкодера/секунду и градусах/секунду + void setTargetSpeed(int speed); + void setTargetSpeedDeg(int speed); + int getTargetSpeed(); + int getTargetSpeedDeg(); + + // получить текущую скорость в тиках энкодера/секунду и градусах/секунду + int getSpeed(); + int getSpeedDeg(); + + // получить текущий ШИМ сигнал (float из ПИД регулятора) + float getDuty(); + + // ручная установка режима работы + // IDLE_RUN - tick() не управляет мотором. Может использоваться для отладки + // ACCEL_POS - tick() работает в режиме плавного следования к целевому углу + // PID_POS - tick() работает в режиме резкого следования к целевому углу + // ACCEL_SPEED - tick() работает в режиме плавного поддержания скорости (с заданным ускорением) + // PID_SPEED - tick() работает в режиме поддержания скорости по ПИД регулятору + void setRunMode(runMode mode); + + // возвращает true, если вал мотора заблокирован, а сигнал подаётся + bool isBlocked(); + + // коэффициенты ПИД регулятора + // пропорциональный - от него зависит агрессивность управления, нужно увеличивать kp + // при увеличении нагрузки на вал, чтобы регулятор подавал больший управляющий ШИМ сигнал + float kp = 2.0; // (знач. по умолчанию) + + // интегральный - позволяет нивелировать ошибку со временем, имеет накопительный эффект + float ki = 0.9; // (знач. по умолчанию) + + // дифференциальный. Позволяет чуть сгладить рывки, но при большом значении + // сам становится причиной рывков и раскачки системы! + float kd = 0.1; // (знач. по умолчанию) + + // установить зону остановки мотора для режима стабилизации позиции (по умолч. 8) + void setStopZone(int zone); + +private: + int filter(int newVal); + int _buf[3]; + byte _count = 0; + float _middle_f = 0; + + float _lastSpeed = 0; + void PIDcontrol(long target, long current, bool cutoff); + float integral = 0; + int _dt = 20; + float _dts = 0.02; + long _lastPos = 0, _currentPos = 0, _targetPos = 0; + int _curSpeed = 0; + int _maxSpeed = 0, _targetSpeed = 0; + float _ratio = 1; + uint32_t _tmr2 = 0; + float _accel = 1; + float _dutyF = 0; + long controlPos = 0; + float controlSpeed = 0; + int _stopzone = 8; + long _prevInput = 0; + runMode _runMode = IDLE_RUN; +}; + +/* + ======= НАСЛЕДУЕТСЯ ИЗ GYVERMOTOR ======= + GMotor(driverType type, int8_t param1 = NC, int8_t param2 = NC, int8_t param3 = NC, int8_t param4 = NC); + // три варианта создания объекта в зависимости от драйвера: + // GMotor motor(DRIVER2WIRE, dig_pin, PWM_pin, (LOW/HIGH) ) + // GMotor motor(DRIVER3WIRE, dig_pin_A, dig_pin_B, PWM_pin, (LOW/HIGH) ) + // GMotor motor(RELAY2WIRE, dig_pin_A, dig_pin_B, (LOW/HIGH) ) + + // установка скорости 0-255 (8 бит) и 0-1023 (10 бит) + void setSpeed(int16_t duty); + + // сменить режим работы мотора: + // FORWARD - вперёд + // BACKWARD - назад + // STOP - остановить + // BRAKE - активное торможение + void setMode(workMode mode); + + // направление вращения + // NORM - обычное + // REVERSE - обратное + void setDirection(dir direction); + + // установить минимальную скважность (при которой мотор начинает крутиться) + void setMinDuty(int duty); + + // установить выход в 8 бит + void set8bitMode(); + + // установить выход в 10 бит + void set10bitMode(); + + // установить deadtime (в микросекундах). По умолч 0 + void setDeadtime(uint16_t deadtime); + + // установить уровень драйвера (по умолч. HIGH) + void setLevel(int8_t level); + + // плавное изменение к указанной скорости (к величине ШИМ) + void smoothTick(int16_t duty); + + // скорость изменения скорости + void setSmoothSpeed(uint8_t speed); + + // дать прямую команду мотору (без смены режима) + void run(workMode mode, int16_t duty); + + // возвращает -1 при вращении BACKWARD, 1 при FORWARD и 0 при остановке и торможении + int getState(); +*/ \ No newline at end of file diff --git a/AccelMotor/docs/jga25.jpg b/AccelMotor/docs/jga25.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7401ecce116e0734741d761dad1930baf52632ed GIT binary patch literal 98458 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⋘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 100) { // таймер на 100мс для графиков + tmr += 100; + // отладка позиции (открой плоттер) + Serial.print(motor.getTargetDeg()); + Serial.print(','); + Serial.print(motor.getDuty()); + Serial.print(','); + Serial.println(motor.getCurrentDeg()); + + /* + // отладка скорости (открой плоттер) + Serial.print(motor.getTargetSpeedDeg()); + Serial.print(','); + Serial.print(motor.getDuty()); + Serial.print(','); + Serial.println(motor.getSpeedDeg()); + */ + } +} + +// читаем энкодер вручную, через digitalRead() +long encTick(byte pin) { + static bool lastState; + static long encCounter = 0; + bool curState = digitalRead(pin); // опрос + if (lastState != curState) { // словили изменение + lastState = curState; + if (curState) { // по фронту + encCounter += motor.getState(); // запомнили поворот + } + } + return encCounter; +} diff --git a/AccelMotor/keywords.txt b/AccelMotor/keywords.txt new file mode 100644 index 0000000..3ccd08d --- /dev/null +++ b/AccelMotor/keywords.txt @@ -0,0 +1,49 @@ +####################################### +# Syntax Coloring Map For AccelMotor +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### +AccelMotor KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +tick KEYWORD2 +setRatio KEYWORD2 +setDt KEYWORD2 +setCurrent KEYWORD2 +getCurrent KEYWORD2 +getCurrentDeg KEYWORD2 +setTarget KEYWORD2 +setTargetDeg KEYWORD2 +getTarget KEYWORD2 +getTargetDeg KEYWORD2 +setMaxSpeed KEYWORD2 +setMaxSpeedDeg KEYWORD2 +setAcceleration KEYWORD2 +setAccelerationDeg KEYWORD2 +setTargetSpeed KEYWORD2 +setTargetSpeedDeg KEYWORD2 +getTargetSpeed KEYWORD2 +getTargetSpeedDeg KEYWORD2 +getSpeed KEYWORD2 +getSpeedDeg KEYWORD2 +getDuty KEYWORD2 +setRunMode KEYWORD2 +setStopZone KEYWORD2 +isBlocked KEYWORD2 +kp KEYWORD2 +ki KEYWORD2 +kd KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + +IDLE_RUN LITERAL1 +ACCEL_POS LITERAL1 +PID_POS LITERAL1 +ACCEL_SPEED LITERAL1 +PID_SPEED LITERAL1 \ No newline at end of file diff --git a/AccelMotor/library.properties b/AccelMotor/library.properties new file mode 100644 index 0000000..b5daf3a --- /dev/null +++ b/AccelMotor/library.properties @@ -0,0 +1,9 @@ +name=AccelMotor +version=0.0 +author=AlexGyver +maintainer=AlexGyver +sentence=Library for motor smooth control +paragraph=Simple motor speed and position controller +category=Device Control +url=https://github.com/AlexGyver/GyverLibs +architectures=* \ No newline at end of file diff --git a/README.md b/README.md index c536f59..9954a46 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ * [GyverButton](#GyverButton) - расширенный контроль кнопкой * [GyverEncoder](#GyverEncoder) - расширенный контроль с энкодером * [GyverMotor](#GyverMotor) - управление драйверами моторов +* [AccelMotor](#AccelMotor) - управление мотором с обратной связью * [GyverRGB](#GyverRGB) - управление RGB светодиодами и лентами * [GyverTM1637](#GyverTM1637) - управление дисплеем на TM1637 * [ServoSmooth](#ServoSmooth) - плавное управление сервоприводами @@ -1258,6 +1259,103 @@ int16_t _duty = 0; --- + +### AccelMotor v1.0 [СКАЧАТЬ](https://github.com/AlexGyver/GyverLibs/releases/download/AccelMotor/AccelMotor.zip), [ДОКУМЕНТАЦИЯ](https://alexgyver.ru/accelmotor/) +Библиотека для управления моторчиками через драйвер моста для Arduino с обратной связью +- Наследует все фишки из библиотеки GyverMotor (поддержка разных драйверов и режимов) +- Режим поддержания скорости с обратной связью +- Режим поворота на заданный угол с обратной связью +- Настраиваемые коэффициенты PID регулятора +- Ограничение ускорения и скорости +- Библиотека принимает любой тип обратной связи: энкодер, потенциометр, и т.д. +- Поддержка мотор-редукторов, настройка передаточного отношения энкодера +- Регулятор учитывает "мёртвую зону" мотора +- Все функции работают в градусах и "тиках" энкодера + +#### Методы и функции библиотеки +
+РАЗВЕРНУТЬ +

+Смотри примеры в папке examples! + +```C +// управляет мотором. Вызывать как можно чаще (внутри таймер с периодом dt) +// принимает текущее положение вала мотора (по счёту энкодера) +// возвращает true если мотор всё ещё движется к цели +bool tick(long pos); + +// установка передаточного отношения редуктора и энкодера +// пример: если редуктор 1:30 - передаём в функцию 30 +// пример: если редуктор 1:30 и энкодер на 12 тиков - передаём 30*12 +void setRatio(float ratio); + +// установка периода регулятора (рекомендуется 2-50 миллисекунд) +void setDt(int dt); + +// установка и получение текущей позиции в тиках энкодера и градусах. +// setCurrent(pos) равносильна вызову tick(pos) и в принципе не нужна! +void setCurrent(long pos); +long getCurrent(); +long getCurrentDeg(); + +// установка и получение целевой позиции в тиках энкодера и градусах +void setTarget(long pos); +void setTargetDeg(long pos); +long getTarget(); +long getTargetDeg(); + +// установка максимальной скорости в тиках энкодера/секунду и градусах/секунду +void setMaxSpeed(int speed); +void setMaxSpeedDeg(int speed); + +// установка ускорения тиках энкодера и градусах в секунду +void setAcceleration(float accel); +void setAccelerationDeg(float accel); + +// установка и получение целевой скорости в тиках энкодера/секунду и градусах/секунду +void setTargetSpeed(int speed); +void setTargetSpeedDeg(int speed); +int getTargetSpeed(); +int getTargetSpeedDeg(); + +// получить текущую скорость в тиках энкодера/секунду и градусах/секунду +int getSpeed(); +int getSpeedDeg(); + +// получить текущий ШИМ сигнал (float из ПИД регулятора) +float getDuty(); + +// ручная установка режима работы +// IDLE_RUN - tick() не управляет мотором. Может использоваться для отладки +// ACCEL_POS - tick() работает в режиме плавного следования к целевому углу +// PID_POS - tick() работает в режиме резкого следования к целевому углу +// ACCEL_SPEED - tick() работает в режиме плавного поддержания скорости (с заданным ускорением) +// PID_SPEED - tick() работает в режиме поддержания скорости по ПИД регулятору +void setRunMode(runMode mode); + +// возвращает true, если вал мотора заблокирован, а сигнал подаётся +bool isBlocked(); + +// коэффициенты ПИД регулятора +// пропорциональный - от него зависит агрессивность управления, нужно увеличивать kp +// при увеличении нагрузки на вал, чтобы регулятор подавал больший управляющий ШИМ сигнал +float kp = 2.0;// (знач. по умолчанию) + +// интегральный - позволяет нивелировать ошибку со временем, имеет накопительный эффект +float ki = 0.9;// (знач. по умолчанию) + +// дифференциальный. Позволяет чуть сгладить рывки, но при большом значении +// сам становится причиной рывков и раскачки системы! +float kd = 0.1;// (знач. по умолчанию) + +// установить зону остановки мотора для режима стабилизации позиции (по умолч. 8) +void setStopZone(int zone); +``` +

+
+ +--- + ### GyverRGB v1.16 [СКАЧАТЬ](https://github.com/AlexGyver/GyverLibs/releases/download/GyverRGB/GyverRGB.zip), [ДОКУМЕНТАЦИЯ](https://alexgyver.ru/gyverrgb-lib/) Библиотека для удобного управления RGB светодиодами и лентами для Arduino