You are on page 1of 22

CARRERA DE INGENIERIA ELECTRICA.

Prcticas de Laboratorio de Electrnica III. Practica No. 13

INSTTITUTO POLITECNICO NACIONAL


Escuela Superior de Ingeniera Mecnica y Elctrica

INGENIERIA ELECTRICA

LABORATORIO DE ELECTRONICA III.

PRACTICA No. 13 6EV2_(JUNIO 2017)

Convertidor Analgico-Digital.

Nmero de Equipo: _____

Grupo: ________

INTEGRANTES

Nombre de los Alumnos: No. de Boleta:


1). ___________ ___________ ______________ ____________
2). ___________ ___________ ______________ ____________

Nombre de los Profesores:


Prof. Titular: ___________ ___________ _____________
Prof. Adjunto: ___________ ___________ _____________
Prof. Adjunto: ___________ ___________ _____________

Fecha de realizacin: ___________

Calificacin: ___________

JLDM Pgina 1 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

PRCTICA No 12: Convertidor Analgico-Digital.

OBJETIVOS:

a) Manejo del software de programacin CodeWarrior, en su versin 6.1, para configuracin del
microcontrolador HC08 en la utilidad del ADC.
b) Configuracin de los registros del ADC en el microcontrolador HC08.
c) Manejo de la herramienta de desarrollo DEMOJM, en la configuracin de sus puertos ADC.

Introduccin terica

Entradas y salidas analgicas


Una seal elctrica analgica es aquella en la que los valores de la tensin o voltaje varan constantemente
y pueden tomar cualquier valor. En el caso de la corriente alterna, la seal analgica incrementa su valor
con signo positivo (+) durante medio ciclo y disminuye en el medio ciclo siguiente.

Un sistema de control (como un microcontrolador) no tiene capacidad alguna para trabajar con seales
analgicas, de modo que necesita convertirlas en seales digitales para poder trabajar con ellas.

La seal digital obtenida de una analgica tiene dos propiedades fundamentales:

Valores. Que valor en voltios define 0 y 1. En nuestro caso es tecnologa TTL (0 5V)
Resolucin analgica: n de bits que usamos para representar con una notacin digital una seal
analgica:

En el caso de un arduino Uno, el valor de 0 voltios analgico es expresado en digital como B0000000000
(0) y el valor de 5V analgico es expresado en digital como B1111111111 (1023).

Por lo tanto todo valor analgico intermedio es expresado con un valor entre 0 y 1023, es decir, sumo 1
en binario cada 4,883 mV.

Arduino Uno tiene una resolucin de 10 bits, es decir, unos valores entre 0 y 1023.

Arduino Due tiene una resolucin de 12 bits, es decir, unos valores entre 0 y 4095.

Diferencia entre seales analgicas y digitales:

JLDM Pgina 2 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

PWM

Como hemos dicho Arduino Uno tiene entradas analgicas que gracias a los conversores analgico digital
puede entender ese valor el microcontrolador, pero no tiene salidas analgicas puras y para solucionar
esto, usa la tcnica de PWM.

Las Salidas PWM (Pulse Width Modulation) permiten generar salidas analgicas desde pines digitales.
Arduino Uno no posee salidas analgicas puras.

El arduino due, posee dos salidas analgicas puras mediante dos conversores digital a analgico. Estos
pines pueden usarse para crear salidas de audio usando la librera correspondiente.

La modulacin por ancho de pulsos (tambin conocida como PWM, siglas en ingls de pulse-width
modulation) de una seal o fuente de energa es una tcnica en la que se modifica el ciclo de trabajo de
una seal peridica (una senoidal o una cuadrada, por ejemplo), ya sea para transmitir informacin a travs
de un canal de comunicaciones o para controlar la cantidad de energa que se enva a una carga.

El ciclo de trabajo de una seal peridica es el ancho relativo de su parte positiva en relacin con el perodo.
duty cycle = (tiempo que la salida est a uno o HIGH)/ (periodo de la funcin)

JLDM Pgina 3 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

En este ejemplo se ve como simular con PWM una onda sinusoidal analgica.

En Arduino la frecuencia de PWM es de 500Hz.

