Conceptos Esenciales de Microcontroladores y Sistemas Embebidos para Robótica

Clasificado en Informática

Escrito el en español con un tamaño de 7,64 KB

Fundamentos de Microcontroladores y Sistemas Embebidos

1. ¿Qué es un Microcontrolador y en qué se diferencia de un Microprocesador o un PC?

Un microcontrolador (MCU) es un circuito integrado que incluye, en un solo chip, un procesador, memoria y periféricos. A diferencia de un microprocesador de PC, el MCU está diseñado para tareas específicas, consume menos energía y tiene un coste mucho menor. Los PCs requieren sistemas operativos complejos, mientras que los MCUs suelen funcionar con software muy simple o incluso sin sistema operativo (SO).

2. ¿Qué es un Sistema Embebido? Ejemplos y Ventajas.

Un sistema embebido es un sistema electrónico programado para realizar tareas concretas dentro de otro sistema mayor. Está basado en microcontroladores o procesadores específicos. Sus ventajas principales son:

  • Bajo consumo de energía
  • Simplicidad en su diseño y operación
  • Bajo coste de producción

3. ¿Qué Periféricos Básicos tiene un Microcontrolador?

Los microcontroladores suelen integrar una variedad de periféricos esenciales, entre los que se incluyen:

  • GPIO (General Purpose Input/Output): Entradas y salidas digitales.
  • Temporizadores y PWM (Pulse Width Modulation): Para control de tiempo y generación de señales moduladas por ancho de pulso.
  • ADC (Analog-to-Digital Converter) y DAC (Digital-to-Analog Converter): Para conversión de señales analógicas a digitales y viceversa.
  • Módulos de comunicación: Como I2C, SPI y UART, para interactuar con otros dispositivos.
  • Gestor de interrupciones y watchdog: Para manejar eventos asíncronos y asegurar la estabilidad del sistema.

4. Diferencias entre Interrupción y Polling.

La principal diferencia radica en cómo el microcontrolador detecta y responde a los eventos:

  • El polling revisa continuamente si hay eventos, consumiendo recursos del procesador de forma constante.
  • La interrupción permite al microcontrolador ejecutar otras tareas y solo detenerse para atender un evento cuando este ocurre, lo que optimiza el uso de recursos.

5. Diferencias entre I2C y SPI.

Ambos son protocolos de comunicación serie, pero presentan características distintas:

  • I2C (Inter-Integrated Circuit): Utiliza dos cables (SDA para datos y SCL para reloj), permite conectar múltiples dispositivos con una velocidad de comunicación menor.
  • SPI (Serial Peripheral Interface): Utiliza cuatro cables (MISO, MOSI, SCK, SS), es más rápido, pero requiere más líneas de conexión por dispositivo. SPI es ideal para dispositivos que requieren alta velocidad, mientras que I2C es adecuado para sistemas con pocos pines disponibles.

6. ¿Qué es y cómo se genera una Señal PWM?

Una señal PWM (Pulse Width Modulation) es una señal cuadrada con frecuencia constante y ancho de pulso variable. Sirve para controlar la velocidad de motores, la intensidad de LEDs o la generación de voltajes analógicos. Se genera con un temporizador que activa comparadores para fijar el ciclo de trabajo (la proporción de tiempo que la señal está en estado alto).

7. ¿Qué hacen un ADC y un DAC?

  • El ADC (Convertidor Analógico-Digital) convierte señales analógicas (como voltajes, temperaturas o presiones) en valores digitales que el microcontrolador puede procesar.
  • El DAC (Convertidor Digital-Analógico) realiza la operación inversa: convierte datos digitales generados por el microcontrolador en señales analógicas, útiles para controlar actuadores o generar audio.

8. ¿Qué Métricas de Diseño hay en Sistemas Embebidos?

Las métricas de diseño en sistemas embebidos son cruciales para evaluar y optimizar el proyecto. Incluyen:

  • Coste
  • Tamaño físico
  • Consumo de energía
  • Rendimiento
  • Fiabilidad
  • Mantenibilidad
  • Tiempo de desarrollo
  • Flexibilidad
  • Seguridad

La prioridad de estas métricas varía significativamente según la aplicación concreta del sistema.

9. ¿Qué se observa en una Señal PWM o de Encoder?

  • En una señal PWM, se observa el ciclo de trabajo, que es el parámetro que controla la velocidad de un motor o la intensidad de una luz.
  • Las señales del encoder (típicamente OUT_A y OUT_B) son señales cuadradas desfasadas entre sí. Este desfase permite determinar la dirección de rotación y, al contar los pulsos, medir la rotación de una rueda o eje.

10. ¿Cómo se habilita un Sensor de Distancia vía I2C?

Para habilitar un sensor de distancia vía I2C, se envía una trama I2C desde el microcontrolador con la dirección específica del sensor y un comando para activarlo. Esta trama, compuesta por bytes transmitidos en las líneas SDA y SCL, puede ser observada y verificada mediante un analizador lógico.

Aplicaciones en Robótica: Movimiento y Sensores

11. Movimiento, Pulsos y Calibración del Robot.

La relación entre los pulsos del encoder y la distancia recorrida se calcula mediante la fórmula:

pulsos = (distancia / (π · diámetro)) × pulsos por vuelta

Es importante destacar que si la rueda es más grande, necesitará menos vueltas para cubrir la misma distancia. Además, la falta de calibración de los motores (si no giran de manera uniforme) puede provocar que el robot se desvíe de su trayectoria deseada.

12. ¿Cómo se hace el Seguimiento de Línea con Sensores?

El seguimiento de línea se realiza utilizando sensores infrarrojos (como el CNY70) que detectan la reflectividad del suelo (claro u oscuro). Si los sensores detectan una superficie oscura (negra), el robot sigue la línea. Se programan condiciones específicas para corregir la dirección del robot en función de qué sensores detectan la línea, permitiendo un seguimiento preciso y autónomo.

13. ¿Cómo se controla un LED RGB por I2C?

El control de un LED RGB vía I2C implica el envío de tramas I2C a un controlador específico, como el PCA9533, para indicar el color deseado mediante el uso de registros PWM.

En el contexto del proyecto Holobot, se utilizan dos componentes distintos conectados al bus I2C para el control de iluminación:

  • PCA9533: Expansor I2C con Salidas LED

    • Se sitúa en la parte delantera del Holobot.
    • Se enciende en blanco fijo para iluminar el camino.
    • Se activa con el valor base 0x40.
  • CLP6C: LED RGB Superior

    • Ubicado en la parte superior del Holobot.
    • Muestra un color diferente según si el robot sigue la línea o no.
    • Para encender el color rojo, se suma 0x01 al valor base (resultando en 0x41).
    • Para encender el color verde, se suma 0x04 al valor base (resultando en 0x44).

Esta configuración permite que el PCA delantero se mantenga encendido en blanco constantemente, mientras que el LED superior (CLP6C) cambia de color según las detecciones de los sensores del robot. Para activar ambos LEDs simultáneamente, se utiliza el registro 0x05, que corresponde al selector de LED (LS0).

Entradas relacionadas: