Promobot Education

Logo

Платформы

RoboxКомплект из сервопривода и датчика расстояния

RookyРука-манипулятор

V.4Лабораторный стенд Promobot

Программное обеспечение

RRStudioПростое написание алгоритмов

TestDevicesТестирование оборудования и проверка связи

Настройка WSL2Windows Subsystem for Linux

Поддержка

TelegramНаписать в чат технической поддержки


Перейти в профиль на GitHub

Описание библиотеки Servo.c


int set_torque(int addr,bool state):

Включение(отключение) питания обмоток двигателя
Args:      
    * addr: адрес устройства            
    * state: 
        true - отключение питания обмоток двигателя, обмотки замкнуты, двигатель в торможении. 
        false - Включение питания обмоток двигателя. 
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

int set_command(int addr, int16_t command):

Write command to servo.
Args:
    * addr: адрес устройства 
    * command: одна из доступных команд. 
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

int set_point(int addr,int16_t setpoint):

Установка задачи. (Положение, скорость, ШИМ в зависимости от режима работы)
Args:
    * addr: адрес устройства 
    * value: Требуемое значение. от -32768 до 32767. 
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

int set_Pos_PID_P(int addr,float value):

Запись коэф. P в ПИД регулятор по положению.
Args:
    * addr: адрес устройства 
    * value: Желаемое значение в диапазоне от 0.0 до 20.0. 
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

int set_Pos_PID_I(int addr,float value):

Запись коэф. I в ПИД регулятор по положению.
Args:
    * addr: адрес устройства 
    * value: Желаемое значение в диапазоне от 0.0 до 20.0. 
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

int set_Pos_PID_D(int addr,float value):

Запись коэф. D в ПИД регулятор по положению.
Args:
    * addr: адрес устройства 
    * value: Желаемое значение в диапазоне от 0.0 до 20.0.
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

int set_Speed_PID_P(int addr,float value):

Запись коэф. P в ПИД регулятор по скорости.
Args:
    * addr: адрес устройства 
    * value: Желаемое значение в диапазоне от 0.0 до 20.0. 
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

int set_Speed_PID_I(int addr,float value):

Запись коэф. I в ПИД регулятор по скорости.
Args:
    * addr: адрес устройства 
    * value: Желаемое значение в диапазоне от 0.0 до 20.0. 
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

int set_Speed_PID_D(int addr,float value):

Запись коэф. D в ПИД регулятор по скорости.
Args:
    * addr: адрес устройства 
    * value: Желаемое значение в диапазоне от 0.0 до 20.0. 
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

int set_PID_Mode(int addr,int mode):

Высталвение режима работы ПИД регуляторов сервопривода.
Args:
    * addr: адрес устройства 
    * mode: Режим работы. из перечисления (enum):
        enum PID_mode {
            NORMAL, - каскадный режим ПИД ругялтора по скорости и положению.
            PWM, - отключение всех ПИД регуляторов и прямое управление скважностью ШИМ. 
            SPEED - включение только ПИД регулятора поп сокрости. 
        };               
Returns:
    *  0 если отправка команды прошла успешно
    * -1 если при отправке команды произошла ошибка

struct servo_data get_servo_data(int addr):

Чтение данных с сервопривода
Args:
    addr: адрес устройства 
Returns:
    данные с сервопривода. Структура servo_data с данными:
    struct servo_data {
        int16_t ID;
        bool torque;
        int16_t setpoint;
        int16_t position;
        int16_t speed;
        int16_t command;
        int16_t current;
        float   pos_PID_P;
        float   pos_PID_I;
        float   pos_PID_D;
        float   speed_PID_P;
        float   speed_PID_I;
        float   speed_PID_D;   
        char    *errors[9];    
    };