Está en la página 1de 3

1

Práctica 4. PWM
Universidad de Guanajuato, División de Ciencias e Ingenierías
Arquitectura de Microcontroladores
Profesor: Dr. Eduardo Montes Ramírez
Fonseca Uribe Oswaldo Emmanuel 1
Muñoz González Raúl Gilberto 2

Resumen—Se analizó, mediante la creación de un circuito y Cargador de 5V (max) o batería de 9V


programación de un código, el método de PWM (Modulación por Primeramente se realizó el código en el IDE de Arduino
ancho de pulsos por sus siglas en inglés) para observar el cambio
de intensidad de un LED y el movimiento de un servomotor. en la computadora portátil, mismo presentado en la sección
pertinente de este reporte.

La modulación por ancho de pulsos (también conocida


I. C IRCUITO E LECTRÓNICO como PWM, siglas en inglés de pulse-width modulation)
La figura 1 muestra el circuito simulado en la plataforma de una señal o fuente de energía es una técnica en la que
Tinkercad, mismo que se construyó durante la práctica en el se modifica el ciclo de trabajo de una señal periódica (una
laboratorio. senoidal o una cuadrada, por ejemplo), ya sea para transmitir
información a través de un canal de comunicaciones o para
controlar la cantidad de energía que se envía a una carga. Esta
señal, y como al modificar en ancho de los pulsos se muestra
en 2

Figura 1. Circuito de la práctica simulado

II. O BJETIVOS
Crear un ciclo de cambio de intensidad de LED con
PWM de manera automática.
Cambiar intensidad de LED mediante PWM con un
ajuste por medio de un potenciómetro.
Controlar la posición de servomotor mediante PWM y
entrada de un potenciómetro.
Figura 2. PWM de una señal cuadrada
III. M ATERIALES Y M ONTAJE E XPERIMENTAL
Materiales utilizados en la práctica: Esto se utiliza directamente en, como es el caso de la
práctica, un LED que constantemente está oscilando entre
Computadora Portátil
encendido y apagado, pero el la velocidad es tan alta que los
Placa de Arduino UNO R3 y cable de alimentación USB
ojos no lo alcanzan a percibir; una vez modificando el pulso
Protoboard
de la señal se puede notar un cambio en al intensidad del led,
Potenciómetro 10K
debido a que cada vez apaga y enciende más lentamente y se
Cable C22 (varios colores)
percibe.
Servomotor de baja potencia.
Resistencias (100,220,300) varias
En esta práctica aprendemos a utilizar las entradas
1 Lic. en Física oe.fonsecauribe@ugto.mx analógicas en la placa, caracterizadas por una muesca a un
2 Ing. Química Sustentable rg.munozgonzalez@ugto.mx lado del numero de pin. Seguido a esto utilizamos las entradas
2

analógicas que nos brinda la igualmente la placa para colocar


un potenciometro y captar las lecturas y de aqui, controlar la
intensidad del LED anterior (en el caso del objetivo 2) y un
servo-motor (en el caso del objetivo 3). A continuación, en
la figura 3, se caracterizan los pines de la placa Arduino UNO.

Figura 5. Circuito montado, objetivo 2

Figura 3. Pin-out de la placa Arduino UNO

Las figuras 4 , 5 y 6 muestran el circuito montado utilizado


para cada uno de los objetivos.

Figura 6. Circuito montado, objetivo 3

IV. C ÓDIGO
A continuación se presenta el código creado para la práctica,
éste está programado por partes para observar correctamente
cada uno de los objetivos por separado:

IV-A. Objetivo 0
Primeramente agregamos lo necesario de bibliotecas para
la práctica, así como variables que nos serviran para algunos
calculos y el setup de la práctica (nótese que las Analog In
Figura 4. Circuito montado, objetivo 1 no se declaran en el setup, ya que son directamente entradas)
3

#include <Servo.h> //Incluimos la librera void loop(){


