Calibraciones
Índice
- Tipos de Calibración
- Calibración del Giroscopio
- Calibración de Sensores Frontales
- Calibración Frontal Media
- Calibración de Sensores Laterales
- Persistencia en EEPROM
- Procedimiento de Calibración Completo
Tipos de Calibración
Seleccionables desde el menú CONFIG → CALIBRATION:
| ID | Tipo | Función |
|---|---|---|
| 0 | CALIBRATE_NONE |
Sin calibración |
| 1 | CALIBRATE_GYRO_Z |
Offset Z del giroscopio |
| 2 | CALIBRATE_SIDE_SENSORS_OFFSET |
Offset de sensores laterales |
| 3 | CALIBRATE_FRONT_SENSORS |
Calibración frontal de pared |
| 4 | CALIBRATE_FRONT_SENSORS_MIDDLE |
Distancia media frontal |
| 5 | CALIBRATE_STORE_EEPROM |
Guardar todo en EEPROM |
Archivos: calibrations.c, calibrations.h.
Secuencia de Activación
- Seleccionar el tipo de calibración en el menú.
- Pulsar MODE para activar → LED verde se enciende.
- Pulsar DEBUG para ejecutar → LED verde parpadea, delay 2s.
- La calibración se ejecuta automáticamente.
Calibración del Giroscopio
lsm6dsr_gyro_z_calibration() en lsm6dsr.c:
- Robot quieto en superficie plana.
- Toma 200 muestras del eje Z.
- Calcula el offset como el promedio de las lecturas.
- Calibra para cada full-scale (1000, 2000, 4000 dps) independientemente.
- Guarda offsets en EEPROM.
Calibración de Sensores Frontales
front_sensors_calibration() en sensors.c:
- Posicionar el robot de cara a una pared a 174 mm (
CELL_DIMENSION − WALL_WIDTH/2). - Toma
SENSOR_FRONT_CALIBRATION_READINGS = 20muestras. - Umbral raw:
threshold = Σ(raw_filter) / 20 / (1.5)²(fórmula corregida con ley 1/d²). - Offset de distancia:
offset = 174 mm − promedio(distancia_medida). - Guarda umbrales y offsets en EEPROM.
Calibración Frontal Media
front_sensors_middle_calibration() en sensors.c:
- Posicionar el robot en el centro de la celda (a
MIDDLE_MAZE_DISTANCE = 84 mmde la pared). - Mide la distancia objetivo media y el valor raw equivalente.
- Estos valores se usan para el control
keep_front_distance().
Calibración de Sensores Laterales
side_sensors_calibration(keep_sensors_on) en sensors.c:
- Posicionar el robot centrado entre dos paredes.
- Toma
SENSOR_SIDE_CALIBRATION_READINGS = 100muestras. - Umbral raw:
threshold = Σ(raw_filter) / 100 / (1.5)². - Offset de distancia:
offset = MIDDLE_MAZE_DISTANCE − promedio(distancia_medida). - Si
keep_sensors_on = false, desactiva sensores tras calibrar. - Guarda en EEPROM.
Esta calibración se ejecuta automáticamente al iniciar:
- floodfill_start_explore() — exploración
- floodfill_start_run() — speed run
Persistencia en EEPROM
Los datos de calibración se almacenan en el sector flash 11 con checksum para integridad. Ver EEPROM.
Al arrancar, eeprom_load() carga:
- sensors_distance_offset[4] — offsets de distancia
- sensors_raw_wall_detection_threshold[4] — umbrales raw
- sensors_middle_target_distance[4] — distancias medias objetivo
- offset_z[3] — offsets del giroscopio por full-scale
Los offsets se imprimen por puerto serie para verificación.
Procedimiento de Calibración Completo
Para una calibración completa del robot:
- Giroscopio: Robot quieto en superficie plana →
CALIBRATE_GYRO_Z→CALIBRATE_STORE_EEPROM - Sensores frontales: Robot de cara a pared a 174mm →
CALIBRATE_FRONT_SENSORS→CALIBRATE_STORE_EEPROM - Sensores frontales medio: Robot en centro de celda →
CALIBRATE_FRONT_SENSORS_MIDDLE→CALIBRATE_STORE_EEPROM - Sensores laterales: Robot centrado entre dos paredes →
CALIBRATE_SIDE_SENSORS_OFFSET→CALIBRATE_STORE_EEPROM
También disponible: calibrate_manual_distances() — Al pulsar DEBUG, imprime los valores raw filter de los 4 sensores por puerto serie para verificación manual.
Documento generado el 2026-06-12. Ver también Sensores, EEPROM, Encoders y Giroscopio.