Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE CÓMPUTO

INTRODUCCIÓN A LOS MICROCONTROLADORES

PROFESOR:

Aguilar Sanchez Fernando

ALUMNOS:

Arruti Sánchez Alondra


Carrillo Soto Cristian Eduardo

Grupo: 3CM14

Fecha de Entrega: 15/01/23

PRÁCTICA 13

Convertidor Analógico Digital


Introducción
En la siguiente introducción veremos como funciona un convertidor analógico y un
convertidor digital. Un conversor de señal digital a analógica o conversor digital
analógico, CDA o DAC es un dispositivo para convertir señales digitales con datos
binarios en señales de corriente o de tensión analógica.
Casi todas las señales físicas del mundo real son analógicas en naturaleza. Algunos
ejemplos incluyen sonido, luz, temperatura y movimiento. Un transductor es un
dispositivo que se puede utilizar para convertir una señal física de interés en una señal
eléctrica analógica que en última instancia conduce la entrada de un ADC.

Existen muchos parámetros de rendimiento clave de un ADC. Los dos principales son la
velocidad y la resolución de la muestra. La tasa de muestra del ADC es la frecuencia en la
que la señal de entrada se prueba. Esta velocidad de muestreo determina el ancho de banda
máximo de la señal de entrada y normalmente es mayor que el doble de la señal de entrada
más alta, también conocida como la tasa de Nyquist. La resolución del ADC determina la
precisión de la representación digital discreta que se puede producir sobre el rango de los
valores analógicos.
Existen muchos tipos diferentes de ADC disponibles. Los ADC flash (que no deben
confundirse con la memoria Flash) se utilizan para la conversión analógico a digital de alta
velocidad, pero tienen un consumo de energía relativamente alto. Los ADC de
aproximaciones sucesivas sacrifican velocidad y precisión para obtener una conversión de
bajo costo y baja potencia. Los ADC basados endelta-sigma utilizan el sobre muestreo y la
conformación de ruido de cuantificación para lograr una resolución muy alta a costa de la
velocidad. Los ADC de segmentación se utilizan en aplicaciones de alta velocidad con una
mayor necesidad de resolución a expensas de una mayor potencia y la latencia.
Generalmente, un conversor analógico-digital es un dispositivo electrónico que convierte
una entrada analógica de voltaje a un número digital. La salida digital puede usar
diferentes esquemas de codificación, como binario, aunque algunos dispositivos no
eléctricos o parcialmente eléctricos pueden ser considerados como conversores
analógicos-digitales.
La resolución de un conversor indica el número de valores discretos que este puede
producir sobre un rango de valores de voltaje. Generalmente es expresado en bits.

1
Códigos
1. Código de la configuración de los periféricos

1. // I/O Registers definitions


2. #include <mega8535.h>
3. #include <delay.h>
4. // Voltage Reference: AVCC pin
5. #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (1<<ADLAR))
6. // Read the 8 most significant bits
7. // of the AD conversion result
8. unsigned char read_adc(unsigned char adc_input)
9. {
10. ADMUX=adc_input | ADC_VREF_TYPE;
11. // Delay needed for the stabilization of the ADC input voltage
12. delay_us(10);
13. // Start the AD conversion
14. ADCSRA|=(1<<ADSC);
15. // Wait for the AD conversion to complete
16. while ((ADCSRA & (1<<ADIF))==0);
17. ADCSRA|=(1<<ADIF);
18. return ADCH;
19. }
20. // Declare your global variables here
21. unsigned char var;
22. void main(void)
23. {
24. // Declare your local variables here
25. // Input/Output Ports initialization
26. // Port A initialization
27. // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
28. DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) |
(0<<DDA0);
29. // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
30. PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) |
(0<<PORTA1) | (0<<PORTA0);
31. // Port B initialization
32. // Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
33. DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) |
(1<<DDB0);
34. // State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
35. PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) |
(0<<PORTB1) | (0<<PORTB0);
36. // Port C initialization
37. // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
38. DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) |
(0<<DDC0);
39. // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
40. PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) |
(0<<PORTC1) | (0<<PORTC0);
41. // Port D initialization
42. // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
43. DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) |
(0<<DDD0);
44. // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
45. PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) |
(0<<PORTD1) | (0<<PORTD0);
46. // Timer/Counter 0 initialization
47. // Clock source: System Clock
48. // Clock value: Timer 0 Stopped
49. // Mode: Normal top=0xFF
50. // OC0 output: Disconnected
51. TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);
52. TCNT0=0x00;
53. OCR0=0x00;
54. // Timer/Counter 1 initialization
55. // Clock source: System Clock
56. // Clock value: Timer1 Stopped