para controlar el servomotor (Objetivo 3) POT = analogRead(A0);
analogWrite(LED2, POT);
Servo myservo; //Creamos el objeto del POT = map(POT, 0, 1023, 0, 180);
servomotor }
int I = 0; //Creamos una variable para
controlar la intensidad La función map(x,xmin,xmax,vmin,vmax); toma
const int LED1 = 3; //Led del objetivo 1
const int LED2 = 5; //Led del objetivo 2 los valores que recibe del potenciometro y su rango, y nos
int POT = 0; //Valor recibido por la entrada devuelve valores en el rango de 0 a 180 como los grados que
analgica del potenciometro puede moverse el servo.
const int servom = 11;
int PULMIN = 50; //Valor para el mnimo del
pulso (Se calibra) IV-D. Objetivo 3
int PULMAX = 2900; //Valor para el mximo del Controlar la posición de servomotor mediante PWM y
pulso (Se calibra) entrada de un potenciómetro.
void setup() {
pinMode(LED1, OUTPUT); Finalmente aplicamos lo mismo del objetivo anterior
pinMode(LED2, OUTPUT); solo que esta vez usamos un objeto Servo, de la biblioteca
myservo.attach(servom, PULMIN, PULMAX); Servo.h. Leemos la entrada del potenciometro y le
enviamos la información, en grados, para posicionar el
}
servomotor. Como nota,

IV-B. Objetivo 1 void loop(){


POT = analogRead(A0);
Crear un ciclo de cambio de intensidad de LED con analogWrite(LED2, POT);
PWM de manera automática. myservo.write(POT);
delay(15);}
Vemos que, una vez declarado todo, solo es pasar de
forma ascendente y descendente la información al LED, (o
el voltaje), esto a traves que la entrada PWM que tiene el V. C ONCLUSIONES
arduino que recibe o imprime valores entre 0 y 255, por esto V-A. Fonseca Uribe Oswaldo Emmanuel
se usa este valor.
Al igual que la práctica anterior, la implementación es
0 −→ 0V sencilla, pero lo que implica es bastante grande para muchas
cosas de las prácticas siguientes, ya que el concepto de entrada
255 −→ 5V analógica abre las puertas a controlar, de manera muy sencilla,
rangos de diferentes circuitos.
void loop() { No solo eso, sino también poder conocer un poco más sobre
for(I=0; I<256; I++){ la placa Arduino UNO con los pines en 3 y sus caracteristicas
analogWrite(LED1, I); específicas.
delay(25);
}
for(I=255; I>=0; I--){ V-B. Muñoz González Raúl Gilberto
analogWrite(LED1, I);
delay(25); En general está práctica implica aplicar lo que se ha visto en
} práticas pasadas, resultando demasiado sencilla, ya que el pun-
to uno es hacer que de manera automática se encienda un led,
para posteriromente controlar la incandecencia del led través
IV-C. Objetivo 2 de un potenciometro, el cual permitirá pasar más o mnenos
voltaje, y por lo tanto cambiará la intensidad de este. Para
Cambiar intensidad de LED mediante PWM con un
finalmente controlar un servomotor, con un potenciometro,
ajuste por medio de un potenciómetro.
lo cual fue realmente sencillo gracias a una libreríallamada
myservo, por lo que realmente está fue una práctica sencilla,
Para esta parte, creamos una entrada analógica con un
donde se aplico lo ya conocido en las prácticas anteriores.
potenciometro conectado como se ve en el diagrama 1, esta,
a diferencia de las entradas con PWM en los pines, nos da un
rango entre 0 y 1023 para los valores recibidos de voltaje. así R EFERENCIAS
que lo que se hace es leer el valor de voltaje recibido por este [1] [H] Arduino. (2022). Arduino Reference.
https://www.arduino.cc/reference/en/?}_gl=1*11hrmjr*_ga*MTU0MDY3
potenciometro con la función analogRead e imprimimos NzA5MC4xNjYwNzAwNDA2*_ga_NEXN8H46L5*MTY2MDcwMDQw
este valor al LED con la función analogWrite. NS4xLjEuMTY2MDcwMDQyMC40NS4wLjA.

También podría gustarte