DAC
-
Upload
edgar-castelan -
Category
Documents
-
view
214 -
download
0
description
Transcript of DAC
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
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.
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();
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:
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);
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.