Está en la página 1de 4

LABORATORIO DE SISTEMAS DE CONTROL

DIGITAL

LAB1: Discretización de señales con ATmega 328P

1. Objetivo:
Configurar la resolución de los convertidores Analógico – Digital y Digital – Analógico.

2. Materiales:

• ATmega 328P
• Generador de Señales
• Resistencia
• Diodo 1N4732A
• DAC MCP4725
• Osciloscopio

3. Marco Teórico:

3.1 Convertidor analógico digital (ADC)

El ADC es un dispositivo que va a lograr convertir una señal continua en el tiempo en


una señal digital, esta señal digital ya podría ser procesada por ejemplo, por un
microcontrolador.

3.2 ADC – ATmega328P


Para configurar el ADC hay que tener en cuenta 3 parámetros importantes
a) Voltaje de referencia (Vref+), (Vref-)
- El máximo valor que puede tener el Vref+ es 5v y el mínimo valor que puede tomar el
V(ref-) es 0v
- No se puede conectar una señal que toma valores negativos al pin analógico del
microcontrolador.
- En la práctica se nos pide que la amplitud de la señal positiva que vamos a muestrar no
sobrepase los 3.3Vpp, para este caso, el Vref- = 0v y el Vref+ = 3.3V

b) Resolución del ADC


El ATmega328P tiene integrado un ADC de 10 bits de resolución.
Mientras más resolución tenga el ADC, más precisa será la conversión.

c) Samples (muestras por segundo)


- Los simples son el número de muestras por segundo que puede tomar el ADC, mientras
más muestras se tomen de la señal en un intervalo de tiempo pequeño, más precisa será
la conversión.
- En la hoja de datos del ATmega328p, nos dice que es recomendable trabajar a 15kSPS
para obtener la máxima resolución.

d) Paso de cuantización
El paso de cuantización es el rango de voltaje entre cada valor digital.
Para:
10-bits ADC = 2^10 =
10-bits ADC = 2^10 = 1024 valores digitales

1024 valores𝑃𝑎𝑠𝑜digitales
𝑑𝑒 𝑐𝑢𝑎𝑡𝑖𝑧𝑎𝑐𝑖𝑜𝑛 =
3.3𝑣 − 0𝑣
2 −1
= 3.22𝑚𝑉 10

0v = 00 00000000 -> 0
3.22mV = 00 00000001 -> 1
6.44mV = 00 00000010 -> 2

….
3.3v = 11 11111111 -> 1023

3.3 Convertidor digital analógico (DAC)


Es un dispositivo capaz de convertir una señal digital a analógica.
Que tan precisa sea la conversión a la salida del DAC va a depender de su resolución.

3.4 MCP4725
Es un módulo convertidor digital – analógico
- Interfaz I2C
- Resolución de 12 bits
- Es capaz de operar a 3.3v o 5v

4. Circuito Esquemático:

5. Código en Microchip Studio:


Se lee una entrada analógica (ADC0) con resolución de 10 bits, la cual es enviada por el bus
I2C al DAC MCP4725.
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>
#include "I2C/I2C_Master.h"
#include "ADC/ADC_10bits.h"

#define ADDRESS_MCP4725 0b11000000 //0xC0 direccion del esclavo;


#define MCP4725_WRITE 0x00

//VARIABLES
uint16_t ValorConvertido = 0;

//PROTOTIPO DE FUNCIONES

void MCP4725_Write_address(uint8_t address_mcp);


//funcion que recibe la direccion de MCP4725;
void MCP4725_Write_data(uint16_t data_mcp);
//funcion que recibe el dato digital que se enviará al DAC;

int main(void)
{

I2C_Init();//Se inicializa el modulo I2C;


ADC_Init();//Se inicializa el modulo ADC;
while (1)
{
ValorConvertido = analogRead(ADC0);//Se lee el valor analogico convertido a digital;

MCP4725_Write_address(ADDRESS_MCP4725);//Se escribe la direccion del MCP;


MCP4725_Write_data(ValorConvertido);//Se envia el valor digital al DAC;
I2C_Stop();//generamos la condicion de parada y esperamos a que se transmita.

}
}

//************Desarrollo de funciones*********;
void MCP4725_Write_address(uint8_t address_mcp){
I2C_Start();//se genera la condicion de start se espera a que se transmita;
I2C_Write_Address_Slave(address_mcp,MCP4725_WRITE);
//se direcciona al esclavo, y se indica que será una escritura;
}

void MCP4725_Write_data(uint16_t data_mcp){

I2C_Write_Data_Slave((uint8_t)(data_mcp>>8));
I2C_Write_Data_Slave((uint8_t)data_mcp);
}

RESULTADOS

a) Para una frecuencia de un señal senodidal f=2KHZ , realizar las pruebas en proteus
b) Para uan frecuencia de una señal triangular f=2kz ,realizar las pruebas en proteus

También podría gustarte