Transmisión Automática CVT para Bicicletas: Control PID y Sensor PAS

Requerimiento: Bicicleta que hace los cambios automáticamente

La automatización en la movilidad personal no se limita a los motores eléctricos; la gestión eficiente de la energía mecánica es igual de crítica. Este proyecto aborda la problemática del cambio de marchas manual, que a menudo resulta en una cadencia ineficiente y fatiga prematura del ciclista.

El objetivo fue diseñar un sistema mecatrónico capaz de leer la cadencia de pedaleo en tiempo real y ajustar la relación de transmisión automáticamente. El sistema busca mantener al ciclista en su zona óptima de RPM (Revoluciones Por Minuto), actuando como una caja de cambios inteligente que reacciona antes de que el usuario pierda inercia. No es solo comodidad; es optimización de par y eficiencia energética aplicada a un vehículo de tracción humana.

📍 Barcelona

Trabajo realizado por Alumno del Programa de Tutorías HUE CAT para Futuros Ingenieros y Tecnólogos

Incluye Sensor PAS, Placa Arduino Uno, Módulo de LCD OLED

El núcleo del sistema se basa en una placa Arduino Uno que procesa las señales de un sensor de asistencia al pedaleo (PAS). A diferencia de los sistemas comerciales que solo detectan movimiento, aquí se implementó un algoritmo que calcula la frecuencia de los pulsos magnéticos para determinar la cadencia exacta.

La lógica de actuación sigue estos principios:

  1. Lectura de Cadencia: Mediante interrupciones de hardware, se capturan los flancos de señal del sensor PAS para calcular las RPM instantáneas con latencia mínima.
  2. Mapeo de Marchas: Se definieron umbrales de histéresis para evitar el «baile» de la cadena (cambios constantes e innecesarios). Si la cadencia supera el umbral superior (ej. 80 RPM), el sistema activa el servomotor para endurecer la marcha. Si cae por debajo del umbral inferior (ej. 50 RPM), se reduce la marcha para liberar carga.
  3. Visualización: Un módulo OLED comunica al usuario el estado del sistema: marcha actual, RPM y modo de operación.

Este desarrollo demuestra cómo componentes estándar, gestionados por un código eficiente, pueden replicar sistemas de transmisión complejos.

#include <Servo.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>

// Configuración de Hardware
const int PIN_SENSOR_PAS = 2; // Usamos interrupción 0
const int PIN_SERVO = 9;
Servo desviador;

// Variables de lógica
volatile unsigned long ultimoPulso = 0;
unsigned long rpm = 0;
unsigned long tiempoUltimoCalculo = 0;
int marchaActual = 1;

// Umbrales de Cadencia (Configurables)
const int UMBRAL_SUBIR_MARCHA = 75;
const int UMBRAL_BAJAR_MARCHA = 45;

void setup() {
  Serial.begin(9600);
  desviador.attach(PIN_SERVO);
  pinMode(PIN_SENSOR_PAS, INPUT_PULLUP);
  
  // Interrupción para capturar cada imán del PAS sin detener el loop
  attachInterrupt(digitalPinToInterrupt(PIN_SENSOR_PAS), contarPedaleo, RISING);
}

void loop() {
  // 1. Calcular RPM cada 500ms para estabilidad
  if (millis() - tiempoUltimoCalculo > 500) {
    calcularRPM();
    ajustarTransmision();
    tiempoUltimoCalculo = millis();
  }
  
  // Aquí el procesador está libre para actualizar OLED u otras tareas
}

void contarPedaleo() {
  // Debounce simple y registro de tiempo
  if (millis() - ultimoPulso > 50) { 
    rpm = 60000 / ((millis() - ultimoPulso) * 5); // Asumiendo 5 imanes en el plato
    ultimoPulso = millis();
  }
}

void ajustarTransmision() {
  // Lógica de histéresis para evitar cambios erráticos
  if (rpm > UMBRAL_SUBIR_MARCHA && marchaActual < 5) {
    marchaActual++;
    moverDesviador(marchaActual);
  } else if (rpm < UMBRAL_BAJAR_MARCHA && marchaActual > 1 && rpm > 10) {
    // rpm > 10 evita bajar marchas si la bici está quieta
    marchaActual--;
    moverDesviador(marchaActual);
  }
}

void moverDesviador(int marcha) {
  // Mapeo de ángulos calibrados para cada piñón
  int angulo;
  switch(marcha) {
    case 1: angulo = 10; break;
    case 2: angulo = 35; break;
    case 3: angulo = 60; break;
    // ... completar calibración
    default: angulo = 10;
  }
  desviador.write(angulo);
}

Proyectos:

guest
3 Comentarios
El más antiguo
El más nuevo Más votado
Opiniones integradas
Ver todos los comentarios
mariano
mariano
4 mes(es) hace

mola, gracias a este proyecto acabo de aprobar el mío

Ramón
Ramón
4 mes(es) hace

Me gusta mucho la idea de mantener una cadencia óptima sin pensar tanto en los cambios. El sistema automático con sensor PAS suena como algo que podría facilitar mucho el ciclismo urbano y recreativo. Sería genial probarlo en una e-bike.

Última edición 7 días hace by Ramón
Gabriele
Gabriele
7 días hace
Responder a  Ramón

Lo del PAS para cambios automáticos tiene sentido en e-bikes urbanas, pero en montaña no lo veo claro. Si reacciona tarde en una subida, te mata las piernas.

Mentoría Técnica Internacional
Formación especializada en microcontroladores, electrónica y programación. Consultoría directa basada en proyectos reales ejecutados en este ecosistema técnico, disponible para todo el mundo de habla hispana.
Emisión de facturación con validez internacional. Aceptamos Tarjeta de crédito/débito, Transferencia Bancaria (SWIFT) y PayPal.

GDPR