Encoder Pololu3081

Bunas tardes, estoy haciendo un proyecto que ocupa motores DC y necesito medir la velocidad y distancia de estos, la practica me pide usar los sensores de rotación magnética Pololu 3081, pero no se como funciona ni como se programa, si alguien me pudiera orientar a como puedo empezar, por el momento he hecho esto en Tinkercad.

Y ocupo este código

const int encoderPinA = 2; // Debe ser pin con interrupción externa
const int encoderPinB = 3;

volatile int pulseCount = 0;
int pulseSnapshot = 0;

ISR(TIMER1_COMPA_vect) {
  pulseSnapshot = pulseCount;
  pulseCount = 0; // Reinicia para el próximo intervalo
}

void updateEncoder() {
  pulseCount++; // Simplemente cuenta cada cambio en OUTA
}

void setup() {
  pinMode(encoderPinA, INPUT_PULLUP);
  pinMode(encoderPinB, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(encoderPinA), updateEncoder, CHANGE);
  
  Serial.begin(9600);

  // Configuración del Timer1 para 100 ms
  noInterrupts();
  TCCR1A = 0; TCCR1B = 0;
  OCR1A = 15624; // (16MHz/1024)/(10Hz) - 1 para 100 ms
  TCCR1B |= (1 << WGM12); // Modo CTC
  TCCR1B |= (1 << CS12) | (1 << CS10); // Prescaler 1024
  TIMSK1 |= (1 << OCIE1A);
  interrupts();
}

void loop() {
  static unsigned long lastPrint = 0;
  if (millis() - lastPrint >= 100) {
    Serial.println(pulseSnapshot);
    lastPrint = millis();
  }
}

En Tinkercard encontré ese interruptor y hasta donde comprendo se manejan de manera similar, el programa en teoría me debería de contar los pulsos del interruptor en un periodo de tiempo determinado, pero me arroja valores demasiado altos.

Me sería de mucha ayuda su respuesta, gracias. :frowning:

You are posting in the English speeking section of forum. Please write in English, or post in Your native language section.

Thanks, I'll change it

Most appreaciated.

Moderador:
Por favor, lee las Normas del foro
Si posteas en el foro en inglés usa idioma inglés para expresarte, eso incluye los comentarios de tu código. Si un código tiene comentarios en español también moverán tu hilo a esta sección en Español.
Si escribes en español debes usar el foro Arduino en español

Los enconders proveen información de la posición de rotación de las ruedas, lo que te permite saber velocidad y desplazamiento. Lo que no puedes determinar es si resbala, asi que omitiremos eso.
Aca tienes buena información

Tienes una rueda con divisiones? no se 20 40 ?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.