DIVISIÓN DE INGENIERÍA MECATRÓNICA
ELECTRONICA DIGITAL
Formato de reporte de Práctica
5t0 Semestre Grupo Unico
Profesor: Muños-Barron B.
Olguin-Cruz G. / Lopez-Santander D.A.
Ramirez-Mentado M.A. / Salvador-Cruz F.
Tomas-Chavez A. / Valencia-Martinez L.
Villeda-Callejas G.A.
1. Introducción
En el mundo de la electrónica, los sistemas digitales necesitan interactuar con el entorno fı́sico, donde predominan
las señales analógicas. Para lograr esta integración, se utilizan dispositivos como los convertidores Digital a Analógico
(DAC) y los convertidores Analógico a Digital (ADC). El MCP4922 y el MCP3208 son ejemplos de componentes que
realizan estas funciones de manera eficiente.
El MCP4922 permite transformar datos digitales en señales analógicas con una resolución de 12 bits, mientras que el
MCP3208 convierte señales analógicas en datos digitales con la misma precisión. Ambos dispositivos utilizan comunica-
ción SPI, lo que los hace compatibles con microcontroladores como Arduino. Este reporte describe su funcionamiento,
caracterı́sticas principales y aplicaciones en proyectos prácticos.
2. Objetivos
Objetivo General
Explorar e implementar el uso de los convertidores MCP4922 y MCP3208 con Arduino, comprendiendo su funcio-
namiento y aplicabilidad en proyectos electrónicos.
Objetivos Especı́ficos
Analizar las caracterı́sticas técnicas del MCP4922 (DAC) y MCP3208 (ADC), incluyendo resolución, comunicación
SPI y parámetros operativos.
Configurar e implementar conexiones fı́sicas de los convertidores con un microcontrolador Arduino.
Desarrollar y probar códigos en Arduino para el envı́o de datos digitales al MCP4922 y la lectura de datos analógicos
con el MCP3208.
Demostrar aplicaciones prácticas de ambos convertidores en sistemas de generación de señales y adquisición de
datos.
Evaluar el rendimiento y precisión de los convertidores en distintas condiciones de operación.
3 SUSTENTO TEORICO
3. Sustento Teorico
3.1. Introducción a los Convertidores DAC y ADC
En electrónica, los sistemas digitales y analógicos deben interactuar para procesar y manipular información del mundo
real. Los convertidores Digital a Analógico (DAC) y convertidores Analógico a Digital (ADC) son componentes clave en
esta comunicación.
Convertidores DAC: Transforman datos digitales (señales discretas) en señales analógicas (continuas) que puedan
ser interpretadas por dispositivos fı́sicos, como actuadores, altavoces o fuentes de señal.
Convertidores ADC: Convierte señales analógicas (como voltajes de sensores) en datos digitales que los sistemas
digitales, como microcontroladores o computadoras, puedan procesar.
Ambos dispositivos son esenciales en sistemas de control, procesamiento de señales, sensores y generación de señales.
3.2. Convertidor MCP4922 (DAC)
El MCP4922 es un convertidor DAC con las siguientes caracterı́sticas:
Resolución: 12 bits, proporcionando una salida analógica con 4096 niveles distintos.
Interfaz SPI: Utiliza la comunicación serie para recibir datos digitales.
Canales: Tiene dos salidas analógicas independientes, lo que permite el manejo de dos señales simultáneamente.
Voltaje de referencia: Determina el rango de salida analógica. Puede ser fijo (interno) o externo, lo que lo hace
flexible para distintas aplicaciones.
Funcionamiento del DAC:
Entrada Digital: Recibe un dato digital de 12 bits a través de SPI.
Conversión: Convierte este dato en un nivel de voltaje analógico proporcional.
Salida Analógica: El nivel de voltaje analógico se presenta en una de las salidas.
El MCP4922 es ideal para aplicaciones de generación de señales analógicas como audio, sistemas de control y sı́ntesis
de formas de onda.
3.3. Convertidor MCP3208 (ADC)
El MCP3208 es un convertidor ADC con las siguientes caracterı́sticas:
Resolución: 12 bits, lo que permite digitalizar señales con 4096 niveles de precisión.
Canales: Ofrece 8 entradas analógicas, las cuales pueden configurarse como entradas individuales o pares diferen-
ciales.
Interfaz SPI: Permite una rápida comunicación con microcontroladores mediante una interfaz serie.
Electonica Digitla: Formato de reporte de practicas 2
Formato de reporte
3.4 Comunicación SPI 3 SUSTENTO TEORICO
Voltaje de entrada: Proporciona una lectura analógica precisa en un rango de 0 a 5V (o ajustado según el voltaje de
referencia).
Funcionamiento del ADC:
Entrada Analógica: Recibe una señal continua (voltaje).
Muestreo y Cuantización: Convierte la señal en un valor digital basado en el nivel de voltaje medido.
Salida Digital: Entrega el dato digital al microcontrolador a través de SPI.
El MCP3208 es utilizado en aplicaciones de adquisición de datos, sensores analógicos y sistemas de medición.
3.4. Comunicación SPI
Ambos convertidores (MCP4922 y MCP3208) utilizan el protocolo SPI (Serial Peripheral Interface), que es una
interfaz rápida y eficiente para la transmisión de datos entre dispositivos. Este protocolo consta de cuatro lı́neas principales:
MOSI (Master Out Slave In): Datos enviados desde el maestro (Arduino) al esclavo (convertidor).
MISO (Master In Slave Out): Datos enviados desde el esclavo al maestro.
SCLK (Serial Clock): Reloj generado por el maestro para sincronizar la comunicación.
CS (Chip Select): Selecciona el dispositivo con el que el maestro quiere comunicarse.
El uso de SPI asegura la compatibilidad de ambos convertidores con microcontroladores como Arduino, ofreciendo
alta velocidad y facilidad de implementación.
Figura 1: Segmentos cuando se presiona rst
Electonica Digitla: Formato de reporte de practicas 3
Formato de reporte
3.5 Aplicaciones de los DAC y ADC 3 SUSTENTO TEORICO
3.5. Aplicaciones de los DAC y ADC
MCP4922 (DAC):
Generación de señales analógicas (audio, formas de onda).
Control de dispositivos analógicos (actuadores, motores).
Conversión de datos digitales para sistemas analógicos.
MCP3208 (ADC):
Lectura de sensores (temperatura, presión, luz).
Monitoreo de señales analógicas en sistemas de control.
Captura de datos para procesamiento digital.
Electonica Digitla: Formato de reporte de practicas 4
Formato de reporte
4 METODOLOGIA
4. Metodologia
4.1. Propósito
El código genera dos señales analógicas (una por cada salida del DAC) basadas en los valores de x[] y y[]. Estas señales
podrı́an representar ondas personalizadas que se pueden observar en un osciloscopio. La temporización fija asegura que
las señales tengan una frecuencia constante.
4.2. Ciclo principal
Temporización (1 kHz):
El bloque principal del código se ejecuta cada 1000 microsegundos (1 ms).
Estado del Pin togglePin:
Alterna entre HIGH y LOW cada ciclo (útil para monitorear el funcionamiento en un osciloscopio).
Escritura en el DAC:
Usa fastWriteA y fastWriteB para enviar los valores de los arreglos x[] y y[] a las salidas A y B del DAC.
El pin LDAC se lleva a LOW y luego a HIGH para actualizar las salidas analógicas.
Recorrido de los Arreglos:
Cada ciclo, envı́a el siguiente valor de x[] y y[] al DAC.
Si llega al final del arreglo (ı́ndice ¿62), reinicia el ı́ndice a 0.
4.3. Codigo para inmercion de dos canales
Para estra practica se generan 91 elementos y se cambian diversas modificaciones tanto al inicio como al final de este
de manera que se puedan determinar nuevos valores para representar graficamente pero en el caso contrario se pueden
ingresar en dos canales de manera que se generaran dos lineas de graficas adecuadas que al momento de realizar de manera
adecuada la puede representar graficamente la forma de un corazon.
Listing 1: Codigo de Arduino Con dos salidas
1 # include " MCP_DAC.h "
2 # include " MCP_ADC.h "
3
4 MCP4922 MCPDAC (27 , 25) ; // SW SPI
5 MCP3208 MCPADC (49 , 47 , 51) ; // use SWSPI
6
7 int x [] = ...
{1024 ,1025 ,1030 ,1045 ,1072 ,1114 ,1171 ,1243 ,1326 ,1418 ,1512 ,1604 ,1687 ,1757 ,1808 ,1837 ,1842 ,1823 ,1781 ,1718 ,16
8 int y [] = ...
{1783 ,1790 ,1808 ,1837 ,1874 ,1915 ,1956 ,1993 ,2023 ,2041 ,2044 ,2030 ,1998 ,1948 ,1881 ,1798 ,1703 ,1599 ,1489 ,1378 ,1
9
10
11 int index = 0;
12 int LDAC = 29;
13 int SHDN = 31;
14 int togglePin = 2;
15 void setup ()
Electonica Digitla: Formato de reporte de practicas 5
Formato de reporte
4.3 Codigo para inmercion de dos canales 4 METODOLOGIA
16 {
17 pinMode ( togglePin , OUTPUT );
18 [Link] (2000000) ;
19 pinMode ( LDAC , OUTPUT );
20 pinMode ( SHDN , OUTPUT );
21 digitalWrite ( LDAC , HIGH );
22 digitalWrite ( SHDN , HIGH );
23 // indica dó nde est á el chipselect del dac
24 [Link] (23) ;
25 // indica dó nde est á el chipselect del adc
26 [Link] (45) ;
27
28 }
29
30 // Tanto el adc como el dac son de 12 bits , por lo que reciben una se ñ al entre
31 // 0 y 4095 o entregan una se ñ al entre 0 y 4095
32
33 int j = 0;
34 int32_t lasttime =0;
35 uint16_t val ;
36 void loop ()
37 {
38 if ( micros () - lasttime > 1000)
39 {
40 digitalWrite ( togglePin ,! digitalRead ( togglePin ));
41 lasttime = micros () ;
42
43 [Link] (x[ index ]) ;
44 [Link] (y[ index ]) ; // se escribe la lectura
45 digitalWrite ( LDAC , LOW );
46 delay (1) ;
47 digitalWrite ( LDAC , HIGH );
48 index ++;
49 if ( index > 62) index = 0;
50 }
51 }
Figura 2: Segmentos cuando se presiona rst
Electonica Digitla: Formato de reporte de practicas 6
Formato de reporte
4.4 Practica Transmisión 5 CONCLUIONES
Figura 3: Segmentos cuando se presiona rst
Figura 4: Segmentos cuando se presiona rst
4.4. Practica Transmisión
5. Concluiones
Los convertidores MCP4922 y MCP3208 son herramientas esenciales en la integración de señales analógicas y digita-
les. Su facilidad de uso y precisión los hacen ideales para una amplia gama de aplicaciones, como la generación de señales
de control, la lectura de sensores analógicos y el procesamiento de señales en sistemas embebidos. Su implementación
con Arduino no solo simplifica el desarrollo de proyectos, sino que también potencia la capacidad de interactuar con el
mundo fı́sico, brindando una solución eficiente y accesible para desarrolladores y estudiantes de electrónica.
Electonica Digitla: Formato de reporte de practicas 7
Formato de reporte