Настройка и мониторинг энкодеров


Основные функции энкодера

Контрольные значения счетчиков кодеров

Подключите энкодер двигателя к порту энкодера этой платы и просмотрите значения счетчика, используя фнкцию getEncoderPosition().

dcmotor.getEncoderPosition();

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

byte spcId = 1;

ExpansionDCMotor dcmotor(spcId, 1);

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

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

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

    dcmotor.setPeriod(10000);
    dcmotor.setWidth(3000);
}

void loop() {
    // get the counter value of an encoder
    Serial.println(dcmotor.getEncoderPosition());
    delay(100);
}

Мониторинг периода выходов энкодера

Совершайте мониторинг периода выходов энкодера используя функцию getEncoderPeriod().

period = dcmotor.getEncoderPeriod();

Единицей возвращаемых значений являются микросекунды (us). Чтобы уменьшить ошибку при контроле периодов выходов энкодера, установите для отсчета выборки датчика наибольшее значение.

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

byte spcId = 1;

ExpansionDCMotor dcmotor(spcId, 1);

int width = 3000;

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

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

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

    dcmotor.setEncoderPSR(64);
    dcmotor.setPeriod(10000);
    dcmotor.setWidth(width);
}

void loop() {
    if(width > 1000) {
        width -= 100;
        dcmotor.setWidth(width);
        delay(500);

        Serial.print(width);
        Serial.print("=>");

        // get the period of an encoder's output
        Serial.println(dcmotor.getEncoderPeriod());
    }
    else
        dcmotor.setWidth(0);
}

Другие функции

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

Задайте направление счетчика энкодера, используя функцию setEncoderPolarity().

dcmotor.setEncoderPolarity(pol);

Установка значения счетчика

Установите или инициализируйте значения счетчика с помощью функции setEncoderPosition().

dcmotor.setEncoderPosition(pos);

Установка расчета выборки

Вы можете установить расчет выборки энкодера при помощи функции setEncoderPSR().

dcmotor.setEncoderPSR(psr);

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