Practica04 MM UlisesDanielSalinasChávez
Practica04 MM UlisesDanielSalinasChávez
Practica04 MM UlisesDanielSalinasChávez
DIVISIÓN DE INGENIERÍAS
CAMPUS IRAPUATO - SALAMANCA
PRACTICA 04
MATERIA:
MICROPROCESADORES Y MICROCONTROLADORES
PRESENTA:
ULISES DANIEL SALINAS CHÁVEZ
PROFESOR:
Dr. OSCAR GERARDO IBARRA MANZANO
21
1. Introducción
En la actualidad, la modulación por ancho de pulso (PWM) es una técnica esencial en el
ámbito de la electrónica, especialmente en el control de dispositivos y sistemas. Esta práctica
se centró en la configuración y uso del microcontrolador STM32, explorando su capacidad
para generar y controlar señales PWM a través del temporizador TIM2. La comprensión de
estos conceptos es fundamental para la implementación de soluciones eficientes en
aplicaciones industriales y de consumo. Durante la práctica, se profundizó en la interacción
entre hardware y software, así como en la visualización y ajuste dinámico de los parámetros
de la señal, lo que resulta crucial para el desarrollo de sistemas electrónicos.
2. Antecedentes
2.1 La modulación PWM
La modulación por ancho de pulso (PWM, Pulse Width Modulation) es una técnica
ampliamente utilizada en electrónica para el control de energía en diversos dispositivos. En
lugar de aplicar una señal continua variable (analógica), la PWM utiliza una serie de pulsos
discretos cuya duración puede ser ajustada. Al modificar el ancho de estos pulsos, se regula
la cantidad de energía entregada a un dispositivo, lo que permite un control eficiente y
preciso.
Una de las principales ventajas de la PWM es su eficiencia energética, especialmente al
controlar cargas inductivas, como motores. La técnica minimiza la pérdida de energía al
operar en condiciones de conmutación rápida, lo que reduce el calor generado y mejora la
duración del equipo. Además, la PWM es esencial para aplicaciones que requieren
variaciones en la potencia, como el control de velocidad en motores eléctricos y la regulación
del brillo en luces LED.
Conceptos Básicos
La PWM se basa en el concepto de ciclo de trabajo (duty cycle), que representa el porcentaje
del tiempo en que la señal está activa en comparación con el ciclo total. Por ejemplo, un ciclo
pág. 2
de trabajo del 50% indica que la señal está encendida la mitad del tiempo. Este control del
ciclo de trabajo permite ajustar la potencia suministrada a un dispositivo de manera precisa.
Aplicaciones Comunes
La modulación por ancho de pulso tiene diversas aplicaciones en el ámbito industrial y
cotidiano. Algunas de las más comunes incluyen:
• Control de Motores: La PWM permite mantener un par constante y regular la
velocidad de motores eléctricos, mejorando su rendimiento y eficiencia.
• Sistemas de Iluminación: Se utiliza en la regulación del brillo de luces LED,
ofreciendo una iluminación más eficiente y adaptable a diferentes necesidades.
• Telecomunicaciones: La PWM es útil para minimizar interferencias y optimizar la
transmisión de señales.
Ventajas de la Modulación por Ancho de Pulso
• Eficiencia Energética: La capacidad de controlar la energía de manera precisa reduce
el consumo general en aplicaciones.
• Reducción de Calor: Al utilizar conmutación rápida, se generan menos pérdidas de
energía en comparación con sistemas analógicos.
• Versatilidad: La PWM se puede implementar en una amplia variedad de tecnologías
y dispositivos, lo que la convierte en una herramienta clave en la electrónica moderna.
3. Material empleado
• Tarjeta de evaluación NUCLEO- • Manejador para LED de potencia
L476RTG • Computadora
• Cable mini-USB (Datos) • STM32CubeMX
• Cables de conexiones • STM32CubeIDE
• Puntas de osciloscopio • STM32Cube Monitor
• LED de potencia • Osciloscopio
4. Desarrollo
4.1 Configuración de operación del microcontrolador
En esta Práctica, configuraremos nuestro sistema con los elementos por defecto que nos
proporciona la selección de la tarjeta de evaluación del microcontrolador NUCLEO-
L476RG, que son el LED verde (LD2), el botón azul (B1) y el puerto de comunicación
asíncrona (UART2). Además, configuraremos el puerto PA0 como salida del canal 1 (CH1)
del temporizador 2 (TIM2). Este puerto será configurado más adelante para operar como
salida PWM.
▪ Selección de la tarjeta y configuración por defecto. Ejecuta la herramienta
STM32CubeMX y selecciona la tarjeta de evaluación NUCLEO-L476RG y habilita
la configuración de los periféricos por defecto.
pág. 3
▪ Configuración de la terminal PA0. Navega hasta el puerto PA0 y selecciona la
opción´ TIM2 CH1, esta selección permitirá configurar el puerto como una salida
PWM controlada por el temporizar 2.
▪ Selección del modo de operación del TIM2_CH1 en el puerto (PA0). Navega hasta
la sección de configuración del temporizador ubicada en la pestaña de [Categories]→
[Timers] → [TIM2]. En la configuración del temporizador realiza las siguientes
selecciones: [Clock Source] → [Internal Clock]y [Channel 1] → [PWM Generation
CH1].
pág. 4
Tomando en cuenta las ecuaciones anteriores, y considerando que deseamos generar
una señal PWM a una frecuencia de f = 5,0kHz con una resolución de NPWM = 100
pasos. Si la frecuencia de operación del reloj del temporizador es de PCLK1=80MHz,
entonces los registros quedarían de la siguiente forma:
pág. 5
▪ Generación de código. El último paso para obtener la estructura de archivos es
definir el nombre de nuestro proyecto, establecer el entorno de desarrollo que
utilizaremos (STM32CubeIDE) y seleccionar una generación de archivos pares .c
y .h separados para cada uno de los periféricos. Este proceso se observa en la
Figura 5. Genera el código una vez que hayas grabado el proyecto .ioc,
presionando el botón [GENERATE CODE] que está ubicado en la parte superior
derecha de la ventana
pág. 6
generación de la señal PWM y una etapa de actualización de ciclo de trabajo. Por lo tanto,
solo será necesario declarar dos variables:
Finalmente, incluimos dentro del ciclo while(1) la condición de actualización del registro
CCRx, encargado de establecer la duración en alto de la señal PWM, generada solo cuando
las variables DutyCycle y DutyCycleUpdate sean diferentes, lo que ocurre, cuando de forma
externa a traves del STM32Cube Monitor se modifica la variable DutyCycleUpdate, esta
actualización la realizaremos aplicando el macro HAL_TIM_SET_COMPARE(
__HANDLE__,__CHANNEL__,__COMPARE__), como lo muestra la sección del
programa siguiente:
pág. 7
4.3 Programación de panel de comunicación en el STM32Cube Monitor
Inicia la aplicación STM32Cube Monitor, el área de trabajo inicial se mostrará de la siguiente
forma:
pág. 8
la ruta de acceso para el archivo, usualmente de la forma: ...Debug. Definida la ruta
de acceso, podrás seleccionar el nombre del archivo. Después de haber seleccionado
el archivo se expandirán todas las variables declaradas en la aplicación. Selecciona
las variables DutyClycle y DutycycleUpdate y presiona el botón [UPDATE], esto te
llevara a la ventana anterior. Aquí, observa la dirección de inicio de la variable
dutyCycleUpdate, será utilizada posteriormente. Presiona [DONE] para concluir la
configuración.
pág. 9
actualizaremos son: Units con % y Range con los valores de 0 y 100 para min y max,
respectivamente. Cierra la configuración presionando [Done].
pág. 10
Figura 10. Conexión y configuración de los nodos: Single value y gauge
pág. 11
Figura 11. Configuración del nodo: Template
4.3 Prueba
Para realizar la prueba del sistema deberás desplegar el programa presionando [DEPLOY] y
una vez que se muestre que se ha realizado en despliegue satisfactoriamente, verifica el
correcto funcionamiento presionando [DASHBOARD] e inicia la ejecución presionando
[START ACQUISITION]. En este momento, podrás observar el indicador (gauge) que
muestra el valor de la variable DutyCycle y el control deslizante (slider) es capaz de
actualizar el valor de la variable DutyCycleUpdate. Verifica con ayuda del osciloscopio que
el ciclo de trabajo de la señal PWM generada sea actualizada al valor deseado.
5. Actividades y resultados
1. Desarrolla la aplicación descrita en la Práctica y realiza las pruebas necesarias.
Reporta la señal observada en el osciloscopio en donde se aprecie la medición del
ciclo de trabajo de la señal PWM.
pág. 12
Para desarrollar la aplicación, comenzamos configurando el entorno de trabajo en
STM32CubeMX, seleccionando la tarjeta NUCLEO-L476RG. Una vez listo, configuramos
los periféricos necesarios, como el temporizador que usaríamos para generar la señal PWM.
Decidimos utilizar el temporizador TIM2 para controlar el pin PA0, que es donde se generaría
la señal PWM.
Luego ajustamos el temporizador para que la frecuencia de la señal PWM fuera de 5 kHz,
con un ciclo de trabajo inicial del 50%. Esto lo logramos configurando adecuadamente el
prescaler y el periodo del temporizador, garantizando así que la señal tuviera la resolución
que buscábamos.
Con el entorno configurado, generamos el código en STM32CubeMX y lo importamos en
STM32CubeIDE. En este punto, escribimos el código necesario para iniciar la señal PWM
usando las funciones de la librería HAL y también agregamos un ciclo de control para ajustar
dinámicamente el ciclo de trabajo de la señal según las necesidades. De esta forma, pudimos
controlar la señal PWM y variarla entre 0% y 100%.
Una vez que todo estuvo programado, cargamos el código en la tarjeta y utilizamos un osciloscopio
para verificar la señal. Conectamos la sonda al pin PA0 y observamos la señal PWM generada.
Pudimos apreciar claramente el ciclo de trabajo, que variaba tal como lo habíamos configurado en el
código. Esto nos permitió confirmar que la señal estaba funcionando correctamente y que la
configuración había sido exitosa.
pág. 13
2. Describe que función tienen los registros PSC, ARR, Pulse y la frecuencia de
operación del reloj del temporizador PCLK1.
PSC: Ajusta la frecuencia del reloj.
ARR: Define el periodo total del temporizador.
Pulse: Establece el ciclo de trabajo de la señal PWM.
PCLK1: Es la frecuencia base que alimenta el temporizador antes de cualquier división.
3. Modifica la aplicación para generar una señal PWM con una frecuencia operación de
fPWM = 2,5kHz y una resolución de 8-bits ( NPWM = 256).
Para modificar la aplicación y generar una señal PWM con una frecuencia de operación de
2.5 kHz y una resolución de 8 bits (256 pasos), es necesario recalcular los valores de los
registros clave, como el PSC) y el valor ARR, basados en la frecuencia del reloj del
temporizador (PCLK1) que es de 80 MHz.
La relación entre la frecuencia PWM, el prescaler, y el valor de auto-reload se da por la
siguiente fórmula:
Figura 13. Diagrama de Actualización Remota del Ciclo de Trabajo PWM mediante MQTT
6. Conclusiones
Durante esta práctica, profundicé en la configuración y uso de los periféricos del
microcontrolador STM32, centrándome especialmente en la generación de señales PWM a
través del temporizador TIM2. Aprendí a configurar el canal TIM2_CH1 para generar una
señal PWM con una frecuencia de 5 kHz, permitiéndome ajustar el ciclo de trabajo entre 0%
y 100%. Esta experiencia me ayudó a entender cómo el microcontrolador gestiona las señales
de salida y cómo puedo controlar dispositivos utilizando el modo PWM.
También exploré el uso de la variable DutyCycle para modificar el ancho del pulso en tiempo
real. Implementé la función HAL_TIM_PWM_Start() para iniciar la generación de la señal
y utilicé el macro HAL_TIM_SET_COMPARE() para actualizar el registro CCRx, lo que
me permitió hacer cambios instantáneos en el ciclo de trabajo.
Un aspecto que considero importante fue mi experiencia con STM32Cube Monitor, donde
configuré un panel de comunicación que me permitió visualizar el ciclo de trabajo actual y
modificarlo a través de un control deslizante. Esta interfaz no solo facilitó la visualización en
tiempo real, sino que también validó que los cambios en el DutyCycleUpdate se reflejaban
correctamente en la señal PWM generada.
pág. 15
7. Bibliografías
[1] PWM: Modulación por Ancho de Pulso, ¿Qué es y sus aplicaciones?,
Transistores.info, [Online]. Available: https://transistores.info/pwm-modulacion-
por-ancho-de-pulso-que-es-y-sus-aplicaciones/.
[2] STM32 Nucleo PWM Timers using STM32CubeIDE, Microcontrollers Lab,
[Online]. Available: https://microcontrollerslab.com/stm32-nucleo-pwm-timers-
stm32cubeide/.
[3] PWM: Modulación por Ancho de Pulso, Unicrom, [Online]. Available:
https://unicrom.com/pwm-modulacion-por-ancho-de-pulso/.
[4] L. E. Vázquez Prado y U. Peñuelas Rivas, Manual de prácticas: STM32 con IDE
Cube. [Online]. Available:
https://www.ingenieria.unam.mx/penuelas/CircuitosDigitales/doc/Manuales/mp_st
m32_con_ide_cube.pdf.
[5] STM32CubeIDE, STMicroelectronics. [Online]. Available:
https://www.st.com/en/development-tools/stm32cubeide.html.
pág. 16