En la actualidad existen muchos circuitos integrados en los que se implementa la modulacin PWM, por
ejemplo para lograr circuitos funcionales que puedan controlar fuentes conmutadas, controles de motores,
controles de elementos termoelctricos, choppers para sensores en ambientes ruidosos y algunas otras
aplicaciones.

JLDM Pgina 4 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

Conversor analgico digital (ADC)

Un microcontrolador solo entiende seales digitales (1s y 0s), por lo tanto para poder leer seales
analgicas necesitamos los convertidores Analgico a Digital (ADC).

Como funciona un conversor analgico a digital:

JLDM Pgina 5 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13
Conversor digital analgico (DAC)

Al contrario que las seales analgicas, las seales digitales se pueden almacenar y transmitir sin
degradacin. Los DAC se usan para los altavoces, amplificadores para producir sonido. Ejemplo de la
transmisin de la voz por la lneas telefnicas.

En arduino los pines analgicos se definen y tienen las propiedades siguientes:

En arduino para tratar las entradas y salidas digitales usamos las siguientes funciones:

analogReference().
analogRead().
analogWrite().

Otras funciones interesantes con entradas/salidas analgicas:

map(value, fromLow, fromHigh, toLow, toHigh).


constrain(x, a, b).

Las entradas digitales y analgicas (especialmente estas) son un recurso escaso en los
microcontroladores, para poder multiplicar esas entradas/salidas, podemos hacer uso de los multiplexores.

Los multiplexores son circuitos combinacionales con varias entradas y una nica salida de datos, estn
dotados de entradas de control capaces de seleccionar una, y slo una, de las entradas de datos para
permitir su transmisin desde la entrada seleccionada hacia dicha salida.

Esta es una tcnica muy utilizada para multiplicar las seales, con arduino podemos usar varios shield
para multiplexar las seales.

Muxshield:

Para ver las funciones de la librera de este shield para Arduino se pueden ver en la pgina
5: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/Mux_Shield_II_User_Guide.pdf

JLDM Pgina 6 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13
Permite hasta 48 pines de Arduino. Usa el TI 74HC4067 para la funcionalidad de multiplexacin de 16
canales y TI 74HC595 para los registros de cambio (registro de desplazamiento de tres estados). Tiene
mltiples modos: entrada y salida digital y entrada analgica

DIAGRAMA EN BLOQUES, EXPLICACIN DEL FUNCIONAMIENTO Y REGISTROS


ASOCIADOS

Breve repaso de lo que es la conversin anloga a digital. Antes de comenzar a manipular el mdulo
ADC de la mquina MCF51JM128, se har un pequeo repaso sobre los conceptos relacionados con la
conversin anloga a digital de una seal.

Las mquinas, como los microcontroladores, tratan de medir y/o convertir las variables anlogas a datos
binarios, pero el proceso de convertir introduce una inevitable prdida de informacin. Esta prdida es
inherente al proceso de discretizar las seales anlogas y continuas, que finalmente sern llevadas a
cantidades binarias.

La Figura 12.1 representa una seal anloga continua entre los puntos t0 y t1, que desde el punto de
vista de la magnitud ser sometida a un nmero discreto de valores binarios y que la cantidad de valores
se conoce con el nombre de Resolucin del sistema.

Figura 12.1. Eje de la resolucin en la conversin A/D.

La Resolucin de un convertidor anlogo a digital es la cantidad de valores discretos, en los cuales se


interpreta la seal a digitalizar. Por ejemplo, para un procesador con un conversor A/D que tiene una
resolucin de 12 bits el nmero de valores discretos en los cuales se puede valorar a una seal, sera de
212 = 4096. El valor ideal para esos valores sera un nmero infinito, pero tecnolgicamente es
imposible.

Esos valores deben estar comprendidos dentro de dos lmites, que forman la ventana de conversin o
valores de referencia (Vmin, Vmax). Para la Figura 12.1, el punto P tiene una interpretacin en el
mundo de lo discreto y es de Vx.

Se recomienda que el alumno aproveche al mximo la resolucin del sistema, adecuando la seal
anloga para que excursione de la manera ms completa en la ventana de conversin. Por ejemplo, una

JLDM Pgina 7 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

seal con un valor mximo de 100mV deber ser amplificada por un factor de 30, para una ventana de
conversin de 3V y de sta manera aprovechar la resolucin del sistema.

