27/08/2022
Monroy de la Rosa Cesar Armando
Torres Lucas Sandra Ines
/0808
Universidad Autónoma del Estado de
México
Facultad de ingeniería
Diseño Mecatrónico
PRACTICA 2
MANEJO DE SALIDAS CON PWM Y ENTRADAS TOUCH CON ESP32
OBJETIVO:
Utilizando el sistema embebido ESP32 realizar la programación adecuada en C
utilizando la interfaz de desarrollo (IDE) de Arduino para el manejo de salidas con salida
de modulación de ancho de pulso.
INTRODUCCIÓN:
El ESP32 de 38 Pines es una placa de desarrollo que integra el microcontrolador ESP32-
WROOM-32 SMD de Espressif. Esta placa permite controlar todo tipo de sensores, módulos y
actuadores mediante WIFI y BLUETOOTH, para proyectos de Internet de las cosas “IoT” de
forma eficiente y económica, cuenta con salidas digitales y 16 de éstas son con modulación de
ancho de pulso (PWM), por lo cual lo hace muy versátil para muchas aplicaciones.
Modulación de ancho de pulso
Modulación por Ancho de Pulsos traducido de las siglas en ingles PWM, (Pulse Width
Modulation), sirve para variar la energía recibida por un dispositivo electrónico variando
rápidamente la energía que este recibe, cambiando entre apagado y encendido. Una variación
en el PWM produce un cambio en el ciclo de trabajo (Duty Cycle).
El Duty Cycle es el tiempo que la señal está activa frente al tiempo que la señal está apagada.
Con un Duty Cycle del 50% la señal estará activa la mitad del tiempo, mientras que la otra
mitad del tiempo estará apagada. Si el Duty Cycle es del 100%, la señal estará activa durante
todo el tiempo, tal como se muestra en la figura 1. Un ejemplo de su funcionamiento se puede
encontrar en los LEDs de alto brillo, al modificar el ciclo de trabajo se cambiará el brillo que
emite
Figura 1
La introducción o marco teórico detallado queda como investigación del alumno,
considerando temas del trabajo previo y del desarrollo de la práctica.
TRABAJO PREVIO.
1- Busque información sobre modulación de ancho de pulso PWM.
La modulación de ancho de pulso (PWM) es un método para generar una
señal analógica utilizando una fuente digital. Una señal PWM consta de dos
componentes principales que definen su comportamiento: un ciclo de
trabajo y una frecuencia. El ciclo de trabajo (dutycyle) describe la cantidad
de tiempo que la señal está en un estado alto (encendido) como un
porcentaje del tiempo total que se tarda en completar un ciclo, la variación
de ancho de pulso consiste en variar los tiempos de encendido y apagado,
es decir Ton y Toff. Al cambiar el valor de un PWM, en realidad se están
modificando estos tiempos.
2- Investigue como se configuran las salidas PWM en el ESP32.
Cuando oigo señal digital me vienen siempre a la mente los pines digitales de un Arduino o
una placa basada en ESP32. Y es que precisamente, las señales que generamos con estos pines
son digitales.
Es más, podemos afirmar que son digitales y binarias, ya que solo pueden tener dos estados:
ALTO o HIGH: 5V o 3.3V, depende de la placa que utilices.
BAJO o LOW: 0 voltios.
Pero todas las señales digitales no son así. Recuerda que una señal digital puede tener más de dos
estados posibles.
3- Como funcionan los sensores Touch del ESP32
El ESP32 tiene 10 GPIO táctiles capacitivos. Estos GPIO pueden detectar variaciones en cualquier
cosa que tenga una carga eléctrica, como la piel humana. Así pueden detectar las variaciones
inducidas al tocar los GPIO con el dedo.
Estos pines se pueden integrar fácilmente en almohadillas capacitivas y reemplazar botones
mecánicos. Además, los pines táctiles también se pueden usar como fuente de activación cuando
el ESP32 está en suspensión profunda .
4- Realice un programa para que activar dos salidas con PWM
MATERIAL Y EQUIPO A UTILIZAR:
Cantida Descripción
d
1 ESP32
3 Resistencias de 220 Ω o 330 Ω
3 Leds
1 microswitch
1 Potenciómetro de 10 KΩ
1 pinzas de corte
1 pinzas de punta
1 Protoboard
EQUIPO DE LABORATORIO
1 Fuente
DESARROLLO:
1. Armar el circuito de la figura 2.1, los cables que van en los sensores touch deben estar
descubiertos (sin plástico), modifique las conexiones si tiene un ESP32 de 30 terminales
(pines)
Figura 2.1 Circuito para activar salidas PWM
2. Cargue el programa que se muestra en la tabla 2.1
Tabla 2.1 programa para activar salida con PWM
// Variable para salida
const int ledPin = 5; // pin 29 corresponde a GPIO5
// variables del PWM
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;
//configuración
void setup(){
// configura salida con PWM
ledcSetup(ledChannel, freq, resolution);
// configura pin para ser controlado con PWM
ledcAttachPin(ledPin, ledChannel);
}
//Programa para activar salida con PWM
//programa principal con ciclo infinito
void loop(){
// incrementa el brillo en el LED
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
// disminuye el brillo en el LED
for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
}
3.- Compruebe el funcionamiento del circuito de la figura 2.1. (Obtenga evidencias)
Instalar la librería ESP32 Analogwrite, seleccione en ejemplos el programa LED FADE
4. Compruebe el programa que realizó para activar dos salidas con PWM, obtengaevidencias
5. – Cargue el programa de la tabla 2.2
Tabla 2.2 Programa para verificar las entradas touch
//Configuración
void setup() {
[Link](115200);
delay(1000); //
[Link]("Prueba de sensor Tuch del ESP32");
}
void loop() {
[Link](touchRead(2)); // get value of Touch 2 pin = GPIO 4
delay(1000);
}
6. Abra el monitor serial del Arduino y verifique que al presionar el cable conectado alsensor
touch, el valor de la variable disminuye (obtenga evidencias)
7. Cargue el programa de la tabla 2.3
Tabla 2.3 Programa para activar un led utilizando una entrada touch
// set pin numbers
const int touchPin = 4;
const int ledPin = 16;
// change with your threshold value
const int threshold = 35;
// variable for storing the touch pin value
int touchValue;
void setup(){
[Link](115200);
delay(1000); // give me time to bring up serial monitor
// initialize the LED pin as an output:
pinMode (ledPin, OUTPUT);
}
void loop(){
// read the state of the pushbutton value:
touchValue = touchRead(touchPin);
[Link](touchValue);
// check if the touchValue is below the threshold
// if it is, set ledPin to HIGH
if(touchValue < threshold){
// turn LED on
digitalWrite(ledPin, HIGH);
[Link](" - LED on");
}
else{
// turn LED off
digitalWrite(ledPin, LOW);
[Link](" - LED off");
}
delay(500);
}
8. Compruebe que al presionar el sensor touch, se activa el LED y el mensaje que sedespliega
en el monitor serial, obtenga evidencias.
9.- modifique el programa para que se prenda un led al activar el touch 0 y el led 2 al activar el
touch 4, obtenga evidencias.
10. Cargue el programa que se muestra en la tabla 2.4 Tabla 2.4
// constants won't change. They're used here to set pin numbers: const
int buttonPin = 4; // the number of the pushbutton pin const int ledPin
= 17; // the number of the LED pin
// variables will change: int buttonState = 0; // variable for reading
the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
11. compruebe el funcionamiento al presionar el interruptor, obtenga
evidencias.
12. Desarrollo
12.1Primer programa para iniciar con la prueba de touch.
Ilustración 1 Programa realizado para la activación de dos leds, de los cuales aumentaran y disminuirán su
intensidad de brillo.
Ilustración 2 muestra el encendido de dos leds los cuales aumentan parcialmente su brillo.
Ilustración 3 Leds encendidos a su mayor capacidad de brillo.
Ilustración 4 Leds encendidos a una capacidad mínima de brillo.
12.1 Segundo programa para iniciar con la prueba de touch.
Ilustración 5 Programa encargado de mandar señales touch del ESP32 con el cual se activarán dos leds un vez que se
presionen las dos entradas touch al mismo tiempo o en su defecto encender solo uno con su respectiva entrada.
Ilustración 6 Muestra el encendido de dos leds cuando se presionan ambas entradas touch.
Ilustración 7 Se observa cómo se enciende un led cuando presionamos su entrada touch correspondiente.
Ilustración 8 Muestra cómo se enciende un solo led, dado que se presiona solo una enyrada touch.
12.3 Tercer programa para un interruptor
Ilustración 9 Programa encargado de mandar el comando a un interruptor que nos permita encender y apagar dos
leds al mismo tiempo.
Ilustración 10 Se muestra el circuito encargado del encendido de dos leds por medio de un interruptor.
Ilustración 11 Muestra como los leds se encienden cuando el interruptor es activado.
COMENTARIOS (por cada integrante del equipo):
Monroy Cesar
En la practica pudimos recordar algunos términos esenciales en lo electrónico, en su caso las
señales PWM son necesarias para que podamos controlar distintas cosas en nuestra vida
cotidiana, volviendo así más cómoda nuestra vida y en su defecto también nos permite analizar
diferentes procesos o acciones que puedan controlarse de acuerdo con nuestras necesidades.
El uso del ESP32 es algo muy interesante e importante dentro de nuestra vida como ingenieros
porque nos permite entrar en el mundo de la automatización en algo incluso pequeño.
Torres Sandra
Al realizar la practica podemos identificar los diferentes procesos que se pueden realizar con el
ESP32 y es realmente interesante como podemos automatizar cosas pequeñas, además es
interesante introducirnos en esta gama porque actualmente todo es manejado a control remoto o
por wifi y es importante que nosotros como ingenieros seamos capaces de adaptar cualquier cosa
para facilitar su uso.
REFERENCIAS3