DAC

8
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

description

Proceso de construccion de un DAC

Transcript of DAC

Page 1: 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

Page 2: DAC
Page 3: DAC

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

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

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

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

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