Para calcular el paso mnimo de conversin y por otro lado conocer el intervalo de prdida de
informacin, supngase que se tiene una seal sometida a un convertidor de 12 bits de resolucin, un
Vmin = 0V y un Vmax = 5V. El paso mnimo de conversin est dado por:

Paso mnimo = (Vmax - Vmin) / Resolucin


Paso mnimo = (5V 0V) / 212
Paso mnimo = 1.22mV

El clculo anterior indica que la diferencia en magnitud entre el resultado de una conversin y la
inmediatamente superior (o inferior) es de 1.22mV. Todo valor que no sea mltiplo entero de un paso
mnimo, se deber aproximar al valor ms cercano y es all donde un convertidor A/D ignora
informacin del mundo anlogo.

El Muestreo (sample) es otra caracterstica importante de un convertidor A/D y se refiere a la cantidad


de muestras en la unidad de tiempo que se pueden procesar y convertir a cantidades discretas.

La Figura 12.2 presenta una seal anloga continua entre los puntos t0 y t1, que desde el punto de vista
del muestreo es sometida a un nmero finito de muestras y que cada muestra es tomada a un intervalo
constante T, llamado perodo de muestreo.

Figura 12.2. Eje del muestreo en la conversin A/D.

Al igual que en la resolucin el muestreo introduce prdida de informacin, debido a los valores que
no son muestreados entre dos intervalos de muestreo contiguos.

Idealmente la razon de muestreo debera ser infinita, pero existen restricciones tecnolgicas. Entonces,
mientras menor sea la separacin entre los Si (T pequeo), mostrados en la Figura 12.6, ms fiel ser
la seal digitalizada con respecto a la seal anloga original.

A continuacin se describen otros errores inherentes a la conversin anloga a digital.

Error de muestreo (Sampling Error): Este tipo de error est asociado al modelo de entrada del
convertidor A/D y tiene que ver con la impedancia y capacitancia caractersticas de entrada

JLDM Pgina 8 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

versus la impedancia caracterstica de la seal a convertir. La Figura 12.3 muestra un modelo


tpico de impedancia de entrada de un convertidor A/D.

Figura 12.3. Modelo simplificado de entrada de un A/D.

Por ejemplo: Para el convertidor A/D del microcontrolador MCF51JM128, cuya impedancia tpica es
de RADIN = 7K y CADIN = 5.5pF, en donde muestras cercanas a LSB (significa que para una
resolucin de 12 bits este error tendr un peso de 0.024%, Less Significant bit) con una resolucin de
12 bits, pueden ser realizadas con la mayor velocidad de conversin de 3.5 ciclos de un reloj de 8MHz.
Lo anterior es posible siempre y cuando la impedancia caracterstica (Zs) de la seal aplicada al pin
A/D, permanezca cercana a un valor de 2K que sera el equivalente a la impedancia caracterstica del
A/D (ZAD).

Para impedancias ms altas de la fuente a digitalizar, se recomienda disminuir la velocidad de


conversin (incremento en el tiempo de muestreo).

NOTA: El alumno deber siempre conocer las limitaciones de velocidad del convertidor y aplicar el teorema de
Nyquist-Shannon a la hora de digitalizar.

Error por goteo del pin (Pin Leakage Error): Es posible que se presente una corriente de goteo debida
a una alta resistencia de la fuente anloga a digitalizar. El alumno deber garantizar que Rs siempre
est por debajo de:

VDDAD / (2N x ILEAK)

En donde:
VDDAD: Voltaje de alimentacin del A/D
N: Resolucin de la conversin A/D
ILEAK: Corriente de goteo (dato del manual)

Esta condicin garantiza que el error por goteo estar por debajo de LSB.

Error por ruido inducido (Noise Induced Error): El ruido en una conversin anloga a digital ocurre
durante el muestreo (sample) o el proceso de conversin. El ruido inducido es inevitable, pero puede
ser minimizado y para esto se recomiendan las siguientes acciones:

JLDM Pgina 9 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

Ubicar un condensador de 0.1uF, con baja ESR (resistencia serie equivalente) entre VREFH y
VREFL.
Ubicar un condensador de 0.1uF, con baja ESR entre VDDAD y VSSAD.
Si la fuente VDD usa un aislamiento inductivo, es necesario ubicar un condensador adicional de
1uF entre VDDAD y VSSAD.
Si VREFL se encuentra al nivel de VSS, es necesario garantizar una buena unin elctrica.
No hacer conmutaciones de pines I/O durante una conversin.

