Pra´ctica 2: Perif´ericos ADC para Adquisici´on de Datos
Sistemas Embebidos – Ingenier´ıa en Mecatro´nica
Universidad ECOTEC – Facultad de Ciencias de la Ingenier´ıa
2025
1. Objetivo General
Aplicar los principios de conversio´n analo´gica-digital en sistemas embebidos
utilizando los perif´ericos ADC del microcontrolador ESP32, orientado a la lectura de
sen˜ales continuas para la adquisicio´n de datos, monitoreo y posterior control de
procesos mecatro´nicos.
2. Objetivos Espec´ıficos
Comprender el principio f´ısico-matem´atico detra´s del funcionamiento de un
convertidor analo´gico-digital (ADC).
Analizar las limitaciones y par´ametros t´ecnicos de los perif´ericos ADC internos de
los microcontroladores ESP32 y Arduino Mega.
Implementar una rutina de adquisicio´n anal´ogica para lectura en tiempo real de
varia- bles de entrada mediante potencio´metros o sensores de voltaje variable.
Estimar la resolucio´n efectiva, voltaje de entrada y niveles cuantificables en funci´on
del modelo del ADC y su configuracio´n.
3. Introduccio´n
En la ingenier´ıa mecatro´nica, los sistemas embebidos juegan un papel esencial como in-
terfaz entre sensores, actuadores y controladores l´ogicos. Sin embargo, la mayor´ıa de las
magnitudes f´ısicas —como presi´on, velocidad angular, temperatura, posici´on lineal, caudal
— no se expresan naturalmente como datos digitales. Para hacerlas procesables por un micro-
controlador, deben primero ser medidas y posteriormente convertidas de sen˜ales continuas
(analo´gicas) a sen˜ales discretas (digitales).
1
Esta conversi´on se realiza mediante el m´odulo **ADC** (Analog to Digital Converter),
el cual permite muestrear y cuantificar el voltaje de una sen˜ al dentro de un determinado
rango. Su comprensi´on y correcta implementacio´n resulta vital en el disen˜o de
sistemas de adquisicio´n de datos (DAQ), control industrial, rob´otica y monitoreo remoto.
4. Fundamentos del Perif´erico ADC
4.1 Definicio´n y Principio de Operacio´n
Un convertidor analo´gico-digital es un componente electro´nico que recibe una
entrada de voltaje continuo (Vin) y genera como salida un nu´mero binario proporcional a
dicha magnitud, dentro del rango definido por el voltaje de referencia (Vref ) y la resoluci´on
del sistema (n bits).
Este proceso incluye tres etapas:
1. Muestreo: Captura del valor de la sen˜ al en un instante.
2. Retenci´on: Congelamiento del valor para permitir la conversio´n.
3. Cuantificacio´n: Asignaci´on de un valor discreto equivalente en base binaria.
4.2 Resolucio´n del ADC
La resoluci´on indica el nu´mero total de niveles distinguibles por el conversor. Matema
´ti- camente:
N = 2n niveles
Donde:
n = nu´mero de bits
N = cantidad de niveles que puede detectar el ADC
Para un ADC de 12 bits (como el del ESP32):
N = 212 = 4096
Esto significa que el voltaje de entrada se dividir´a en 4096 niveles de cuantificacio´n. Cada
nivel representa un incremento m´ınimo de voltaje, denominado **resolucio´n en voltios**:
Resolucio´n V Vref
=
2n − 1
2
Ejemplo con Vref = 3,3V :
3,3
Resolucio´nV = ≈ 0,000805 V (805 µV )
4095
4.3 Conversio´n del Valor Digital a Voltaje
El voltaje de entrada se calcula a partir del valor digital le´ıdo (ADCval) mediante la
expresio´n:
Vin = ADCval
· ref
V
2n − 1
Ejemplo: Si ADCval = 2700 con resoluci´on de 12 bits:
2700
Vin = · 3,3 ≈ 2,17V
4095
4.4 Comparacio´n entre ADC del ESP32 y Arduino Mega
Par´ametro ESP32 Arduino Mega 2560
Resolucio´n Nominal 12 bits 10 bits
Resolucio´n en Voltios ∼0.805 mV ∼4.88 mV
Voltaje de Entrada 0 – 3.3V 0 – 5.0V
Precisio´n Real Media-alta (requiere calibraci´on) Alta (menor resoluci´on)
Canales ADC 18 (ADC1 + ADC2) 16
Uso de WiFi afecta S´ı (en ADC2) No aplica
Cuadro 1: Comparaci´on t´ecnica entre ADC del ESP32 y Arduino Mega
4.5 Consideraciones Pr´acticas
El m´odulo ADC2 del ESP32 comparte recursos con el WiFi. Se recomienda usar ADC1
para tareas cr´ıticas.
Las lecturas pueden variar por ruido interno o por interferencias. Se puede usar filtrado
software (promedios mo´viles o exponenciales).
Si se requiere mayor precisi´on, se pueden emplear ADCs externos por I2C/SPI como
el ADS1115.
El voltaje de referencia interno del ESP32 no siempre es exacto. Para aplicaciones de
alta precisi´on, se debe usar una fuente de Vref externa estabilizada.
3
5. Pr´actica: Adquisicio´n de Datos desde un Potencio
´me- tro con ESP32
5.1 Descripci´on de la Actividad
En esta secci´on se implementara´ un sistema de adquisici´on de datos utilizando uno
de los pines ADC1 del microcontrolador ESP32. Se conectara´ un potenci´ometro al pin
analo´gico
GPIO34, se realizara la lectura del valor digital correspondiente, se calculara el voltaje de
´ ´
entrada, y se visualizara´ dicha informaci´on en el Monitor Serial del IDE de Arduino.
5.2 Diagrama de Conexio´n
VCC del potencio´metro → 3.3V del
ESP32 GND del potencio´metro → GND
del ESP32
Pin central del potencio´metro → GPIO34 (canal ADC1 CH6)
5.3 C´odigo Fuente para Lectura del ADC
Listing 1: Lectura de ADC y conversi´on a voltaje en ESP32
1 const int potPin = 34; // Pin ADC 1 _CH 6
2 int adcVal = 0;
3
float voltage = 0.0;
4
void setup () {
5
Serial. begin (115200
6 ); delay (1000);
7 Serial. println (" Inicio de a d q u i s i c i n de datos
8 ...");
9
}
10
void loop () {
11
adcVal
voltage= =analogRead
( adcVal * ( 3.3)
potPin
/ );4095.0;
12
Serial. print(" Valor ADC ");
13 : Serial. print( adcVal );
14 Serial. print("\ t ( V):
15 Serial. println ( voltage , ");
Voltaje
16
3);
17
} delay (500);
18
19
4
5.4 An´alisis del Resultado
A medida que el potenci´ometro var´ıa su resistencia interna, el voltaje en el pin analo
´gi- co tambi´en cambia. El ESP32 traduce estos valores a una magnitud digital, la cual
puede usarse para estimar el comportamiento de sensores resistivos, interfaces humanas, o
entradas ana´logas de control.
6. Proyecto Aplicado: Alarmas Visuales con LEDs y Men-
sajes Seriales
6.1 Descripci´on del Proyecto
Este proyecto simula un sistema de monitoreo de una variable an´aloga (ej.
temperatura simulada) a trav´es de un potenci´ometro. Dependiendo del voltaje de
entrada, se encender´an LEDs representando distintos niveles de alerta, y se mostrar´a el
estado actual mediante mensajes en el terminal serial.
6.2 Rango de Alarma y Sen˜alizaci´on
Nivel bajo (0.0V a 1.1V): LED verde encendido – Estado normal
Nivel medio (1.1V a 2.2V): LED amarillo encendido – Precaucio´n
Nivel alto (mayor a 2.2V): LED rojo encendido – Alarma cr´ıtica
6.3 Conexi´on de LEDs
LED verde → GPIO18
LED amarillo → GPIO19
LED rojo → GPIO21
6.4 C´odigo Fuente del Sistema de Alarmas
Listing 2: Sistema de alarmas visuales con potenci´ometro
1 const int potPin = 34;
2 const int led Verde = 18;
3
const int led Amarillo = 19;
const int led Rojo = 21;
4
5
void setup () {
6
5
7 Serial. begin (115200 );
8 pin Mode ( ledVerde , OUTPUT );
9
pin Mode ( led Amarillo , OUTPUT
); pin Mode ( ledRojo , OUTPUT );
10
}
11
12 void loop () {
13 int adcVal = analogRead ( potPin );
14 float voltage = ( adcVal * 3.3) / 4095.0;
15
16
17 if ( voltage < 1.1) {
18 digitalWrite ( ledVerde , HIGH );
19 digitalWrite ( led Amarillo , LOW );
20 digitalWrite ( ledRojo , LOW );
21 Serial. println (" Estado : NORMAL");
22 } else if ( voltage < 2.2) {
23 digitalWrite ( ledVerde , LOW );
24 digitalWrite ( led Amarillo , HIGH );
25 digitalWrite ( ledRojo , LOW );
26 Serial. println (" Estado : P R E C A U C I N ");
27 } else {
28 digitalWrite ( ledVerde , LOW );
29 digitalWrite ( led Amarillo , LOW );
30 digitalWrite ( ledRojo , HIGH );
31 Serial. println (" Estado : ALARMA C R T I C A
");
32 }delay (500);
33 }
34
35
6.5 Observaciones
Este tipo de implementacio´n puede adaptarse f´acilmente a sensores reales,
estableciendo umbrales definidos por ingenier´ıa de procesos o normas de seguridad industrial.
Los mensajes enviados por el puerto serial pueden ser utilizados como entrada a un sistema
SCADA o registrado en un sistema de adquisici´on de datos (DAQ).
7. Preguntas T´ecnicas para An´alisis
Responda las siguientes preguntas con base en los resultados obtenidos, los conceptos
desarrollados en clase y su razonamiento t´ecnico:
6
1. ¿Co´mo se define la resolucio´n de un ADC y co´mo influye en la precisi´on de la
medici´on analo´gica?
7
2. ¿Qu´e implicaciones t´ecnicas y funcionales tiene el uso del m´odulo ADC2 en el
ESP32 cuando est´a activo el WiFi?
3. Si el sistema trabaja con un sensor que entrega una sen˜ al entre 0 y 2V, ¿qu´e
ventajas tendr´ıa ajustar el voltaje de referencia del ADC a 2V en lugar de 3.3V?
4. ¿Cu´al es la diferencia pra´ctica entre la resolucio´n nominal del ADC y la
resolucio´n efectiva?
5. ¿Qu´e t´ecnicas de software se pueden implementar para mejorar la estabilidad de
las lecturas anal´ogicas en sistemas embebidos?
6. ¿Qu´e pasar´ıa si se conectara un sensor de 5V directamente a un pin anal´ogico del
ESP32 sin divisores de voltaje?
7. En un sistema de monitoreo de variables cr´ıticas, ¿por q u´e podr´ıa ser
recomendable utilizar un ADC externo en lugar del integrado en el ESP32?
8. Explique co´mo se podr´ıan adaptar los umbrales de alarma en funcio´n de diferentes
tipos de sensores (temperatura, humedad, presio´n).
8. Conclusiones del Estudiante
A continuacio´n, redacte un texto reflexivo donde resuma lo aprendido en esta pra´cti-
ca. Considere su experiencia en la programaci´on, simulacio´n, conexio´n f´ısica y ana
´lisis de resultados.
Conclusi´on personal:
¿ Q u´e dificultades t´ecnicas tuvo durante la pr´actica?
8
¿ Q u´e aspectos considera m ´a s importantes para su futura aplicacio´n profesional?
9. Bibliograf´ıa
Espressif Systems. (2023). ESP32 Technical Reference Manual. Disponible en: https:
//www.espressif.com/en/support/documents/technical-documents
Axelson, J. (2015). Embedded Systems Programming in C and Arduino. Maker Media.
Gonza´lez, J., Galva´n, M. (2019). Instrumentaci´on Electr´onica Aplicada. Pearson
Edu- cacio´n.
Datasheet Arduino Mega 2560. Arduino.cc. Disponible en: https://www.arduino.cc/
en/Main/ArduinoBoardMega2560
Texas Instruments. (2020). Understanding SAR ADCs: Resolution and Noise. Applica-
tion Note.