Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2 Desarrollo
2.1 Simulación de una ADC a base de OPAMPS
A continuación se muestran figuras de la simulación en proteus de un ADC de dos bits hecho
a base de amplificadores operacionales en la configuración de comparador.
El ADC mostrado es un ADC de tipo flash, son muy rápidos porque ”calcula” el valor de
todos los bits al mismo tiempo.
Para hacer la práctica experimental se utilizará:
Figura 2: ADC con un voltaje en la entrada del 35% del voltaje de referencia.
Figura 3: ADC con un voltaje en la entrada del 67% del voltaje de referencia.
Figura 4: ADC con un voltaje en la entrada del 86% del voltaje de referencia.
• 1 microcontrolador ATMEGA328P.
• 1 adaptador USB-TTL para establecer una comunicación serial con una computadora.
Cabe mencionar que el ADC del microcontrolador a utilizar es de aproximaciones sucesivas,
razón por las cuales las conversiones son relativamente lentas. Para esta práctica se utilizará
un periodo de muestreo de 10ms, que es bastante lento.
Por otro lado, en un script de MATLAB se codificaron algunas lı́neas para enviar el valor
que el microcontrolador espera y para estar prepado para recibir los 500 datos que recibirá.
NOTA:
• El microcontrolador se tardará 5 segundos en almacenar las 500 muestras.
A continuación se mostrará la simulación en proteus del sistema y el script que se debe
ejecutar en MATLAB para poder almacenar los datos recibidos; el código utilizado para el
ATMEGA328P se encuentra en el anexo de este documento.
%% S c r i p t u t i l i z a d o para guardar en a r c h i v o de t e x t o
close all ;
clc ;
%b o r r a d a t o s p r e v i o s
d e l e t e ( i n s t r f i n d ( ( p o r t ) , { ’COM12’ } ) ) ;
%v u e l v e a d e c l a r a r e l p u e r t o .
p u e r t o=s e r i a l ( ’COM12’ ) ;
p u e r t o . BaudRate =9600;
fopen ( puerto ) ;
f p r i n t f ( puerto , ’% c ’ , ’ 1 ’ ) ;
b= f r e a d ( puerto , 5 0 0 , ’ uchar ’ ) ;
f i d=f o p e n ( ) ; %Se c r e a e l a r c h i v o
f o r i =1:500
m=b ( i ) ;
f p r i n t f ( f i d , ’%d , ’m) ;
end
fclose ( fid );
f c l o s e ( puerto ) ;
d e l e t e ( puerto ) ;
clear all ;
3 Resultados
Después de subir el programa en el microcontrolador se obtuvieron los siguientes resultados.
A 2π 255
f [n] = ( cos( n) + of f set)( )
2 NT 5V
donde:
A es la amplitud de la señal senoidal
T
NT es el número de muestras por periodo(NT = ), con periodo T de la señal muestreada y
Ts
periodo de muestreo Ts .
t e o r i c o=round ( ( 1 . 5 ∗ s i n ( ( 2 ∗ p i . ∗ n ) / 1 0 0 ) + 1 . 6 ) ∗ ( 2 5 5 / 5 ) )
teorico=[82 86 91 96 101 105 110 114 118 123
127 130 134 137 141 143 146 149 151 153
154 156 157 157 158 158 158 157 157 156
154 153 151 149 146 143 141 137 134 130
127 123 118 114 110 105 101 96 91 86
82 77 72 67 63 58 53 49 45 41
37 33 29 26 23 20 17 15 12 10
9866555668
9 10 12 15 17 20 23 26 29 33
37 41 45 49 53 58 63 67 72 77];
Y de forma experimental:
real=[81,85,90,95,99,104,109,113,118,122,126,130,133,137,143,145,148,150,152,154,
155,156,157,157,158,157,157,156,155,154,152,150,148,145,143,140,137,133,129,125,
121,117,113,108,104,99,94,90,85,80,75,70,65,61,56,52,47,43,39,35,31,27,24,21,18,
15,13,11,9,7,6,5,4,4,4,4,5,5,6,8,10,12,14,17,20,23,26,30,33,37,41,46,50,55,59,64,
68,74,78,83];
Para el caso de la señal senoidal de 2Hz, 3Vpp y offset de 1.6V, se obtuvo de forma teórica.
t e o r i c o=round ( ( 1 . 5 ∗ c o s ( ( 2 ∗ p i . ∗ n ) / 5 0 ) + 1 . 6 ) ∗ ( 2 5 5 / 5 ) )
teorico=[159 158 157 154 150 144 138 131 124 115
106 97 87 78 68 59 50 42 34 27
21 16 11 9 7 6 7 9 11 16
21 27 34 42 50 59 68 78 87 97
106 115 124 131 138 144 150 154 157 158
159 158 157 154 150 144 138 131 124 115
106 97 87 78 68 59 50 42 34 27
21 16 11 9 7 6 7 9 11 16
21 27 34 42 50 59 68 78 87 97
106 115 124 131 138 144 150 154 157 158];
real=[158,157,155,152,147,141,135,128,120,112,102,93,83,73,64,54,46,37,30,23,17,
12,8,5,4,4,5,7,10,15,21,27,34,43,52,61,70,80,90,99,109,117,125,133,139,145,150,
154,156,157,157,156,154,150,145,140,133,126,117,109,99,90,80,70,61,52,43,35,27,
21,15,10,7,5,4,4,6,8,12,17,22,29,37,46,55,64,73,83,92,102,111,120,128,135,142,147,
151,155,157,158];
Para el caso de la señal senoidal de 5Hz, 3Vpp y offset de 1.6V, se obtuvo de forma teórica.
t e o r i c o=round ( ( 1 . 5 ∗ c o s ( ( 2 ∗ p i . ∗ n ) / 2 0 ) + 1 . 6 ) ∗ ( 2 5 5 / 5 ) )
teorico=[158 154 143 127 105 82 58 37 20 9 5 9 20 37 58 82 105
127 143 154 158 154 143 127 105 82 58 37 20 9 5 9 20 37
58 82 105 127 143 154 158 154 143 127 105 82 58 37 20 9 5
9 20 37 58 82 105 127 143 154 158 154 143 127 105 82 58 37
20 9 5 9 20 37 58 82 105 127 143 154 158 154 143 127 105
82 58 37 20 9 5 9 20 37 58 82 105 127 143 154];
real=[157,155,145,129,108,84,61,38,20,9,4,7,17,34,55,78,103,124,142,153,158,
154,143,127,105,81,57,35,18,8,4,8,19,36,58,82,106,127,144,154,158,
153,141,124,102,78,54,33,17,7,4,9,21,39,61,85,109,130,146,155,158,
152,140,121,99,75,51,30,15,6,4,10,23,42,64,88,112,132,147,156,157,
151,137,118,96,71,48,28,13,5,5,11,25,45,67,92,115,134,149,157];
4.0.2 Gráficas
En las figuras siguientes se muestran las gráficas de los datos correspondientes para el caso
de tres señales senoidales, con la misma amplitud, pero distinta frecuencia. Para cada señal
diferente corresponden 3 figuras, la descripción se encuentra en el pie de página de cada una.
Señal senoidal de 1Hz de frecuencia.
Figura 11: Señal de salida del generador de funciones con frecuencia de 1Hz.
Figura 12: Error entre la cuantización y teórica y real para 1Hz.
Figura 17: Señal de salida del generador de funciones con frecuencia de 5Hz.
Figura 18: Error entre la cuantización y teórica y real para 5Hz.
5 Conclusiones
Se puede concluir que los convertidores ADC son muy útiles, pues permiten tomar valores
puntuales de una señal analógica, también puedo decir que existen distintos tipos de ADC,
en esta práctica sólo se mencionan dos, aunque no digo detalles de cada uno de ellos.
Al comparar la respuesta real contra la respuesta teórica se puede notar que el margen de
error es aceptable.
Bibliografı́a
@Book1, Felipe Santiago Espinosa,El microcontrolador ATMEGA328P de Microchip: Pro-
gramación en Ensamblador, Lenguaje C y un enlace con Arduino,Universidad Tecnológica de
la Mixteca,2021.
6 Anexo
...\604-A\804-A\ComunicacionesDigitales\ADC_CD\ADC_CD\main.c 1
/*Almacena datos y los envia a través de la USART
*/
uint16_t analogin=0;
uint8_t aux=0;
uint16_t ndatos=0, i;
void enviaDatos();
int main(void)
{
DDRB=0xFF; //Puerto B como salida
DDRC=0x00; //PC0 entrada del ADC
DDRD=0x02; //PD0 y PD2 entrada, PD1 salida
...\604-A\804-A\ComunicacionesDigitales\ADC_CD\ADC_CD\main.c 2
PORTD=0x04; //Pull-up para INT0;
EICRA=0x02; //INT0 por flanco de bajada
EIMSK=0x01; //Habilita INT0
sei();
while (1)
{
asm("NOP");
}
}
void enviaDatos(){
for(i=0; i<500; i++){
while(!(UCSR0A&1<<UDRE0)); //Espera buffer vacío
UDR0=datos[i];
_delay_us(5);
}
PORTB=0x01;//Vuelve al estado inicial
}