DAC
-
Upload
edgar-castelan -
Category
Documents
-
view
218 -
download
0
description
Transcript of DAC
![Page 1: DAC](https://reader036.fdocuments.mx/reader036/viewer/2022082714/5695d0aa1a28ab9b02935ffb/html5/thumbnails/1.jpg)
0
Departamento de Ingeniería Eléctrica y Electrónica
ING. ELECTRÓNICA
Amplificadores Operacionales
Edgar Ricardo Castelán Garcilazo 12100115 Mayer Fernando Núñez Rangel 12100130
Práctica 9: Convertidor D/A
![Page 2: DAC](https://reader036.fdocuments.mx/reader036/viewer/2022082714/5695d0aa1a28ab9b02935ffb/html5/thumbnails/2.jpg)
![Page 3: DAC](https://reader036.fdocuments.mx/reader036/viewer/2022082714/5695d0aa1a28ab9b02935ffb/html5/thumbnails/3.jpg)
Objetivo:
Convertir una señal digital de 3 bit a su correspondiente de voltaje analógico
Material y equipo:
1 Amplificador operacional LM741
1 Fuente de voltaje dual
3 Resistencias de 1,2 y 4 kΩ
1 Multímetro
1 Potenciómetro de 10kΩ
1 teclado matricial
1 Arduino mega
Desarrollo:
En base al siguiente circuito se desarrolló la práctica
Se utilizaron 3 resistencias de 4, 2 y 1 kΩ para la red de escalera. Y se utilizo un
potenciómetro en lugar de la resistencia de referencia para ajustar la ganancia y
que coincidiera con el valor binario correcto
Para probarlo primero se utilizó un dip switch para introducir el valor binario y se
midió el voltaje de salida con un multímetro.
![Page 4: DAC](https://reader036.fdocuments.mx/reader036/viewer/2022082714/5695d0aa1a28ab9b02935ffb/html5/thumbnails/4.jpg)
Después se desarrolló un programa con Arduino para utilizar un teclado matricial
que conectado al convertidor al presionar un numero se mostrara su valor en el
multímetro.
Código de Arduino:
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char hexKeys[ROWS][COLS] =
'1','2','3','A',
'4','5','6','B',
'7','8','9','C',
'*','0','#','D';
byte rowPins[ROWS] = 2, 3, 4, 5;
byte colPins[COLS] = 6, 7, 8, 9;
Keypad KP1(makeKeymap(hexKeys), rowPins, colPins, ROWS, COLS);
void setup()
Serial.begin(9600);
pinMode(22, OUTPUT);
pinMode(23, OUTPUT);
pinMode(24, OUTPUT);
pinMode(25, OUTPUT);
String StrIn="";
int Num=0;
void loop()
char customKey = KP1.getKey();
![Page 5: DAC](https://reader036.fdocuments.mx/reader036/viewer/2022082714/5695d0aa1a28ab9b02935ffb/html5/thumbnails/5.jpg)
if (customKey)
Serial.println(customKey);
if (isDigit(customKey))
if (customKey=='0' || customKey=='1' || customKey=='2' || customKey=='3' || customKey=='4' ||
customKey=='5' || customKey=='6')
StrIn=customKey;
Num=StrIn.toInt();
Out(Num);
void Out(int A)
switch (A)
case 0x00:
digitalWrite(22, LOW);
digitalWrite(23, LOW);
digitalWrite(24, LOW);
digitalWrite(25, LOW);
break;
case 0x01:
digitalWrite(22, HIGH);
digitalWrite(23, LOW);
digitalWrite(24, LOW);
digitalWrite(25, LOW);
break;
case 0x02:
![Page 6: DAC](https://reader036.fdocuments.mx/reader036/viewer/2022082714/5695d0aa1a28ab9b02935ffb/html5/thumbnails/6.jpg)
digitalWrite(22, LOW);
digitalWrite(23, HIGH);
digitalWrite(24, LOW);
digitalWrite(25, LOW);
break;
case 0x03:
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
digitalWrite(24, LOW);
digitalWrite(25, LOW);
break;
case 0x04:
digitalWrite(22, LOW);
digitalWrite(23, LOW);
digitalWrite(24, HIGH);
digitalWrite(25, LOW);
break;
case 0x05:
digitalWrite(22, HIGH);
digitalWrite(23, LOW);
digitalWrite(24, HIGH);
![Page 7: DAC](https://reader036.fdocuments.mx/reader036/viewer/2022082714/5695d0aa1a28ab9b02935ffb/html5/thumbnails/7.jpg)
Conclusión:
El convertidor funciono correctamente, aunque los valores que aparecían en el
multímetro no eran exactos, este se debe a que los valores de las resistencias no
son exactos y por lo tanto los resultados variaban.
Al conectar el arduino se tuvo que modificar de nuevo la ganancia ya que la señal
enviada era diferente.
A pesar de que el convertidor realizado es de 3 bits y debería llegar hasta el
número 7, solo llega al número 6, ya que el voltaje de referencia usado era de
poco menos de 7 volts.
![Page 8: DAC](https://reader036.fdocuments.mx/reader036/viewer/2022082714/5695d0aa1a28ab9b02935ffb/html5/thumbnails/8.jpg)