Módulo 2

Temporizadores: timers de hardware y software

Conceptos Fundamentales de Programación

ESP32 Mecatrónica IoT UNAM

Introducción Teórica

Los temporizadores, o timers, son esenciales en la programación de microcontroladores y sistemas embebidos. Se trata de componentes de hardware que pueden generar eventos temporizados. Estos pueden ser de dos tipos: de hardware y de software. Los timers de hardware son estables, precisos y no dependen del software para su funcionamiento. Por otro lado, los timers de software son menos precisos y dependen de la carga del sistema.

En la mecatrónica e IoT (Internet of Things), los temporizadores son cruciales para controlar la sincronización de las tareas, generar retardos, medir intervalos de tiempo y generar señales de PWM (Pulse Width Modulation), entre otros. Los temporizadores son ampliamente utilizados en la industria, especialmente en automatización y robótica, donde se utilizan para controlar la secuencia de operaciones y la sincronización de tareas.

Explicación Técnica Detallada

El ESP32 es un microcontrolador de bajo costo con capacidades de WiFi y Bluetooth que lo hacen ideal para aplicaciones de IoT. Este microcontrolador tiene varios timers de hardware y software integrados.

El ESP32 cuenta con tres timers de hardware de 64 bits cada uno. Estos pueden configurarse para generar interrupciones en intervalos de tiempo específicos. Los registros y configuraciones importantes para la configuración de los timers son: el registro de control (TnCTL), el registro de carga (TnLOAD), el registro de valor actual (TnVALUE), entre otros.

A continuación, se muestra un ejemplo de código en el IDE de Arduino para configurar un timer de hardware:

C++
hw_timer_t * timer = NULL;

void IRAM_ATTR onTimer() {
  // Código a ejecutar cuando se genera la interrupción
}

void setup() {
  timer = timerBegin(0, 80, true);
  timerAttachInterrupt(timer, &onTimer, true);
  timerAlarmWrite(timer, 1000000, true);
  timerAlarmEnable(timer);
}

En este ejemplo, se configura el timer 0 para generar una interrupción cada segundo. La función timerBegin configura el timer y timerAttachInterrupt define la función que se ejecutará cuando se genere la interrupción.

Ejercicios Prácticos Visuales

1

Parpadeo de LED con timer de hardware

Básico 30 min

Objetivo: Utilizar un timer de hardware para controlar el parpadeo de un LED.

Materiales: ESP32, LED, resistencia de 220Ω, protoboard, cables.

Resultados esperados: El LED debería parpadear cada segundo.

2

Generación de señal PWM

Intermedio 40 min

Objetivo: Generar una señal PWM con un timer de hardware.

Materiales: ESP32, osciloscopio.

Resultados esperados: Debería generarse una señal PWM en el pin especificado.

3

Temporizador de software

Avanzado 50 min

Objetivo: Utilizar un temporizador de software para controlar la ejecución de tareas.

Materiales: ESP32, LED, resistencia de 220Ω, protoboard, cables.

Resultados esperados: El LED debería encenderse y apagarse en intervalos controlados.

Proyecto Aplicado

Control de motor paso a paso con temporizadores

Aplicación práctica en mecatrónica: Este proyecto puede aplicarse en una máquina CNC, un robot, o cualquier sistema que requiera un control preciso del movimiento de un motor paso a paso.

Integración con sensores/actuadores: Motor paso a paso.

Lista de materiales:
  • ESP32
  • Driver para motor paso a paso
  • Motor paso a paso
  • Fuente de alimentación
  • Cables de conexión

Evaluación y Troubleshooting

Problemas comunes:
  • Inestabilidad en las interrupciones
  • Imprecisión en los intervalos de tiempo
  • Conflicto con otras tareas del microcontrolador
Soluciones:
  • Ajustar las configuraciones de los timers
  • Utilizar timers de hardware para mayor precisión
  • Evitar interrumpir tareas críticas