Está en la página 1de 7

UNIVERSIDAD AUTONOMA DE ZACATECAS

“FRANCISCO GARCIA SALINAS”


UNIDAD ACADEMICA DE INGENERIA ELECTRICA
INGENERIA EN ROBOTICA Y MECATRONICA
MICROCONTROLADORES
DOCENTE: FABIAN GARCIA VAZQUEZ
ALUMNO: LEONARDO TREJO GONZALEZ
GRUPO 5”A
Introduccion

¿Qué es PWM?

PWM significa Modulación por Ancho de Pulso (en inglés, Pulse Width Modulation).
Es una técnica utilizada en electrónica para controlar el nivel de potencia entregada
a un dispositivo, como un motor eléctrico o un LED. La idea básica detrás del PWM
es variar el ancho de los pulsos eléctricos enviados a un dispositivo durante un
período de tiempo
determinado.

¿Como se implementa PWM con registros?

Un Timer, o temporizador, en un microcontrolador es un componente fundamental


que se utiliza para medir el tiempo y generar señales periódicas. Estos
temporizadores son extremadamente versátiles y se utilizan en una amplia variedad
de aplicaciones, incluyendo la generación de
señales PWM.
Código
Definición de direcciones de memoria y registros:
El código define direcciones de memoria y registros para configurar y controlar
varios periféricos, como el Registro de Control del Reloj (RCC), el ADC, los puertos
GPIO y los temporizadores (TIM2 y TIM3). Se utilizan macros para facilitar el
acceso a estos registros y direcciones de memoria.

Declaración de funciones:
El código declara varias funciones que se utilizarán más adelante en el programa.
Estas funciones incluyen delay, initPortClocks, initADCChannel0, initADCChannel9,
getADCValue, initpwm, y mapPot.

Variables globales:
El código declara variables globales pwm_value y analog_value, que se utilizan
para almacenar valores relacionados con el control PWM y la lectura del ADC.

Función main:
La función principal main es el punto de entrada del programa. Realiza las
siguientes acciones:

Llama a initPortClocks para habilitar los relojes de los periféricos utilizados (puertos
GPIO, ADC, TIM2 y TIM3).

Llama a initpwm para configurar la salida PWM en el TIM3 y el pin GPIOB.

Llama a initADCChannel0 para configurar el ADC y el pin de entrada analógica


(PA0).

En un bucle infinito, se realiza lo siguiente:


Lee el valor del ADC mediante getADCValue.
Llama a mapPot para mapear el valor del ADC a un valor de PWM.

Establece el valor del PWM en el TIM3_CCR4, que controla la velocidad o posición


del motor o dispositivo.

Llama a delay para introducir un retardo.

Función initPortClocks:
Esta función habilita los relojes para los periféricos necesarios. Se utilizan registros
del RCC (Registro de Control del Reloj) para habilitar los relojes de los puertos
GPIO (Puertos A y B), el ADC1, y los temporizadores TIM2 y TIM3.

Funciones initADCChannel0 y initADCChannel9:


Estas funciones configuran el ADC para tomar muestras de un pin de entrada
analógica específico (PA0 y PB1) en los puertos GPIO. También se habilita el ADC
y se configura la tasa de muestreo.

Función getADCValue:
Esta función habilita la conversión ADC, espera a que termine la conversión y luego
devuelve el valor de la conversión.

Función delay:
Esta función configura el temporizador TIM2 para generar un retardo especificado
en milisegundos. El temporizador se utiliza como temporizador de precisión para
generar un retardo.

Función initpwm:
Esta función configura el TIM3 y el pin de salida PWM en el puerto GPIOB.
Configura el temporizador para generar una señal PWM y establece el canal 4
(CCR4) para controlar la anchura del pulso PWM.

Función mapPot:
Esta función realiza una conversión de valores mapeando un valor de entrada
(analog_pot) desde el rango de valores del ADC (0-4095) al rango deseado de
valores PWM (0-999).

Conclusiones.
El programa se utiliza un potenciómetro como fuente de entrada analógica. El valor
del potenciómetro se mide a través de un canal del ADC, en particular, el canal 0
(PA0).

El ADC convierte la señal analógica del potenciómetro en un valor digital, que se lee
utilizando la función getADCValue.

La función mapPot se utiliza para mapear el valor del ADC en un rango deseado
para el control PWM. El valor mapeado se utiliza para controlar la modulación por
ancho de pulso (PWM) en el pin de salida asociado al TIM3_CCR4. La señal PWM
puede utilizarse para controlar la luminosidad de un LED.

Se utiliza el temporizador TIM3 para generar la señal PWM que controla la


luminosidad del LED. El LED se conecta al pin de salida asociado al TIM3_CCR4 en
el puerto GPIOB.
La función delay se utiliza para introducir un retardo en el bucle principal. Esto
podría ser para ajustar la velocidad de cambio de luminosidad del LED o para
permitir una visualización suave de los cambios en el valor del potenciómetro.

En conclusión , el programa permite al usuario controlar la intensidad luminosa de


un LED mediante un potenciómetro. A medida que el usuario gira el potenciómetro,
el valor se convierte a una señal PWM que controla la luminosidad del LED. Esto
crea una especie de "dimmer" para el LED, permitiendo aumentar o disminuir la
intensidad luminosa según la posición del potenciómetro.

También podría gustarte