Existen situaciones en donde el ruido radiado o conducido (EMI) es intenso, para esto se hacen las
siguientes recomendaciones:
Ubicar un condensador de 0.01uF, con baja ESR a la entrada del canal de conversin, pero se
debe tener en cuenta que esto altera la velocidad de muestreo.
Hacer algoritmos que promedien las muestras, para suavizar los cambios ruidosos.
Utilizar un reloj asncrono como fuente del ADC y promediar las muestras.

Error de cuantizacin (Quantization Error): Para una resolucin de 12 bits, un paso de conversin
(code) corresponde a una 1/4096 parte en la ventana de conversin. Este paso es el delta entre un cdigo
y el vecino inmediato, entonces la relacin que define este paso sera:

1 LSb = (VREFH VREFL) / 2N

En esta relacin se encuentra un error inherente de cuantizacin, debido al resultado de la digitalizacin.


Por ejemplo para un ADC con un error de LSB en una resolucin de 10 bits y con una ventana de
conversin de 5V, el error asociado a un paso de conversin sera de:

1 LSB = 5V/1024
1 LSB = 4.88mV

De donde:
Error de cuantizacin = 2.44mV

Error de escala cero (Zero Scale Error =Offset Error): Est definido como la diferencia entre el
ancho del paso actual de conversin y el paso de conversin terico, esto para el primer paso de
conversin. La Figura 12.4 ilustra el fenmeno de error de escala cero.

Figura 12.4. Error por escala de cero.

JLDM Pgina 10 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

La muestra tomada en el punto P debera arrojar un valor de cuantizacin de 0x000, para la muestra
tomada en S0 (valor terico). Como se puede apreciar el resultado real fue de 0x001, es decir un error
de cero (e) de 1LSB.

Error de escala plena (Full Scale Error): Est definido como la diferencia entre el ancho del paso
actual de conversin y el paso de conversin terico, esto para el ltimo paso de conversin. La
Figura 12.5 ilustra el fenmeno de error de escala plena.

Figura 12.5. Error por escala plena.

La muestra tomada en el punto P debera arrojar un valor de cuantizacin de 0xFFF, para la muestra
tomada en S (valor terico). Como se puede apreciar el resultado real fue de 0xFFE, es decir un error
de escala plena (e) de 1LSb.

Error diferencial no lineal (Diferential non Linearity Error): Est definido como la peor diferencia
entre el valor terico y el valor actual, de un paso de conversin. Esto aplica para toda conversin en
todo el rango de la escala de conversin.

Error integral no lineal (Integral non Linearity Error): Est definido como el ms alto valor (valor
absoluto) de la suma de los errores diferenciales acumulados.

Error por parpadeo en la conversin (Code Jitter Error): Se presenta cuando en ciertos puntos, un
voltaje de entrada determinado es convertido de uno a dos valores, durante un muestreo repetitivo.

Idealmente, cuando un voltaje de entrada es infinitesimalmente pequeo respecto de un voltaje de


transicin (paso mnimo de conversin), el convertidor arrojar el cdigo ms pequeo.

Es usual que pequeas cantidades de ruido en el sistema, puedan causar que el convertidor se
indetermine (valor equivocado entre dos cdigos consecutivos). El error tpico de jitter es de LSb.

Para minimizar el error por jitter se recomienda hacer un promedio de las medidas.

Error por no monotonicidad (Non Monotonicity Error): Se presenta cuando el convertidor arroja un
cdigo bajo ante un voltaje alto de entrada.

Material y equipo utilizado

JLDM Pgina 11 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

1 Computadora
1 Software Arduino IDE.
1 Tarjeta Arduino
1 LM35

DESARRROLLO DE LA PRCTICA.

13.1 Manejo y funcionamiento del temporizador de propsito general.

El primer ejercicio que se llevara a cabo es leer una seal analgica conectada a la A3 y el valor
obtenido se ver en la ventana del Monitor Serie.

/*
* Practica 13a_ADC Fecha:
* Grupo: 6EV Equipo:
* Integrantes: JLDM
* Objetivo: Convertidor Analgico Digital con Monitor serie
*/