2
57. // Mode: Normal top=0xFFFF
58. // OC1A output: Disconnected
59. // OC1B output: Disconnected
60. // Noise Canceler: Off
61. // Input Capture on Falling Edge
62. // Timer1 Overflow Interrupt: Off
63. // Input Capture Interrupt: Off
64. // Compare A Match Interrupt: Off
65. // Compare B Match Interrupt: Off
66. TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
67. TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
68. TCNT1H=0x00;
69. TCNT1L=0x00;
70. ICR1H=0x00;
71. ICR1L=0x00;
72. OCR1AH=0x00;
73. OCR1AL=0x00;
74. OCR1BH=0x00;
75. OCR1BL=0x00;
76. // Timer/Counter 2 initialization
77. // Clock source: System Clock
78. // Clock value: Timer2 Stopped
79. // Mode: Normal top=0xFF
80. // OC2 output: Disconnected
81. ASSR=0<<AS2;
82. TCCR2=(0<<WGM20) | (0<<COM21) | (0<<COM20) | (0<<WGM21) | (0<<CS22) | (0<<CS21) | (0<<CS20);
83. TCNT2=0x00;
84. OCR2=0x00;
85. // Timer(s)/Counter(s) Interrupt(s) initialization
86. TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
87. // External Interrupt(s) initialization
88. // INT0: Off
89. // INT1: Off
90. // INT2: Off
91. MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
92. MCUCSR=(0<<ISC2);
93. // USART initialization
94. // USART disabled
95. UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
96. // Analog Comparator initialization
97. // Analog Comparator: Off
98. // The Analog Comparator's positive input is
99. // connected to the AIN0 pin
100. // The Analog Comparator's negative input is
101. // connected to the AIN1 pin
102. ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
103. // ADC initialization
104. // ADC Clock frequency: 250.000 kHz
105. // ADC Voltage Reference: AVCC pin
106. // ADC High Speed Mode: Off
107. // ADC Auto Trigger Source: ADC Stopped
108. // Only the 8 most significant bits of
109. // the AD conversion result are used
110. ADMUX=ADC_VREF_TYPE;
111. ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);
112. SFIOR=(1<<ADHSM) | (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
113. // SPI initialization
114. // SPI disabled
115. SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
116. // TWI initialization
117. // TWI disabled
118. TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

2. Código del programa principal en C

while (1){
// Place your code here
var=read_adc(0);
PORTB=var;

3
Circuitos
1. Circuito simulado en Proteus

Figura. 1 Circuito armado en Proteus.

2. Circuito armado

Figura 2.1 Circuito Armado

4
Conclusiones

La realización de la presente práctica resulto sumamente sencilla puesto que la conversión


analógica a digital la realizó por completo CodeVision, además de que nuevamente la
configuración inicial de los puertos que se hace con CodeVision resulta una gran ayuda
para no tener que realizar esa parte del código.
En conclusión, de la presente práctica se debe rescatar el como configurar el puerto en
ADC y tener en cuenta que el valor devuelto puede variar entre 0 y 255, lo cual será de
gran utilidad cuando se deba manipular este dato, por lo que si bien está práctica es
bastante simple he incluso se podría considerar innecesaria, termina ayudando a la
comprensión del funcionamiento de ADC dentro de CodeVision.
Arruti Sánchez Alondra

En esta práctica pudimos observar cómo es la transformación analógica a digital lo cual ya


se había visto con anterioridad en fundamentos de sistemas digitales por lo que se tenia
una idea muy ambigua sin embargo con el desarrollo de esta práctica ese concepto dejo de
ser ambiguo por lo que se entiende más y se pudo realizar con el objetivo de que se realizo
en esta práctica, al momento de armar el circuito se observo el funcionamiento adecuado
del programa en el microcontrolador ya que se analizo como con el potenciómetro se vio
el valor en la tira LED donde se iluminaban dependiendo de como se utilizaba el
potenciómetro de dicho valor.
Carrillo Soto Cristian Eduardo

5
Bibliografía

[1] "Entendiendo los convertidores AD/DA - SoundGirls.org".


SoundGirls.org. https://soundgirls.org/entendiendo-los-convertidores-ad-da/ (accedido el 13 de
enero de 2023).

También podría gustarte