¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Patillas, temporizadores y PWM

Después de esta lección: Puedo calcular el ciclo de trabajo de una señal PWM a partir de su valor de comparación.

Lección de 50 min2 comandosLaboratorio de sistemas embebidos: registros, pines, PWM e interrupciones en un chip simulado

Cómo hace un chip parpadear una luz

Una patilla de uso general, en inglés GPIO (general purpose input output), puede ser una entrada o una salida. Una entrada lee un botón y una salida enciende un diodo LED. El chip decide el nivel de una salida escribiendo un bit.

Si sabes cambiar ese bit según un horario, puedes hacer parpadear una luz o regular su brillo.

Al final de esta lección

Nota

Puedo calcular el ciclo de trabajo de una señal PWM a partir de su valor de comparación.

Palabras clave

PalabraQué significa
Salidauna patilla que el chip pone en alto o en bajo
Ticun paso del reloj del chip
Temporizadorun contador que sube un número en cada tic
PWMmodulación por ancho de pulso: una patilla que cambia muy deprisa
Ciclo de trabajoel porcentaje del periodo que la patilla está en alto
Periodolos tics que tarda el temporizador en dar una vuelta

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Recuerda: es un simulador

Importante

El chip del laboratorio es un simulador de un chip inventado, no una placa real. Los scripts imprimen palabras en inglés, como on, off y duty.

DDR decide qué patillas son salidas

El registro DDR dice qué patillas son salidas: un 1 en el bit n hace que la patilla n lo sea. El registro PORT guarda el nivel que el chip pone en ellas.

El registro PIN no guarda nada: muestra el nivel de cada patilla ahora mismo. En una salida, PIN enseña lo que el chip está poniendo.

Haz parpadear la patilla 0

Comando
docker exec jupyter python3 steps/pins.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Parpadear es invertir un bit cada tic

El script pone un 1 en DDR, bit 0, y otro en PORT. Después PIN se lee de vuelta como 0b00000001.

Luego invierte el bit una vez por tic durante ocho tics. Escribe #.#.#.#.: la almohadilla es la luz encendida y el punto, apagada.

PWM regula con el tiempo en alto

Un diodo LED o un motor no entienden de medias tintas: solo reciben alto o bajo. Con PWM la patilla se enciende y se apaga muy deprisa, y lo que cambia es la parte del tiempo que está en alto.

El temporizador cuenta de 0 a 15 y vuelve a empezar: ese es el periodo, 16 tics. Mientras la cuenta TCNT sea menor que OCR, la patilla 5 está en alto.

Ejemplo resuelto: tres valores de OCR

OCRTics en altoTics en bajoCiclo de trabajo
44124 de 16, un 25 %
8888 de 16, un 50 %
1212412 de 16, un 75 %

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Dibuja un periodo con tres valores de OCR

Comando
docker exec jupyter python3 steps/pwm.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Qué imprime el script de PWM

Escribe tres líneas, una por valor de OCR. Cada una empieza con compare, el valor, y sigue con 16 caracteres: una almohadilla por tic en alto y un punto por tic en bajo.

Después vienen on, los tics en alto, off, los tics en bajo, y duty, el ciclo de trabajo en porcentaje. Salen 25, 50 y 75, como en la tabla.

Un error frecuente

Advertencia

Mucha gente cree que PWM baja la tensión de la patilla. No la baja. La patilla solo está en alto o en bajo, y lo que cambia es cuánto tiempo pasa en alto. Como cambia tan deprisa, el ojo y el motor notan el promedio.

Calcula el ciclo de trabajo

Código: python
periodo = 16
comparacion = 4   # cambia este valor

niveles = []
for tic in range(periodo):
    if tic < comparacion:
        niveles.append(1)
    else:
        niveles.append(0)

print(niveles)
print(sum(niveles) * 100 // periodo, "%")

Sobre este laboratorio y su código: Laboratorio de sistemas embebidos: registros, pines, PWM e interrupciones en un chip simulado

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.