int AnalogTerm = 3; // Salida en la terminal 9 con un LED


int val = 0; // Variable auxiliar

void setup() {
Serial..begin(9600); // Configura la terminal Monitor Serie
}

void loop() {
val=analogRead(AnalogTerm);
Serial.println(val);
}

Para llevar a cabo la adquicin de datos, para su despus conversin de la seal analgica a digital
debemos conocer el tiempo de muestreo, esto lo hacen os de la siguiente forma.

/*
* Practica 13b_ADC Fecha:
* Grupo: 6EV Equipo:
* Integrantes: JLDM
* Objetivo: Conocer el tiempo de muestreo de la Placa Arduino
*/

void setup(){
Serial.begin(9600);
muestreo();
}

void loop(){
}

void muestreo(){
unsigned long time1=0;
unsigned long time=0;
Serial.println("*************************");
Serial.println("ENSAYO TIEMPO DE MUESTRO:");
Serial.println("*************************");
for(byte i =0; i<4; i++){
time1=micros();

JLDM Pgina 12 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

int A=analogRead(A0);
time=micros()-time1;
Serial.print(" Muestra: ");
Serial.print(i+1);
Serial.print(" Tiempo: ");
Serial.println(time);
}

Se mostrar en la ventana de Monitor Serial como sigue.

Excepto en la primera medida, las dems tiene un tiempo de muestreo de 112 micro segundos, lo que
equivale a una frecuencia de muestreo de 8.928 kHz, podemos tomar por valido ya que estoy
utilizando una placa Arduino UNO. A dems debemos tener en cuenta una pequea perdida de
tiempo que tenemos al guardar y calcular las variables time1 y time.

Otro factor a tener en cuenta del ADC es su resolucin, para ello hablamos de los bits
de resolucin que tiene, los bits no permiten hacer combinaciones, cuantos mas tengamos mayor
numero de combinaciones podremos hacer, cada una de estas combinaciones muestra una medida
del sistema analgico, la cantidad de medidas que tenemos sern 2 elevado al numero de bits de
resolucin. Puesto que Arduino UNO, en mi caso, tiene un ADC de 10 bits de resolucin tendr 1024
combinaciones. La placa Arduino DUE por ejemplo cuenta con un ADC de 12 bits
(4096 combinaciones).

Pero hay un segundo factor que interviene en la resolucin, es el rango de medida, El rango de
Voltae de las placas Arduino por defecto es de 5v o 3.3v. Con esto sabemos que en voltios tenemos
una resolucin igual a;

5
= = 4.88
1024

JLDM Pgina 13 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13
A continuacin, haremos un ejemplo con Arduino de la resolucin midiendo el voltaje en un
potencimetro, iremos girando la manecilla del potencimetro y veremos que conversin da el ADC y
a que corresponde en voltaje. Comprobaremos adems que el paso calculado antes de 4.88mV es
correcto.

El cdigo que utilizaremos es el siguiente:

/*
* Practica 13b_ADC Fecha:
* Grupo: 6EV Equipo:
* Integrantes: JLDM
* Objetivo: Conocer el tiempo de muestreo de la Placa Arduino
*/

int contador;

void setup(){
contador=1;
Serial.begin(9600);
Serial.println("*****************");
Serial.println("ENSAYO RESOLUCION");
Serial.println("*****************");
}

void loop(){
muestreo();
contador++;
}

void muestreo(){
int A=analogRead(A0);
float B= float(A)*5/1023;
Serial.print(" Muestra: ");
Serial.print(contador);
Serial.print(" Medida Digital: ");
Serial.print(A);
Serial.print(" Medida Analogica: ");
Serial.println(B, 5);
delay(1000);
}

JLDM Pgina 14 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

Se veren la ventana del Monitor Serial, de la siguiente forma:

[1.28543 1.28055]
= = 4.88
[263 262]

En ocasiones, utilizaremos sensores cuyo rango de voltaje no ser igual a [0, 5v]. En primer lugar,
tenemos que tener en cuenta, que no debemos introducir en la placa Arduino voltajes mayores de 5v
o 3.3v, partiendo de esto podemos cambiar el lmite superior del rango de voltaje. De
manera interna o externa:

La manera interna de cambiarlo, es utilizando sowftware nicamente, para ello utilizaremos la


funcin analogReference(). Esta funcin nos permitir cambiar el lmite superior del rango de voltaje,
en la placa Arduino UNO por ejemplo, si introducimos como parmetro INTERNAL el lmite de voltaje
superior ser de 1.1v. En la placa Arduino mega podemos introducir como
parmetro INTERNAL1V1 y INTERNAL2V56 siendo el nuevo lmite 1.1v y 2.56v respectivamente.

A continuacin haremos un nuevo ejemplo anlogo al anterior, con una placa Arduino utilizando la
funcin interna analogReference para que su voltaje de referencia sea 1.1v. Para alimentar el
potencimetro requeriremos una fuente de 1.1v, para crearla utilizaremos un divisor de tensin y un
seguido nivel de tensin:

JLDM Pgina 15 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

Una vez montado cargamos el siguiente programa, para verificar que funciona
correctamente:

/*
* Practica 13d_ADC Fecha:
* Grupo: 6EV Equipo:
* Integrantes: JLDM
* Objetivo: Conocer el tiempo de muestreo de la Placa Arduino
*/

int contador;

void setup(){
analogReference(INTERNAL);
contador=1;
Serial.begin(9600);
Serial.println("******************");
Serial.println("ENSAYO RESOLUCION");
Serial.println("REFERENCIA INTERNA");
Serial.println("******************");
}

void loop(){
muestreo();
contador++;
}

void muestreo(){
int A=analogRead(A0);
float B= float(A)*1.1/1023;
Serial.print(" Muestra: ");
Serial.print(contador);
Serial.print(" Medida Digital: ");
Serial.print(A);
Serial.print(" Medida Analogica: ");

JLDM Pgina 16 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

Serial.println(B, 5);
delay(1000);
}

Como se realizo anteriormente podemos tomar dos muestras, y de ah calculamos la nueva


resolucin:

[0.52581 0.48387]
= = 1.075
[489 450]

Conseguimos pues una resolucin casi 5 veces mayor que la anterior.

Finalmente, queda la manera externa para cambiar el voltaje de referencia, para ello utilizaremos el
pin AREF. El funcionamiento de este pin es sencillo el voltaje que introduzcamos por el, ser la nueva
referencia, pero cuidado, dicho voltaje debe estar entre entre 1.1v y 5v.

Para el siguiente ensayo utilizaremos la configuracin anterior, generaremos con el divisor de


tensin y el seguidor de tensin 2.5v, y los llevaremos al pin AREF, el resto lo dejaremos igual.
Respecto al cdigo utilizaremos lo siguiente:

/*
* Practica 13e_ADC Fecha:
* Grupo: 6EV Equipo:

JLDM Pgina 17 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

* Integrantes: JLDM
* Objetivo: Conocer el tiempo de muestreo de la Placa Arduino
*/

int contador;

void setup(){
analogReference(EXTERNAL);
contador=1;
Serial.begin(9600);
Serial.println("******************");
Serial.println("ENSAYO RESOLUCION");
Serial.println("REFERENCIA EXTERNA");
Serial.println("******************");
}

void loop(){

muestreo();
contador++;
}

void muestreo(){

int A=analogRead(A0);
float B= float(A)*2.5/1023;
Serial.print(" Muestra: ");
Serial.print(contador);
Serial.print(" Medida Digital: ");
Serial.print(A);
Serial.print(" Medida Analogica: ");
Serial.println(B, 5);
delay(1000);
}

Activamos el Serial monitor y vemos los resultados:

JLDM Pgina 18 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

Medicin con el Sensor de Temperatura y Humedad.

Especificacin sensor DTH11.

Este sensor se caracteriza por tener la seal digital calibrada por lo que asegura una alta calidad y
una fiabilidad a lo largo del tiempo, ya que contiene un micro controlador de 8 bits integrado. Est
constituido por dos sensores resistivos (NTC y humedad). Tiene una excelente calidad y una
respuesta rpida en las medidas. Puede medir la humedad entre el rango 20% aprox. 95% y la
temperatura entre el rango 0C 50C.

sensor de temperatura y humedad

De acuerdo a la figura, se tiene el orden de las terminales de forma siguiente:

Pin 1 = VCC
Pin2 = Data
Pin 3 = GND

Sus principales caractersticas son:

Tensin de funcionamiento: 3v 5.5v.


Rango de valores del 20% al 90% de Humedad Relativa.
Rango de valores de 0C a 50C de Temperatura.
Resolucin de lectura: 1, es decir, nos proporciona tan slo valores enteros tanto de humedad
relativa como de temperatura.
Precisin de la humedad relativa: 5%.
Precisin de la temperatura: 2C.

Conexin de sensor de temperatura y humedad con Arduino UNO.


En la parte del sensor de temperatura, para conectarlo al Arduino, en nuestro caso hemos usado un
cable que contiene tres hilos: uno verde que va al SIG (datos), otro amarillo que va al VCC
(alimentacin) y otro azul que va al GND (masa). El conector NC no se usa por lo que no necesita

JLDM Pgina 19 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13
cable. Es importante tener bien identificado cada hilo para conectarlo en su pin correspondiente del
Arduino.
En la parte del Arduino UNO conectaremos el cable blanco (seal) al pin A0 analgico, como se
muestra en la figura.
El siguiente paso se conecta el cable negro (GND) al pin GND, posteriormente se conecta el cable
gris (VCC) al pin de 5v.

Programa en C++ para obtener temperatura y humedad a Arduino UNO.


Una vez conectado el sensor de temperatura y humedad a Arduino UNO, el siguiente paso ser
realizar un programa que obtenga los valores de temperatura y humedad y los muestre por el puerto
serie, de esta forma podremos verificar que el hardware (sensor y Arduino) funcionan correctamente.
Instalaremos los drivers necesarios, instalaremos el IDE de desarrollo de Arduino y conectaremos
Arduino al PC por el puerto USB.
A continuacin escribiremos el siguiente programa:

/*
* Practica 13e_ADC Fecha:
* Grupo: 6EV Equipo:
* Integrantes: JLDM
* Objetivo: Conocer el tiempo de muestreo de la Placa Arduino
*/

#define DHT11_PIN 0 // ADC0


byte read_dht11_dat()
{
byte i = 0;
byte result=0;
for(i=0; i< 8; i++)
{
while(!(PINC & _BV(DHT11_PIN))); // wait for 50us
delayMicroseconds(30);

JLDM Pgina 20 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

if(PINC & _BV(DHT11_PIN))


result |=(1<<(7-i));
while((PINC & _BV(DHT11_PIN))); // wait '1' finish
}
return result;
}

void setup()
{
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
Serial.begin(9600);
Serial.println("Ready");
}
void loop()
{
byte dht11_dat[5];
byte dht11_in;
byte i; // start condition
// 1. pull-down i/o pin from 18ms
PORTC &= ~_BV(DHT11_PIN);
delay(18);
PORTC |= _BV(DHT11_PIN);
delayMicroseconds(40);
DDRC &= ~_BV(DHT11_PIN);
delayMicroseconds(40);
dht11_in = PINC & _BV(DHT11_PIN);
if(dht11_in)
{
Serial.println("dht11 start condition 1 not met");
return;
}
delayMicroseconds(80);
dht11_in = PINC & _BV(DHT11_PIN);
if(!dht11_in)
{
Serial.println("dht11 start condition 2 not met");
return;
}
delayMicroseconds(80);
// now ready for data reception
for (i=0; i<5; i++)
dht11_dat[i] = read_dht11_dat();
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];
// check check_sum
if(dht11_dat[4]!= dht11_check_sum)
{
Serial.println("DHT11 checksum error");
}
Serial.print("Humedad = ");
Serial.print(dht11_dat[0], DEC);
Serial.print(".");
Serial.print(dht11_dat[1], DEC);
Serial.print("% ");
Serial.print("Temperatura = ");
Serial.print(dht11_dat[2], DEC);
Serial.print(".");
Serial.print(dht11_dat[3], DEC);
Serial.println("C ");
delay(2000);
}

JLDM Pgina 21 de 18
CARRERA DE INGENIERIA ELECTRICA.
Prcticas de Laboratorio de Electrnica III. Practica No. 13

----------------------------------- FIN DE LA PRCTICA --------------------------------------------

JLDM Pgina 22 de 18

You might also like