L5 4 Ard GLab4-ADC
L5 4 Ard GLab4-ADC
L5 4 Ard GLab4-ADC
2 Fundamento Teórico
2.1. ADC (Conversores Analógico-Digitales). Son dispositivos capaces de traducir señales analógicas (adoptan
cualquier valor y se encuentran en la naturaleza) en señales digitales (solo adoptan valores específicos) las cuales
son empleadas por sistemas de procesamiento y computadoras [1].
2.2. Tipos de ADC. Existen diferentes tipos, entre los cuales se encuentran los ADCs de aproximaciones sucesivas
(SAR), ADCs Sigma-Delta, Flash y Pipeline, cada uno de ellos con ciertas características y aplicaciones
específicas. En el caso de los microcontroladores, lo más común es que cuenten con ADCs Sigma-Delta [1].
2.3. Características del ADC. Los ADCs tiene dos características principales: la frecuencia de muestreo y la
resolución en bits. La primera determina la máxima frecuencia de la señal que puede capturar sin pérdida de
datos, mientras que la segunda define la máxima cantidad de valores diferentes que puede asumir la señal digital
resultante. En el caso, del ADC del Arduino UNO, su microcontrolador cuenta con un ADC de 10 bits de
resolución [2] con una frecuencia de muestro aproximada de10kHz [3].
2.4. Potenciómetro. Es un dispositivo electrónico que tiene la propiedad de variar su resistencia a partir de un
control mecánico externo, usualmente en forma de una perilla. Existen dos tipos principales: lineales y
logartímicos, los cuales están relacionados con la proporción de cambio en la resistencia, respecto al cambio en el
giro de la perilla de control. Tiene tres terminales, de las cuales los extremos definen el valor máximo mientras
que la terminal del centro corresponde a la terminal variable [4].
3 Equipos y materiales
• Tarjetas de desarrollo
o Tarjeta Arduino UNO (Ver Figura1 (a))
o Tarjeta de expansión (diseñada para el curso, ver Figura 1(b))
• Componentes electrónicos
o Potenciómetro (incluido en la tarjeta de expansión)
1
(a) Tarjeta Arduino (b) Tarjeta de expansión
Figura 2. Diagrama de conexiones, experiencia variación de tensión con potenciómetro
Fuente: Elaboración propia Figura 1. Tarjetas de desarrollo
Fuente: (a) Arduino UNO Rev 3 (https://store.arduino.cc/usa/arduino-uno-rev3),
(b) Adaptado de Domótica e IoT (R. Acosta y R. Yauri, 2018)
Para las conexiónes entre los componentes electrónicos y las tarjetas Arduino y de expansión, se puede verificar en Tabla1.
4 Experiencias
En este laboratorio se realizará dos experiencias:
2
A través de esta experiencia se aprenderá a leer la información de las variaciones de tensión ocasionadas por la variación de
posición de un potenciómetro dentro de un circuito eléctrico, gracias al ADC incorporado en el Arduino.
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin);
float voltageValue = sensorValue * (5.0 / 1023.0); // convierte a tension
Serial.print("ADC value: ");
Serial.print(sensorValue);
Serial.print("\t Voltage value: ");
Serial.println(voltageValue);
delay(10);
}
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin);
float voltageValue = sensorValue * (5.0 / 1023.0); // convierte a tension
Serial.print("5.0");
Serial.print(",");
Serial.print(sensorValue);
Serial.print(",");
Serial.println("0.0");
delay(10);
}
4.1.3. Procedimiento
1. Abrir el código de ejemplo en Archivo>Proyecto>GLab4-ADC>4-1_ADCPotenciometro
2. Seleccionar la tarjeta en Herramientas>Placa>Arduino/Genuino UNO.
3
Figura 3. Diagrama de conexiones, experiencia control LED con potenciómetro
Fuente: Elaboración propia
4
Código 3. Programa para variar los tiempos de activación del LED de acuerdo a valor de potenciómetro
/*
* Ejemplo para controlar tiempos con entrada analogica
* Basado en AnalogInput, extraido de https://www.arduino.cc/en/Tutorial/AnalogInput
*/
const int sensorPin = A0; // selecciona el pin del potenciometro
const int ledPin = A3; // selecciona el pin del LED
int sensorValue = 0; // variable que almacena el valor del potenciometro
void setup() {
// declara el pin del LED como salida (OUTPUT):
pinMode(ledPin, OUTPUT);
}
void loop() {
// lee los mensajes del sensor:
sensorValue = analogRead(sensorPin);
// enciende el LED
digitalWrite(ledPin, HIGH);
// detiene el programa por <sensorvalue> milisegundos:
delay(sensorValue);
// apaga el LED:
digitalWrite(ledPin, LOW);
// detiene el programa por <sensorValue> milisegundos:
delay(sensorValue);
}
void setup() {
// Inicializa la comunicacion serial
Serial.begin(9600);
}
void loop() {
// lee el valor analogico:
sensorValue = analogRead(sensorPin);
// mapea el valor a la salida analogica:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// cambia el valor de salida:
analogWrite(analogOutPin, outputValue);
4.2.3. Procedimiento
1. Abrir el código de ejemplo en Archivo>Proyecto>GLab4-ADC>4-3_ADCControlTiempos
2. Seleccionar la tarjeta en Herramientas>Placa>Arduino/Genuino UNO.
3. Seleccionar el puerto en Herramientas>Puerto>COMx Arduino/Genuino UNO, donde “x” es el número del
puerto reconocido por Windows.
5
4. Subir el programa haciendo clic en (Subir).
5. Observar el comportamiento del LED cuando se mueve la perilla del potenciómetro.
6. Abrir el código de ejemplo en Archivo>Proyecto>GLab4-ADC>4-2_ADCControlIntensidad
7. Seleccionar la tarjeta en Herramientas>Placa>Arduino/Genuino UNO.
8. Seleccionar el puerto en Herramientas>Puerto>COMx Arduino/Genuino UNO, donde “x” es el número del
puerto reconocido por Windows.
9. Subir el programa haciendo clic en (Subir).
10. Abrir el monitor serial desde Herramientas>Monitor Serie.
11. Observar el comportamiento del LED cuando se mueve la perilla del potenciómetro.
5 Ejercicios propuestos
5.1. Empleando la configuración de la Experiencia 2, empleando el programa 4-4_ADCControlIntensidad y
tomando como referencia el programa 4-2_ADCPotenciometroPlot graficar los valores asignados al LED.
5.2. Empleando la configuración de la Experiencia 2, empleando el programa 4-4_ADCControlIntensidad, variar la
intensidad de los colores rojo y azul, en forma opuesta que el color verde. Es decir, que mientras el rojo y el azul
aumentan su intensidad, el verde disminuye y viceversa.
5.3. Para el ejercicio anterior, agregar una gráfica de variación de los valores asignados a las componentes rojo, verde y
azul, del LED RGB.
Referencias
[1] W. Kester, D. Sheingold y J. Bryant, «Fundamentals of Sampled Data Systems,» de The Data Conversion HandBook,
Oxford. UK, Newnes, Elsevier, 2005, pp. 57-58.
[2] Arduino, «Analog Input Pins,» [En línea]. Available: https://www.arduino.cc/en/Tutorial/AnalogInputPins. [Último
acceso: 09 2019].
[3] Arduino, «analogRead(),» [En línea]. Available: https://www.arduino.cc/reference/en/language/functions/analog-
io/analogread/. [Último acceso: 09 2019].
[4] Andrew Singmin, «Potentiometers,» de Beginning Digital Electronics through Projects, United States of America,
Newnes, 2001, pp. 11-12.