Блокировка и разблокировка


Блокировкой упарвления можно назвать функцию физической защиты девайса. Данная функция предназначена для подключения концевого выключателя к цифровому входному порту и для дальнейшего отключения управления, если переключатель закрыт. Таким образом, рабочий диапазон шагового двигателя может быть ограничен.

Блокировка управления

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

Настройка блокировки управления

Задайте режим ввода для цифрового входа control lock, ссылаясь на главу Настройки.

Разблокировка

Вы можете снять блокировку управления контроллера шагового двигателя, используя функцию
unlock().

step.unlock()

Когда вы запускаете функцию unlock, состояние двигаетля изменяется от lock к состоянию stop, а входной режим порта цифрового ввода переходит в normal input из режима control lock.

Это означает, что вы можете нормально управлять двигателем после выполнения разблокировки посредством unlock().

Пример

#include <PhpocExpansion.h>
#include <Phpoc.h>

byte spcId = 1;

ExpansionStepper step(spcId);

int state;

void setup() {
    Serial.begin(9600);
    while(!Serial)
        ;

    Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
    Expansion.begin();

    Serial.println(step.getPID());
    Serial.println(step.getName());

    step.setMode(4);
    step.setVrefStop(2);
    step.setVrefDrive(8);
    step.setVrefLock(8);
    step.setSpeed(400);
    step.setAccel(4000);

    step.setEioMode(0, 1);
    step.setEioMode(1, 1);
    step.setEioMode(2, 1);
    step.setEioMode(3, 1);

    step.stepGoto(4000);

    while(step.getState() > 1) {
        delay(1);
    }

    // state: 0 - stop, 1 - locked
    Serial.print("step_state ");
    Serial.println(step.getState());

    step.unlock();

    // state: 0 - stop, 1 - locked
    Serial.print("step_state ");
    Serial.println(step.getState());
}

void loop() {

}
step_state 1
step_state 0