UNIVERSIDAD AUTÓNOMA A UTÓNOMA DE QUERÉTA QUERÉTA RO
FA CULTA CULTA D DE INGENIERÍA
MANUAL DE PRÁCTICAS PRÁCTICAS
PROGRAMA PROGRAMACIÓN CIÓN AVANZA AVANZADA DA MICROCONTROLADORES
JUAN JUA N MANUEL RAMOS ARREGUÍN ARREGUÍN
ENERO - DICIEMBRE 2017
ÍNDICE PRÁCTICA 1.
Introducción Introducci ón General a los Microcontrolador Microcont roladores es ...................................... ................... ...................................... ....................................4 .................4
PRÁCTICA 2.
Manejo de interrupciones interru pciones externas INT0 e INT1. ....................................... .................... ...................................... .............................. ........... 14
PRÁCTICA 3.
Manejo del Temporizador Temporiza dor .................................... ................. ....................................... ....................................... ...................................... .............................. ........... 19
PRÁCTICA 4.
Conversión Conversió n Analógica/Digita Analógi ca/Digitall (ADC) .................................... ................. ....................................... ....................................... .................................. ............... 25
PRÁCTICA 5.
Comunicación Comunicació n Serial .................................... ................. ....................................... ....................................... ....................................... ....................................... ................... 31
PRÁCTICA 6.
Comunicación Comunicació n serial con un módulo Bluetooth Bluetoot h ....................................... .................... ...................................... ................................. .............. 38
PRÁCTICA 7.
Desarrollo Desarro llo de proyecto ....................................... ................... ....................................... ....................................... ....................................... ................................ ............. 42
ÍNDICE PRÁCTICA 1.
Introducción Introducci ón General a los Microcontrolador Microcont roladores es ...................................... ................... ...................................... ....................................4 .................4
PRÁCTICA 2.
Manejo de interrupciones interru pciones externas INT0 e INT1. ....................................... .................... ...................................... .............................. ........... 14
PRÁCTICA 3.
Manejo del Temporizador Temporiza dor .................................... ................. ....................................... ....................................... ...................................... .............................. ........... 19
PRÁCTICA 4.
Conversión Conversió n Analógica/Digita Analógi ca/Digitall (ADC) .................................... ................. ....................................... ....................................... .................................. ............... 25
PRÁCTICA 5.
Comunicación Comunicació n Serial .................................... ................. ....................................... ....................................... ....................................... ....................................... ................... 31
PRÁCTICA 6.
Comunicación Comunicació n serial con un módulo Bluetooth Bluetoot h ....................................... .................... ...................................... ................................. .............. 38
PRÁCTICA 7.
Desarrollo Desarro llo de proyecto ....................................... ................... ....................................... ....................................... ....................................... ................................ ............. 42
CONDICIONES DE ENTREGA Las prácticas deberán ser entregadas funcionando al 100%, y se debe entregar un reporte que cumpla con las siguients condiciones: 1. Debe ser en formato PDF. 2. Debe contener todos los puntos de la práctica, con la evidencia en cada punto de que se cumple con el punto respectivo. Esto incluye diagramas, códigos, fotos y video de resultados. 3. El video no debe tener un tiempo mayor a 10 segundos, y se debe apreciar correctamente el circuito funcionando. 4. Agregar al final, las conclusiones de cada uno de los integrantes del equipo. 5. La práctica debe ser entregada en el tiempo especificado para tener derecho a la máxima calificación, de lo contrario, disminuirá 1 punto por cada sesión que se atrase la entrega. 6. Prácticas entregadas después de la evaluación parcial, tendrá tendrá un valor de cero. 7. Las fechas de entrega de cada práctica serán las siguientes. Practica 1 Practica 2 Practica 3 Practica 4 Practica 5 Practica 6 Practica 7
Grupo 31 28 enero 2017 25 febrero 2017 18 marzo 2017 1 abril 2017 22 abril 2017 13 mayo 2017 3 junio 2017
Grupo 32 26 enero 2017 23 febrero 2017 16 marzo 2017 30 marzo 2017 20 abril 2017 11 mayo 2017 1 de junio 2017
PRÁCTI PRÁCTICA CA 1. 1. Introd ucción ucc ión General General a los Micro contro con trolador ladores es 1.1 OBJETIVO Aprender a instalar las herramientas de software para programar un microcontrolador, así como implementar el sistema mínimo de un microcontrolador y utilizando el microcontrolador Atmega 328P, para controlar hardware. 1.2 MARCO TEÓRICO El uso de los microcontroladores se ha extendido de manera exponencial hoy en día. Sus usos más comunes los podemos ver alrededor de nosotros día con día, por lo que resulta muy importante para un ingeniero en computación aprender a utilizar tales dispositivos e interactuar con ellos a través de uns computadora personal, para el control y monitoreo de procesos. En esta práctica, el estudiante comprenderá algunos conceptos básicos de microcontroladores, los cuales son necesarios para comprender adecuadamente la manera como se programan, así como las capacidades de los mismos para poder resolver problemas. 1.2.1 1.2.1 Concept os Básic os. •
•
•
•
•
•
•
Arqu Ar qu it ectur ect ur a d e h ard war e. Establece e. Establece la manera como se conecta el hardware, para realizar una función específica. En microcontroladores y microprocesadores, se utiliza básicamente 2 arquitecturas, Von Neummann y Hardvare. Datos Datos di gitales. Son gitales. Son los valores que se utilizan para programar y configurar el funcionamiento del µP y µC, y se representan en binario, octal o hexadecimal. Dirección de memoria. El memoria. El funcionamiento de los microcontroladores y microprocesadores se basa en el uso de direcciones de memoria. En microcontroladres, la dirección de memoria es interna, y en microprocesadores la dirección de memoria está presente en terminales de los microcontroladores. Se utiliza para direccionar la información procesada o a procesar, a registros específicos de manera interna o externa, dependiendo del caso. Lenguaje de alto nivel. nivel. Son lenguajes que se asemejan más al lenguaje natural de las personas, y que son más fáciles de utilizar, especialmente para personas que no tienen mucha experiencia manejando µP y µC. Dentro de la categoría de estos lenguajes, se encuentran, por ejemplo: C, C++, C#, Java, Basic, entre otros. Para µC son muy comunes PIC-C, PIC-Basic, Processing, Atmel Studio (especialmente C), entre otros. Lenguaje ensamblador. Es ensamblador. Es el lenguaje de programación del µP y µC más básico, previo al lenguaje máquina. Se caracteriza por el uso de mnemónicos, y cada instrucción puede estar conformada por 1 a 3 palabras. Para cada µP y µC existe un lenguaje ensamblador propio, el cual es definido por el fabricante del dispositivo. Lenguaje máquina. máquina. Es el lenguaje natural de cualquier sistema digital, y se basa en el manejo de valores binarios, es decir, solamente se procesan 1’s y 0’s. Mapa de memoria. memoria. Se utiliza para organizar el conjunto de registros que se utilizan para configurar la funcionalidad de un microprocesador y de un microcontrolador. Está relacionado directamente con la dirección de memoria, pues cada registro se encuentra ubicado en una localidad de memoria específica.
Práctica 1: Introducción General a los Microcontroladores •
•
•
•
Microcontrolador (µC). Es un circuito integrado que tiene la capacidad de realizar procesamiento de datos digitales. Contienen de manera interna una Unidad Central de Procesamiento (CPU), Memoria de Acceso Aleatorio (RAM), Memoria de Almacenamiento Permanente (Memoria FLASH), así como Puertos de Entrada / Salida (PIO). Algunos dispositivos cuentan con convertidores Analógico/Digital, temporizadores, comunicación UART, SPI, I2C, entre otras características adicionales. Estos circuitos funcionan de acuerdo a un programa de usuario, el cual es almacenado en la memoria FLASH. Se utilizan principalmente para controlar un proceso específico. Microprocesador (µP). Es un circuito integrado que tiene la capacidad de realizar el procesamiento de una gran cantidad de datos digitales. Se basan principalmente en una unidad interna CPU (Unidad Central de Procesamiento), así como Puertos de Entrada / Salida (PIO). No cuentan con memoria interna, unidades de comunicación, ni alguna otra característica adicional. Esto es debido a que el microprocesador se utiliza para en procesos de alta demanda, por lo que se requiere el uso de periféricos externos. En una computadora personal, el microprocesador se encarga de administrar el hardware utilizado. Registro. Se utilizan para almacenar información digital, y puede tener diversos usos, como se especifica a continuación. o Configuración. Son registros que se utilizan para configurar el modo de funcionamiento del microcontrolador o microprocesador. Por ejemplo, en un microcontrolador: configuración de los puertos de entrada/salida (E/S ó I/O), convertidor Analógico/Digital (A/D), temporizador, comunicación serial, entre otros. o Operación. Son los registros que se utilizan para el funcionamiento normal del microcontrolador, y que se requiere para almacenar valores. Algunos de estos registros se conocen como Acumuladores. Todo µP y µC utilizan acumuladores en los procesos de cómputo. o Memoria. En los microcontroladores, también se les llama a los registros “localidades de memoria”, que es donde se almacena información de manera temporal (RAM) o permanente (FLASH). Cristal. Elemento de hardware utilizado para alimentar al µP y µC con la señal de reloj. Este cristal define la velocidad a la cual se va a procesar los datos digitales.
1.2.2 El micro contr olador. Algunas de las principales características de un µC se presentan a continuación. Son importantes para definir si nos conviene ese circuito, o se debe buscar alguna otra alternativa. Arquitectura. Velocidad de procesamiento en Número de Instrucciones por Segundo (IPS). Número de multiplicadores implementados en hardware. Capacidad de memoria para usuario y para programa, en bytes. Número de ciclos de escritura/borrado para la memoria Flash. Tiempo de retención del dato. Seguridad para evitar el robo de software. Periféricos disponibles. Por ejemplo, puertos, temporizadores, convertidor A/D, comunicación serial, entre otros. Número de bits de datos.
• • • • • • • •
•
5
Práctica 1: Introducción General a los Microcontroladores
1.2.3 El microc ont rol ador ATMega328P En la figura 1.1, se muestra el encapsulado del µC mencionado.
Figura 1.1. Encapsulado del µC ATMega 328P. 1.2.4 El mapa de memor ia. El µC ATMega328P, maneja 3 mapas de memoria, para los cuales utiliza 3 conjuntos de direcciones de memoria, para tener independencia en el manejo de tales mapas. En la figura 1.2, se muestra el mapa de memoria de datos y de programa. 0x0000
0x0000
32 Registros 0x001F 0x0020
Sección de memoria Flash para programación del µC
64 Registros de I/O 160 Registros de I/O extendidos Memoria interna SRAM (1048 x 8)
0x005F 0x0060
0x00FF 0x0100
Sección Flash para memoria de arranque
0x08FF
Memoria de Datos
0x3FFF
Memoria de Programa
Figura 1.2. Mapa de memoria ATMega328P.
6
Práctica 1: Introducción General a los Microcontroladores
1.2.5 Registr os de confi guración de puertos I/O. Los puertos del µC se consideraciones como puertos de propósito general, es decir, podemos utilizarlos como puertos de I/O, o bien, configurarlos para un uso especial. Los usos especiales se verán posteriormente en otras prácticas. Para cada puerto se encuentran asociados dos registros. Configuración de terminales, el cual se usa para indicar que pines serán entradas y cuales van a funcionar como salida. Escritura/lectura externa, es decir, se utiliza para escribir datos del interior del µC hacia el exterior, o bien, en sentido contrario. Los puertos asociados son los siguientes. PINB: Regist ro d e Lectura de Datos del Puerto B. Se utiliza para leer datos de elementos externos al µC. Solamente se pueden leer los bits que han sido configurados como lectura en el DDRB. Bit 0x03 (0x23) Read/Write Initial Value
7 PB7 R/W N/A
6 PB6 R/W N/A
5 PB5 R/W N/A
4 PB4 R/W N/A
3 PB3 R/W N/A
2 PB2 R/W N/A
1 PB1 R/W N/A
0 PB0 R/W N/A
DDRB: Registro de Configuración de Dirección de Datos del Puerto B. Se utiliza para configurar cada una de las terminales del puerto del µC. Si se escribe un ‘1’, la terminal se configura como salida. El ‘0’ configura la terminal como entrada. Por ejemplo, si en el bit 6 se escribe un ‘1’ y el resto permanece en ‘0’, la terminal 6 del puerto B (PB6) va a funcionar como salida de datos y solamente se puede leer su valor a través del PINB. El resto funciona como entrada de datos. Bit 0x04 (0x24) Read/Write Initial Value
7 PB7 R/W 0
6 PB6 R/W 0
5 PB5 R/W 0
4 PB4 R/W 0
3 PB3 R/W 0
2 PB2 R/W 0
1 PB1 R/W 0
0 PB0 R/W 0
PORTB: Registr o d e Salida d e Datos del Puerto B. Se utiliza para escribir datos al exterior del µC. La escritura de bits funciona solamente con aquellos que fueron configurados como salidas en el DDRB. Bit 0x05 (0x25) Read/Write Initial Value
7 PB7 R/W 0
6 PB6 R/W 0
5 PB5 R/W 0
4 PB4 R/W 0
3 PB3 R/W 0
2 PB2 R/W 0
1 PB1 R/W 0
0 PB0 R/W 0
3 PC3 R/W N/A
2 PC2 R/W N/A
1 PC1 R/W N/A
0 PC0 R/W N/A
1 PC1 R/W 0
0 PC0 R/W 0
PINC: Registro de Lectura de Datos del Puerto C. Bit 0x06 (0x26) Read/Write Initial Value
7 PC7 R/W N/A
6 PC6 R/W N/A
5 PC5 R/W N/A
4 PC4 R/W N/A
DDRC: Registro de Configur ación d e Dirección de Datos del Puerto C. Bit 0x07 (0x27) Read/Write Initial Value
7 PC7 R/W 0
6 PC6 R/W 0
5 PC5 R/W 0
4 PC4 R/W 0
7
3 PC3 R/W 0
2 PC2 R/W 0
Práctica 1: Introducción General a los Microcontroladores
PORTC: Registro de Salida de Datos del Puerto C. Bit 0x08 (0x28) Read/Write Initial Value
7 PC7 R/W 0
6 PC6 R/W 0
5 PC5 R/W 0
4 PC4 R/W 0
3 PC3 R/W 0
2 PC2 R/W 0
1 PC1 R/W 0
0 PC0 R/W 0
3 PD3 R/W N/A
2 PD2 R/W N/A
1 PD1 R/W N/A
0 PD0 R/W N/A
PIND: Registro de Lectura de Datos del Puerto D. Bit 0x09 (0x29) Read/Write Initial Value
7 PD7 R/W N/A
6 PD6 R/W N/A
5 PD5 R/W N/A
4 PD4 R/W N/A
DDRD: Registro de Configur ación d e Dirección de Datos del Puerto D. Bit 0x0A (0x2A) Read/Write Initial Value
7 PD7 R/W 0
6 PD6 R/W 0
5 PD5 R/W 0
4 PD4 R/W 0
3 PD3 R/W 0
2 PD2 R/W 0
1 PD1 R/W 0
0 PD0 R/W 0
3 PD3 R/W 0
2 PD2 R/W 0
1 PD1 R/W 0
0 PD0 R/W 0
PORTD: Registro de Salida de Datos del Puerto D. Bit 0x0B (0x2B) Read/Write Initial Value
7 PD7 R/W 0
6 PD6 R/W 0
5 PD5 R/W 0
4 PD4 R/W 0
1.3 DESARROLLO: 1.3.1 Implemente el siguiente circuito.
8
Práctica 1: Introducción General a los Microcontroladores
1.3.2 Programe el microcontrolador utilizando el siguiente código, para leer el dato digital de los 6 interruptores conectados al Puerto D, y el valor digital se debe exhibir en los led’s conectados al Puerto C #i ncl ude
voi d Por t s_Set up( ) ; / / Pr ot ot i po de l a f unci ón par a que pueda / / ser ut i l i zada en cual qui er par t e del códi go. voi d Por t s_Set up( ) / / Funci ón que def i ne l a conf i gur aci ón de l os puer t os { DDRD = 0x00; / / Especi f i camos el Puer t o D como Ent r ada DDRC = 0xFF; / / Especi f i camos el Puer t o C como Sal i da } i nt mai n( voi d) { Por t s_Set up( ) ; / / Mandamos l l amar l a f unci ón Por t s_Set up( ) whi l e( 1) { PORTC = PI ND; / / El Puer t o D es l ei do y despl egado a t r avés del Puert o C } }
1.3.3 Arme el siguiente circuito.
1.3.4 Utilice el siguiente código para programar el microcontrolador. Se debe mostrar un contador binario. 9
Práctica 1: Introducción General a los Microcontroladores / / Est e pr ogr ama i mpl ement a l a f unci ón de i ncr ement ar un puer t o y despl egar di cho / / val or por un per i odo de t i empo de 200ms # def i ne F_CPU 11059200 / / Especi f i camos l a f r ecuenci a del cr i st al que será / / ut i l i z ado par a cal c ul ar el del ay en l a l i br e r í a del ay. h #i ncl ude #i ncl ude / / Li br er í a del ay. h par a col ocar r et ardos en ms voi d Por t s_Set up( ) ; voi d Por t s_set up( ) { DDRC = 0xFF; / / Col ocamos t odo el puer t o de Sal i da } i nt mai n( voi d) { Por t s_set up( ) ; whi l e( 1) { _del ay_ms( 200) ; PORTC++;
/ / Esper a 200 ms / / Despl i ega el dat o en el Puert o C e i ncrement a el puert o / / C después de despl egar l o
} }
1.3.5 Implemente el siguiente circuito, el cual representa el funcionamiento de un semáforo.
1.3.6 Programe al microcontrolador con el siguiente código. #def i ne F_CPU 14745600 #i ncl ude 10
Práctica 1: Introducción General a los Microcontroladores
#i ncl ude voi d por t s_set up( ) ; voi d por t s_set up( ) { DDRC = 0xFF; PORTC = 0x00; } i nt mai n( voi d) { por t s_set up( ) ; whi l e( 1) { PORTC = 0x21; _del ay_ms( 8000) ; PORTC = 0x22; _del ay_ms( 2000) ; PORTC = 0xC; _del ay_ms( 8000) ; PORTC = 0x14; _del ay_ms( 2000) ; } }
1.3.7 Implemente el siguiente circuito, para controlar el arranque de un motor de corriente directa. Se omite las conexiones de alimentaciones y del cristal, para hacer más simple el diagrama, si embargo, no olvide conectar esas etapas. Utilice un motor que consuma menos de 500 mA de corriente. Vm es el voltaje de alimentación del motor.
11
Práctica 1: Introducción General a los Microcontroladores
1.3.8 Utilice el siguiente código para programar el microcontrolador. #def i ne F_CPU 14745600 #i ncl ude #i ncl ude voi d por t s_set up( ) ; voi d por t s_set up( ) { DDRC = 0xFF; PORTC = 0x00; } i nt mai n( voi d) { por t s_set up( ) ; whi l e( 1) { PORTC = 0x01; _del ay_ms( 2000) ; PORTC = 0x00; _del ay_ms( 2000) ; } }
1.3.9 Modifique el ejemplo del semáforo para controlar 3 semáforos y un semáforo peatonal. 1.3.10 Ahora, cambie el motor por un relevador, y modifique el código y el hardware, para encender un foco de 120 Vac, cuando se detecte la falta de luz ambiental. Se recomienda utilizar una fotoresistencia. 1.3.11 En base a los ejercicios de los puntos 1 a 3, desarrolle los siguientes ejercicios: a. Genere la siguiente secuencia en el puerto C: 000001, 000010, 000100, 001000, 010000, 100000 y se repite. b. Modifique la secuencia del inciso b, para que el desplazamiento del 1 sea en las dos direcciones, es decir: 000001, 000010, 000100, 001000, 010000, 100000, 010000, 001000, 000100, 000010, y se repite la secuencia. c. Implemente un contador del 0 al 9 en un exhibidor de 7 segmentos. d. Modifique el contador, para que una vez que llegue a 10, comience a contar descendente. Mientras la cuenta desciende el motor debe estar encendido. Cuando la cuenta llega a cero, se apaga el motor y comienza a contar ascendente. 1.3.12 Modifique el circuito del microcontrolador para controlar el sentido de giro de un motor de CD. 1.3.13 En base al ejercicio 5a y 5b, implemente un circuito para controlar el giro de un motor a pasos unipolar. 1.3.14 En base al ejercicio 5a y 5b, implemente un circuito para controlar el giro de un motor a pasos bipolar. 1.4 Actividades Ad icio nales. 1. Haga una tabla comparativa de las principales características entre el µC ATMega328P, y el PIC16F873. 12
Práctica 1: Introducción General a los Microcontroladores
2. Muestre y compare el mapa de memoria de los µC’s del punto 1. 3. En dos tablas, muestre una descripción de las terminales de los µC’s del punto 1. 4. Investigue un código ejemplo en lenguaje ensamblador para los µC’s del punto 1, y explique el funcionamiento de cada instrucción. No menos de 20 líneas.
13
PRÁCTICA 2. Manejo de interr upc ion es externas INT0 e INT1. 2.1 OBJETIVO: Aprender a utilizar las interrupciones externas INT0 e INT1 en el microcontrolador, y utilizarlas en tareas relacionadas con aplicaciones de control. 2.2 MARCO TEÓRICO. Las interrupciones son eventos que se generan de manera externa o interna al microcontrolador, y tienen la característica de “interrumpir” cualquier tarea que en ese momento esté desarrollando el microcontrolador, para que atienda otra tarea diferente y una vez que termina de atender dicha tarea, “retorna” a la línea de programa donde se encontraba cuando se generó la interrupción, para continuar con la tarea que dejó pendiente. Cuando una interrupción se genera, el microcontrolador lee una dirección de memoria relacionada con la fuente de interrupción, la cual se ubica en una dirección específica del mapa de memoria de programa (vector de interrupción) del microcontrolador. La tabla siguiente muestra los vectores de interrupción, para el microcontrolador Atmega328P.
Práctica 2: Manejo de interrupciones externas INT0 e INT1
Los principales registros relacionados con la configuración de las interrupciones son los siguientes: 2.2.1 Registr o de Control de Interrupcio nes Externas – EICRA Este registro se utiliza para configurar el funcionamiento de las interrupciones externas, relacionadas con las terminales INT1 e INT0. Bit (0x69) Read/Write Initial Value
7 -
6 -
5 -
4 -
3 ISC11 R/W 0
2 ISC10 R/W 0
1 ISC01 R/W 0
0 ISC00 R/W 0
• Bit 3:0 – ISC11:ISC10 Control de Sensor de Interrupción Estos bits sirven para configurar el nivel y borde de activación de las interrupciones INT1 e INT0, de acuerdo a la siguiente tabla. ISC11 0 0 1 1
ISC10 0 1 0 1
ISC01 0 0 1 1 -
ISC00 0 1 0 1 -
Descripción El nivel bajo de la terminal INT0 genera una petición de interrupción Cualquier cambio lógico en INT0 genera una petición de interrupción El borde de bajada en INT0 genera una petición de interrupción El borde de subida en INT0 genera una petición de interrupción El nivel bajo de la terminal INT1 genera una petición de interrupción Cualquier cambio lógico en INT1 genera una petición de interrupción El borde de bajada en INT1 genera una petición de interrupción El borde de subida en INT1 genera una petición de interrupción
2.2.2 Registr o General de Interru pci ones Extern as – GICR Este registro es utilizado para habilitar y deshabilitar (apagar y encender) las interrupciones externas INT0 e INT1. Bit Read/Write Initial Value
7 INT1 R/W 0
6 INT0 R/W 0
5 -
4 -
3 -
2 -
1 -
0 -
• Bit 7:6 – Bits de habilitación de interru pcíon Estos bits sirven para habilitar las interrupciones externas. Si se escribe un ‘1’ lógico, se habilita la interrupción correspondiente, si se escribe un ‘0’, la interrupción queda deshabilitada. Observe la siguiente tabla. INT1 0 1 -
INT0 0 1
Descripc ión Interrupción 1 deshabilitada Interrupción 1 habilitada Interrupción 0 deshabilitada Interrupción 0 habilitada
2.2.3 Registr o General de Banderas de Interru pci ones Extern as – EIFR Este registro se relaciona con las banderas de interrupción. Cuando una bandera se pone en ‘1’ lógico, indica que se ha realizado una petición de interrupción en la terminal INT correspondiente. Mientras la, correspondiente a la interrupción INT1. Cuando la bandera se pone en ‘1’ y está 15
Práctica 2: Manejo de interrupciones externas INT0 e INT1
habilitada la interrupción correspondiente, entonces el microcontrolador atiende la interrupción. La bandera es automáticamente puesta en ‘0’ cuando la rutina de interrupción es ejecutada. Bit Read/Write Initial Value
7 INTF1 R/W 0
6 INTF0 R/W 0
5 -
4 -
3 -
2 -
1 -
0 -
• Bit 7:5 – Bits de habilitación de interru pcíon Estos bits sirven para habilitar las interrupciones externas. Si se escribe un ‘1’ lógico, se habilita la interrupción correspondiente, si se escribe un ‘0’, la interrupción queda deshabilitada. Observe la siguiente tabla. INT2 0 1 -
INT1 0 1 -
INT0 0 1
Descripc ión Interrupción 2 deshabilitada Interrupción 2 habilitada Interrupción 1 deshabilitada Interrupción 1 habilitada Interrupción 0 deshabilitada Interrupción 0 habilitada
2.3 DESARROLLO: 2.3.1 Implemente el siguiente circuito, para el manejo de las interrupciones INT0 e INT1.
2.3.2 Programe al microcontrolador con el siguiente código. / / Est e códi go consi st e en i ncr ement ar el puer t o C al act i var se l a i nt er r upci ón 0 y / / decr ement ar el puer t o C al act i var se l a i nt er r upci ón 1 #i ncl ude
16
Práctica 2: Manejo de interrupciones externas INT0 e INT1 #i ncl ude
/ / Li br er i a par a el manej o de I nt er r upci ones
voi d Por t s_Set up( ) ; / / Pr ot ot i po de l a f unci ón par a conf i gur ar puer t os voi d Ext er nal _I nt er r upt s_Set up( ) ; / / Pr ot ot i po par a conf i gur ar l as i nt er r upci ones voi d Por t s_Set up( ) { DDRD = 0x00; / / Se conf i gur a el puer t o D como ent r ada DDRC = 0xFF; / / Se conf i gur a el puer t o C como sal i da PORTC = 0x00; / / Li mpi amos el puer t o C } voi d Ext er nal _I nt er r upt s_Set up( ) { EI CRA = ( 1<
2.3.3 Arme el siguiente circuito, el cual utiliza señales acopladas ópticamente (optoacopladores). Considere que las tierras del motor son diferentes a las tierras del microcontrolador, esto quiere decir que la tierra del motor y del microcontrolador NO deben unirse. Escriba un programa que permita encender un motor cuando se active la interrupción INT1. Se debe apagar una vez que la misma interrupción se vuelve a activar. El otro motor debe controlarse utilizando la interrupción INT0. 17
Práctica 2: Manejo de interrupciones externas INT0 e INT1
2.3.4 Utilizando el mismo principio de señales aisladas ópticamente, investigue sobre un circuito que permita controlar el sentido de giro de un motor, ármelo y conéctelo en lugar de los dos motores del punto 3 de esta práctica. 2.3.5 Arme un circuito digital basado en el microcontrolador de forma que el funcionamiento sea el siguiente: a. Inicie el conteo en 0. b. Al activar la interrupción INT0, el contador comienza a contar automáticamente en forma ascendente, cada 250 ms. c. Al activar la interrupción INT1, el contador cambia de dirección de conteo, es decir, descendente, con el mismo intervalo de tiempo. Cada que se active INT1, se invierte el sentido de conteo. d. Al activar nuevamente la interrupción INT0, se detiene el conteo, sin perder la cuenta ni el sentido de cuenta. Para continuar el conteo, se debe volver a activar INT0. e. El conteo se debe mostrar en el exhibidor de 7 segmentos. 2.3.6 Arme un circuito que controle un motor a pasos unipolar, diseñe el programa y pruebe su funcionamiento. Si el motor consume más de 100 mA, utilice el pricipio de señales optoacopladas. 2.3.7 Arme un circuito que controle un motor a pasos bipolar, diseñe el programa y pruebe su funcionamiento. Si el motor consume más de 100 mA, utilice el principio de señales optoacopladas. 2.3.8 Modifique el ejercicio del semáforo, para que el semáforo peatonal se active únicamente por medio de interrupción. Es decir, el semáforo peatonal no se activa si no existe petición de un usuario.
18
PRÁCTICA 3. Manejo del Temporizador 3.1 OBJETIVO: Aprender a utilizar el temporizador como sistema de medición de tiempo, y utilizarlas en tareas de control de secuencias de tiempo. 3.2 MARCO TEÓRICO El microcontrolador de ATMega328P, cuenta con temporizadores de propósito general para la medición de tiempo, y puede usarse para medición de periodo de una señal, generación de Modulación en Ancho de Pulso (PWM), y generación periódica de interrupciones. La figura muestra un diagrama a bloques del temporizador/contador de 8 bit.
Los registros a utilizar en la configuración del temporizador son los siguientes: 3.2.1 Registr o de Contr ol A del Tempor izador / Contado r 1 – TCCR1A Bit Read/Write Initial Value
7 COM1A1 R/W 0
6 COM1A0 R/W 0
5 COM1B1 R/W 0
4 COM1B0 R/W 0
3 FOC1A W 0
2 FOC1B W 0
1 WGM11 R/W 0
0 WGM10 R/W 0
• Bit 7:6 – COM1A1:0: Compare Output Mode for Compare unit A • Bit 5:4 – COM1B1:0: Compare Output Mode for Compare unit B Los bits COM1A1:0 y COM1B1:0 son registros de control de las terminales de Comparación de Salida de OC1A y OC1B, respectivamente, y son las terminales 15 y 16, control the Output Compare pins (OC1A and OC1B respectively). Estos bits controlan el comportamiento de estas terminales. El comportamiento está definido por las siguientes tablas, dependiendo del modo en que se desea que funcione. El microcontrolador tiene tres modos para utilizar el comparador de salida, los cuales son
Práctica 3: Manejo del Temporizador
Modo Salida de Comparación, Modo PWM Rápido y PWM Corrección de Fase y Corrección de Fase y Frecuencia. Modo Salida de Comparación (Compare Output Mode) COM1A1/COM1B1 0
COM1A0/COM1B0 0
0
1
1
0
1
1
Descripc ión Operación normal del puerto. Entrada/Salida. Se invierte el estado lógico de la salida de la terminal, cuando se iguala la comparación OC1A/OC1B. La salida de la terminal se va a 0 lógico, cuando se iguala la comparación OC1A/OC1B. La salida de la terminal se va a 1 lógico, cuando se iguala la comparación OC1A/OC1B.
Modo Salida de Comparación, PWM Rápido COM1A1/COM1B1 0
COM1A0/COM1B0 0
0
1
1
0
1
1
Descripc ión Operación normal del puerto. Entrada/Salida. WGM13:0 = 15, Se invierte el estado lógico de la salida de la terminal OC1A cuando se iguala la comparación, y OC1B tiene su comportamiento normal como Entrada/Salida. Para todos los demás valores de WGM13:0, las terminales OC1A/OC1B tienen funcionamiento normal como E/S. La salida de la terminal OC1A/OC1B se va a 0 lógico, cuando la comparación se iguala, y se pone en uno en la cuenta más baja (BOTTOM). La salida de la terminal OC1A/OC1B se pone en 1 lógico, cuando se iguala la comparación, y se pone en 0 en la cuenta más baja (BOTTOM).
PWM Corrección de Fase y Corrección de Fase y Frecuencia COM1A1/COM1B1 0
COM1A0/COM1B0 0
0
1
1
0
1
1
Descri pci ón Operación normal del puerto. Entrada/Salida. WGM13:0 = 9 o 14, Se invierte el estado lógico de la salida de la terminal OC1A cuando se iguala la comparación, y OC1B tiene su comportamiento normal como Entrada/Salida. Para todos los demás valores de WGM13:0, las terminales OC1A/OC1B tienen funcionamiento normal como E/S. La salida de la terminal OC1A/OC1B se va a 0 lógico, cuando el conteo es ascendente. Se pone en 1 cuando el conteo es descendente. La salida de la terminal OC1A/OC1B se pone en 1 lógico, cuando se iguala la comparación y el conteo es ascendente, y se pone en 0 lógico si el conteo es descendente.
• Bit 3 – FOC1A: Force Output Compare for Compare uni t A • Bit 2 – FOC1B: Force Output Compare for Compare uni t B Los bits FOC1A y FOC1B se utilizan únicamente cuando los bits WGM13:0 desactivan el modo PWM. Cuando no se use el modo PWM, estos bits deben valer 0 lógico. Cuando se escribe un 1 al bit FOC1A/FOC1B se forza una igualación de comparación inmediata en la unidad de Generación de Forma de Onda. Los bits OC1A/OC1B cambian acorde con la configuración del bit COM1x1:0. Estos bit se leen como 0. • Bit 1:0 – WGM11:10: Modo de Generación de Forma de Onda (WGM, Waveform Generation Mode) Se combinan con los bits WGM13:12 del registro TCCR1B, y sirven para controlar la secuencia del contador, la fuente del máximo valor de la cuenta (TOP), y el tipo de generación de forma de onda a ser usada. En la tabla siguiente se observa las distintas combinaciones. 20
Práctica 3: Manejo del Temporizador Mode
WGM13
WGM12 (CTC1)
WGM11 (PWM11)
WGM10 (PWM10)
Modo de Operación Temporizador/Contador
TOP 0xFFFF 0x00FF 0x01FF 0x03FF
Cambio en OCR1x Inmediato TOP TOP TOP
Encendido bandera TOV1 MAX BOTTOM BOTTOM BOTTOM
0 1 2 3
0 0 0 0
0 0 0 0
0 0 1 1
0 1 0 1
4 5 6 7 8
0 0 0 0 1
1 1 1 1 0
0 0 1 1 0
0 1 0 1 0
9
1
0
0
1
10 11 12 13 14 15
1 1 1 1 1 1
0 0 1 1 1 1
1 1 0 0 1 1
0 1 0 1 0 1
Normal PWM, fase corregida, 8 bit PWM, fase corregida, 9 bit PWM, fase corregida, 10 bit CTC Rápido PWM, 8 bit Rápido PWM, 9 bit Rápido PWM, 10 bit PWM, corrección de fase y frecuencia PWM, corrección de fase y frecuencia PWM, corrección de fase PWM, corrección de fase CTC Reservado Rápido PWM Rápido PWM
OCR1A 0x00FF 0x01FF 0x03FF ICR1
Inmediato BOTTOM BOTTOM BOTTOM BOTTOM
MAX TOP TOP TOP BOTTOM
OCR1A
BOTTOM
BOTTOM
ICR1 OCR1A ICR1 ICR1 OCR1A
TOP TOP Inmediato BOTTOM BOTTOM
BOTTOM BOTTOM MAX TOP TOP
3.2.2 Registr o de Contr ol B del Tempor izador / Contado r 1 – TCCR1B Bit Read/Write Initial Value
7 ICNC1 R/W 0
6 ICES1 R/W 0
5 R 0
4 WGM13 R/W 0
3 WGM12 R/W 0
2 CS12 R/W 0
1 CS11 R/W 0
0 CS10 R/W 0
• Bit 7 – ICNC1: Cancelador de ruido de entrada (Input Capture Noise Canceler) ICNC1 = 1 : Cancelador de Ruido activado. ICNC1 = 0 : Cancelador de Ruido desactivado. • Bit 6 – ICES1: Selección de Borde de Captura de Entrada (Input Capture Edge Select) ICES1 = 0 : Borde negativo ICES1 = 1 : Borde positivo • Bit 5 – Bit Reservado No accesible al usuario • Bit 4:3 – WGM13:2: Modo de Generación de Forma de Onda (Waveform Generati on Mod e) Ver la descripción del registro TCCR1A. • Bit 2:0 – CS12:10: Selección de reloj (Clock Select) Estos 3 bit de selección se utilizan para elegir la fuente de reloj a utilizar por el Temporizador / Contador, de acuerdo a la siguiente tabla. CS12 0 0 0 0 1 1 1 1
CS11 0 0 1 1 0 0 1 1
CS10 0 1 0 1 0 1 0 1
Descripción Temporizador/Contador deshabilitado CLK/1 CLK/8 CLK/64 CLK/256 CLK/1024 Fuente de reloj externa en terminal T1, borde negativo. Fuente de reloj externa en terminal T1, borde positivo.
21
Práctica 3: Manejo del Temporizador
3.2.3 Registr o TCNT1 Tempori zador/Contado r Registro utilizado para llevar la cuenta del temporizador, tomando como base la señal de reloj configurada en CS1. Bit TCNT1H TCNT1L Read/Write Initial Value
7
6
5
R/W 0
R/W 0
R/W 0
4 3 TCNT1[15:8] TCNT1[7:0] R/W R/W 0 0
2
1
0
R/W 0
R/W 0
R/W 0
3.2.4 Registr o de Comparaci ón de Salida 1 A – OCR1A Registro utilizado para realizar la comparación con el contenido del registro TCNT1, y cuando ambos registros se igualan, generar la salida configurada en el registro TCCR1A. Bit OCR1AH OCR1AL Read/Write Initial Value
7
6
5
R/W 0
R/W 0
R/W 0
4 3 OCR1A[15:8] OCR1A[7:0] R/W R/W 0 0
2
1
0
R/W 0
R/W 0
R/W 0
3.2.5 Registr o de Comparaci ón de Salida 1 B – OCR1B Registro utilizado para realizar la comparación con el contenido del registro TCNT1, y cuando ambos registros se igualan, generar la salida configurada en el registro TCCR1B. Bit OCR1AH OCR1AL Read/Write Initial Value
7
6
5
R/W 0
R/W 0
R/W 0
4 3 OCR1B[15:8] OCR1B[7:0] R/W R/W 0 0
2
1
0
R/W 0
R/W 0
R/W 0
3.2.6 Registr o de Captura de Entrada – ICR1 Cuando se activa la terminal ICP1 del microcontrolador, el valor del registro TCNT1 pasa a este registro. Este registro puede ser utilizado para la configuración del valor TOP del contador. Bit ICR1H ICR1L Read/Write Initial Value
7
6
5
R/W 0
R/W 0
R/W 0
4 3 ICR1[15:8] ICR1[7:0] R/W R/W 0 0
2
1
0
R/W 0
R/W 0
R/W 0
3.3 DESARROLLO. 3.3.1 Implemente el siguiente circuito, el cual se utiliza para controlar un servomotor, utilizando la técnica de PWM. Observe la señal PWM en un osciloscopio para que se reporte la forma de onda.
22
Práctica 3: Manejo del Temporizador
3.3.2 Programe al microcontrolador con el siguiente código, y compruebe el funcionamiento. / / Est e códi go consi st e en gener ar PWM Rápi do a 50Hz par a el cont r ol de un / / ser vomot or a par t i r del Ti mer 1 #i ncl ude voi d Por t s_Set up( ) ; voi d Ti mer 1_Set up( ) ; voi d Ti mer 1_St ar t ( ) ;
/ / Pr ot ot i po / / ser usado / / Pr ot ot i po / / ser usado / / Pr ot ot i po / / ser usado
f unci ón de conf i gur aci ón de puer t os par a en cual qui er par t e del códi go conf i gur aci ón de t empor i zador 1 par a en cual qui er par t e del códi go ar r anque del t empor i zador 1 par a en cual qui er par t e del códi go
voi d Por t s_Set up( ) { DDRB = 0x02; / / Se conf i gur a el pi n OC1A como sal i da par a el PWM r ápi do } voi d Ti mer 1_Set up( ) { / / PWM Rapi do No I nver so, OC1B desconect ado, / / TOP especi f i cado por el r egi st r o I CR1 TCCR1A = ( 1<
Práctica 3: Manejo del Temporizador
/ / For ce Out put Compar e = deshabi l i t ados TCCR1C = ( 0<
/ / Se l l ama l a f unci ón de conf i gur aci ón de l os puer t os / / Se l l ama l a f unci ón de conf i gur aci ón del Ti mer 1 / / Se enci ende el Ti mer 1 / / Ci cl o ut i l a 25%
whi l e( 1) { } }
3.3.3 Modifique el código, para controlar la velocidad de un motor a pasos unipolar, utilizando el temporizador en lugar de la función delay. 3.3.4 Modifique el código para controlar la velocidad y dirección de dos motores de DC, utilizando las interrupciones para el arranque y paro de los motores. El funcionamiento de cada motor debe ser de manera independiente. 3.3.5 Utilizando el modo de captura de entrada, realice un programa para el microcontrolador para medir el tiempo de ocurrencia entre dos eventos. Lea la sección INPUT CAPTURE UNIT, página 117, de la hoja de datos del Atmega328P. Así mismo, la sección de registros a partir de la página 131. 3.3.6 Investigue que es un encoder y los tipos de encoder que existen, así como su principio de funcionamiento. 3.3.7 Implemente un programa que maneje un encoder incremental/decremental.0
24
PRÁCTICA 4. Conversión Analógi ca/Digit al (ADC) 4.1 OBJETIVO Aprender a configurar los registros del convertidor analógico-digital, para digitalizar señales analógicas. 4.2 MARCO TEÓRICO El convertidor Analógico/Digital (ADC) del microcontrolador ATMega328P, tiene las siguientes características importantes. • • • • • • • • • • • • •
Resolución de 10 bit Presición absoluta de ±2 LSB Tiempo de conversión de 13 μs a 260 μs Velocidad de conversión de 15 kSPS a máxima resolución 8 canales sencillos de entrada multiplexado 7 Differential Input Channels 2 Differential Input Channels with Optional Gain of 10x and 200x Intervalo del voltaje de entrada analógico de 0 a VCC Referencia de voltaje seleccionable de 2.56V Modo de carrera libre o conversión sencilla Inicio de conversión ADC por disparo automático o por fuentes de interrupción Interrupción de conversión ADC completa Cancelador de ruido en modo de suspensión
La siguiente figura muestra un diagrama a bloques del sistema de ADC del dispositivo ATMega328P.
Práctica 3: Manejo del Temporizador
Los registros involucrados en las conversiones ADC se listan y explican a continuación. 4.2.1 Registr o de Selector del Multi plexo r – ADMUX Bit Read/Write Initial Value
7 REFS1 R/W 0
6 REFS0 R/W 0
5 ADLAR R 0
4 MUX4 R/W 0
3 MUX3 R/W 0
2 MUX2 R/W 0
1 MUX1 R/W 0
0 MUX0 R/W 0
• Bit 7:6 – REFS1:0: Bit de selección de voltaje de referencia REFS1 0 0 1 1
REFS0 0 1 0 1
VOLTAJ E DE REFERENCIA SELECCIONADO Voltaje de referencia interno apagado, se usa AREF. Terminal AVCC conectada a la terminal AREF con un capacitor externo. Reservado Se usa el Voltaje de referencia interno con capacitor externo a la terminal AREF.
• Bit 5 – A DLAR: Resultado d el ADC ajustado a la izquierda
� ∶ ∶ ℎ =
1
0
• Bits 4:0 – MUX4:0: Bit de selección de c anal analógic o y ganancia MUX4..0 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110
Entrada Sencilla
Entrada Diferencial Positiva
Entrada Diferencial Negativa
Ganancia
ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC6 ADC7
01111
ADC0 ADC1 ADC0 ADC1 ADC2 ADC3 ADC2
ADC0 ADC0 ADC0 ADC0 ADC2 ADC2 ADC2
ADC3
ADC2
10X 200X 10X 200X
MUX4..0 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111
Entrada Sencilla
Entrada Diferencial Positiva ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC6 ADC7 ADC0 ADC1 ADC2 ADC3 ADC4 ADC5
Entrada Diferencial Negativa ADC1 ADC1 ADC1 ADC1 ADC1 ADC1 ADC1 ADC1 ADC2 ADC2 ADC2 ADC2 ADC2 ADC2
Ganancia
1X
1.22V (V BG ) 0V (GND)
4.2.2 Registr o de Contr ol y Estado – ADCSRA Bit Read/Write Initial Value
7 ADEN R/W 0
6 ADSC R/W 0
5 ADATE R 0
4 ADIF R/W 0
3 ADIE R/W 0
• Bit 7 – ADEN: Habili tar ADC
ℎ ∶ ∶ ℎ =
1 0
26
2 ADPS2 R/W 0
1 ADPS1 R/W 0
0 ADPS0 R/W 0
Práctica 3: Manejo del Temporizador • Bit 6 – A DSC: Inicio d e Conversión del ADC
∶∶ =
1
ó
0
ó
El bit ADSC se lee como ‘1’ lógico mientras se está convirtiendo un dato, y cuando termina la convesión, automáticamente retorna a ‘0’ lógico. • Bit 5 – ADATE: Habilitación d el Autodi sparo del ADC
− ℎ � ∶ ∶ − ℎ =
1
0
El ADC comenzará la conversión en el borde positivo de la señal de disparo seleccionada. La fuente de disparo es seleccionada configurando los bit ADTS del registro ADCSRB. • Bit 4 – ADIF: Bandera de Interrupción del ADC Interrupt
Este bit se pone en 1 cuando el ADC ha realizado una conversión completa, y el registro de datos ha sido actualizado. Se borra escribiendo un 1 lógico en la bandera, o por hardware cuando se ejectua una interrupción de conversión completa. • Bit 3 – ADIE: ADC Interrupt Enable
Cuando se escribe un 1 a este bit I de SREG está en 1, se activa la Interrupción de Conversión Completa del ADC. • Bits 2:0 – ADPS2:0: Bits de selección del Preescalador del ADC
Estos bits determinan el factor de división entre la frecuencia del cristal y el reloj de entrada al ADC. ADSP2
ADSP1
ADSP0
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
Factor de división 2 2 4 8 16 32 64 128
4.2.3 Registr o de Contr ol y Estado B – ADCSRB Bit Read/Write Initial Value
7 R/W 0
6 ACME R/W 0
5
4
3
R/W 0
R 0
R/W 0
2 ADTS2 R/W 0
1 ADTS1 R/W 0
0 ADTS0 R/W 0
Los bits 7, 5,4 y 3 no se utilizan. • Bit 6 – ACME: Si se configura con un 1 lógico, indica si el ADC va a trabajar con el comparador analógico. Si no se utiliza, entonces se pone en 0 lógico. • Bit 2:0 – ADTS2:0: Configuración de la Fuente de Disparo Automático del ADC
Se utilizan para configurar la fuente de la señal de auto disparo. 27
Práctica 3: Manejo del Temporizador ADTS2 0 0 0 0 1 1 1 1
ADTS1 0 0 1 1 0 0 1 1
ADTS0 0 1 0 1 0 1 0 1
FUENTE DE DISPARO Modo de carrera libre Comparador analógico Interrupción externa 0 Igualación de comparación Temporizador/Comparador 0 Sobreflujo del Temporizador/Comparador 0 Igualación de comparación Temporizador/Comparador 1 Sobreflujo del Temporizador/Comparador 1 Captura de eventos del Temporizador/Comparador 1
4.2.4 Registr o de Contr ol – DIDR0 Bit Read/Write Initial Value
7
6
R/W 0
R/W 0
5 ADC5D R/W 0
4 ADC4D R/W 0
3 ADC3D R/W 0
2 ADC2D R/W 0
1 ADC1D R/W 0
0 ADC0D R/W 0
• Bit 5:0 – ADC5:0D: Se configura la terminal del microcontrolador, que va a ser utilizada como entrada analógica, para que sólo funcione con el ADC, y que la parte interna de la terminal que tiene que ver con el comportamiento digital no se vea afectado.
4.2.5 Registr o de Datos del ADC ADLAR = 0 Bit ADCH ADCL Read/Write Initial Value
15
14
13
12
11
10
ADC7 7 R 0
ADC6 6 R 0
ADC5 5 R 0
ADC4 4 R 0
ADC3 3 R 0
ADC2 2 R 0
9 ADC9 ADC1 1 R 0
8 ADC8 ADC0 0 R 0
ADLAR = 1 Bit ADCH ADCL Read/Write Initial Value
15 ADC9 ADC1 7 R 0
14 ADC8 ADC0 6 R 0
13 ADC7
12 ADC6
11 ADC5
10 ADC4
9 ADC3
8 ADC2
5 R 0
4 R 0
3 R 0
2 R 0
1 R 0
0 R 0
4.3 DESARROLLO. 4.3.1 Escriba y analice el siguiente código, el cual es para utilizar el convertidor analógico-digital, y conteste las preguntas siguientes: a. ¿Cuántos canales de conversión Analógico-Digital tiene el microcotnrolador? b. ¿Cuál es el canal que se va a muestrear? c. ¿Cuál es el número de bit de conversión? d. ¿Cuál es la frecuencia de muestreo? e. ¿Qué puerto es el que se utiliza para convertir? f. ¿En qué puertos se muestran los resultados? g. ¿Cuál es el valor del voltaje de referencia? h. Coloque comentarios al código que explique la configuración que se está utilizando para el microcontrolador. 28
Práctica 3: Manejo del Temporizador
#i ncl ude #i ncl ude voi d Por t s_Set up( ) ; voi d ADC_Set up( ) ; voi d Por t s_Set up( ) { DDRD = 0xFF; DDRC = 0x03; } voi d ADC_Set up( ) { ADMUX = ( 0<
4.3.2 Conecte un potenciómetro en configuración de divisor de tensión en el canal de conversión del convertidor, y obtenga el valor digital correspondiente a cada uno de los siguientes voltajes. i. 3.3V j. 0.5V k. 1.2V l. 4.5V m. 5V 4.3.3 Compruebe que el valor digital obtenido corresponde a los voltajes de entrada del punto 2.
29
Práctica 3: Manejo del Temporizador
4.3.4 Utilizando el código de la práctica 3 y de la práctica 4, realice un programa que permita variar el ciclo de trabajo de una señal PWM, de acuerdo al valor analógico que entra al convertidor, utilizando un potenciómetro en divisor de tensión. 4.3.5 Anote sus conclusiones.
30
PRÁCTICA 5.Comunicación Serial 5.1 OBJETIVO. Desarrollar aplicaciones para el microcontrolador que sirva para realizar comunicación entre dos dispositivos, para transferencia de datos. 5.2 MARCO TEÓRICO La comunicación serial se utiliza para la transferencia de datos entre el microcontrolador y un dispositivo externo, como es una computadora personal, un módulo WiFi, módulo Bluetooth, entre otros muchos. Los registros del microcontrolador Atmega328P, se muestran a continuación. 5.2.1 Registro de Datos E/S del USART – UDR Bit UDR Lectura UDR Write Read/Write Initial Value
7 RxB 7 TxB 7 R/W 0
6 RxB 6 TxB 6 R/W 0
5 RxB 5 TxB 5 R/W 0
4 RxB 4 TxB 4 R/W 0
3 RxB 3 TxB 3 R/W 0
2 RxB 2 TxB 2 R/W 0
1 RxB 1 TxB 1 R/W 0
0 RxB 0 TxB 0 R/W 0
El Registro UDR se utiliza para el envío/recepción de datos seriales. Cuando se reciben datos, el dato recibido está disponible en los bits RxB, y cuando se transmite se escribe en el registro TxB. Aún cuando el registro UDR se llama de la misma manera, está configurado para realizar la doble función de escritura/lectura. 5.2.2 Registr o de Contr ol de Datos del USART – UCSRA Bit Read/Write Initial Value
7 RXC R 0
6 TXC R/W 0
5 UDRE R 1
4 FE R 0
3 DOR R 0
2 PE R 0
1 U2X R/W 0
0 MPCM R/W 0
• Bit 7 – RXC: Recepció n Compl eta del USART
La bandera RXC se pone en 1 cuando se ha terminado de recibir un dato, y se pone en 0 cuando el bufer de recepción está vacío. Si el receptor está deshabilitado, el bufer de recepción se vacía y el bit RXC se pone en 0. La bandera RXC puede ser usada para habilitar una interrupción por recepción completa (RXCIE). • Bit 6 – TXC: Transmisión Completa del USART
La bandera TXC se pone en 1 cuando se ha terminado de enviar un dato, y no existen más datos en el bufer para ser transmitido. La bandera TXC se limpia automáticamente cuando se genera una interrupción por recepción completa. En caso de no usar interrupción, se limpia escribiendo un 0 al bit TXC. Esta bandera puede provocar una interrupción por transmisión completa (TXCIE). • Bit 5 – UDRE: Registro d e Datos Vacío del USART
La bandera UDRE indica si el bufer de transmisión está listo para recibir nuevos datos. Si UDRE está en 1, el bufer está vacío, y puede recibir datos para trasnmitir. La bandera UDRE puede generar una interrupción de registro de datos vacío (UDRIE).
Práctica 3: Manejo del Temporizador • Bit 4 – FE: Error de Trama
Este bit se pone en 1 si el siguiente carácter recibido tiene un error de trama. Este error consiste en leer el bit de paro como un 0 en lugar de leerse como un 1. Este bit es válido hasta que es leído el dato recibido. • Bit 3 – DOR: Sobre-escrit ura de Datos
Se pone en 1 cuando el bufer de recepción está lleno y se detecta un nuevo bit de inicio en la recepción. Este valor es válido hasta que se lee el dato recibido (UDR). • Bit 2 – PE: Error de Paridad
Este bit se pone en 1 si el siguiente carácter recibido tiene un error de paridad, y el bit de habilitación de paridad está activado. • Bit 1 – U2X: Doble velocidad de transmi sión del USART.
Este bit solamente tiene efecto en configuración asíncrona. Se escribe un 0 para modo síncrono. Escribiendo un 1 en este bit, el divisor de frecuencia del generador de velocidad utiliza el valor de 8 en lugar de 16, por lo que la velocidad de transmisión puede ser el doble. • Bit 0 – MPCM: Modo de comu nicación multi-procesador
Cuando el bit MPCM es escrito a 1, todas las tramas recibidas por el USART que no contienen la información de dirección, son ignoradas. En 0 se deshabilita el modo. 5.2.3 Registr o B de Contr ol y Estado del USART – UCSRB Bit Read/Write Initial Value
7 RXCIE R/W 0
6 TXCIE R/W 0
5 UDRIE R/W 0
4 RXEN R/W 0
3 TXEN R/W 0
2 UCSZ2 R/W 0
1 RxB8 R 0
0 TxB8 R/W 0
• Bit 7 – RXCIE: Habilitación de Interrupción de Recepción Completa.
Se escribe un 1 para habilitar la interrupción cuando se ha terminado de recibir un dato. Con el 0 está deshabilitada. • Bit 6 – TXCIE: Habilitación de Interrupci ón de Transmisi ón Compl eta.
Se escribe un 1 para habilitar la interrupción cuando se ha terminado de enviar un dato. Con el 0 está deshabilitada. • Bit 5 – UDRIE: Habil itaci ón d e Registro d e Dato Vacío.
Se escribe un 1 para habilitar la interrupción cuando el bufer de transmisión se ha quedado vacío. Con el 0 está deshabilitado. • Bit 4 – RXEN: Habilitación de Recepción .
Se escribe un 1 para habilitar la recepción de datos seriales. Con el 0 está deshabilitado. • Bit 3 – TXEN: Habilitación de Transmisión. 32
Práctica 3: Manejo del Temporizador
Se escribe un 1 para habilitar la transmisión de datos seriales. Con el 0 está deshabilitado. • Bit 2 – UCSZ2: Tamaño de bits de Transmisión.
El bit UCSZ2 se combina con los bits UCSZ1:0 para establecer el tamaño de bits de la trama de datos de transmisión, y es el mismo para transmisión y recepción. • Bit 1 – RXB8: Bit 8 de la Recepción d e Datos.
Se utiliza como el noveno bit de datos de recepción cuando se configura un tamaño de trama de 9 bits. • Bit 0 – TXB8: Bit 8 de la Transmisión d e Datos.
Se utiliza como el noveno bit de datos de transmisión cuando se configura un tamaño de trama de 9 bits. 5.2.4 Registr o C de Cont rol y Estado del USART – UCSRC Bit Read/Write Initial Value
7 URSEL R/W 1
6 UMSEL R/W 0
5 UPM1 R/W 0
4 UPM0 R/W 0
3 USBS R/W 0
2 UCSZ1 R/W 1
1 UCSZ0 R 1
0 UCPOL R/W 0
• Bit 7 – URSEL: Habilitación de Interrupción de Recepción Completa.
Se escribe un 1 para habilitar la interrupción cuando se ha terminado de recibir un dato. Con el 0 está deshabilitada. 5.2.5 Registr o de Confi gur ación de Velocidad del USART – UCSRC Este registro se utiliza para configurar la velocidad en Baudios, de la comunicación serial. Es importante considerar que este valor depende de la frecuencia de reloj con la que se alimenta el microcontrolador, como se puede ver en las siguientes tablas. Por lo tanto, dependiendo del valor del cristal, se debe determinar el valor del registro UBRR. Baudios (bps) 2400 4800 9600 14.4K 19.2K 28.8K 38.4K 57.6K 76.8K 115.2K 230.4K 250K
1.0000 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 25 0.2% 51 0.2% 12 0.2% 25 0.2% 6 -7.0% 12 0.2% 3 8.5% 8 -3.5% 2 8.5% 6 -7.0% 1 8.5% 3 8.5% 1 -18.6% 2 8.5% 0 8.5% 1 8.5% 1 -18.6% 0 8.5% -
1.8432 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 47 0.0% 95 0.0% 23 0.0% 47 0.0% 11 0.0% 23 0.0% 7 0.0% 15 0.0% 5 0.0% 11 0.0% 3 0.0% 7 0.0% 2 0.0% 5 0.0% 1 0.0% 3 0.0% 1 -25.0% 2 0.0% 0 0.0% 1 0.0% 0 0.0% -
33
2.0000 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 51 0.2% 103 0.2% 25 0.2% 51 0.2% 12 0.2% 25 0.2% 8 -3.5% 16 2.1% 6 -7.0% 12 0.2% 3 8.5% 8 -3.5% 2 8.5% 6 -7.0% 1 8.5% 3 8.5% 1 -18.6% 2 8.5% 0 8.5% 1 8.5% 0 0.0%
Práctica 3: Manejo del Temporizador Baudios (bps) 2400 4800 9600 14.4K 19.2K 28.8K 38.4K 57.6K 76.8K 115.2K 230.4K 250K 0.5M 1M
Baudios (bps) 2400 4800 9600 14.4K 19.2K 28.8K 38.4K 57.6K 76.8K 115.2K 230.4K 250K 0.5M 1M
Baudios (bps) 2400 4800 9600 14.4K 19.2K 28.8K 38.4K 57.6K 76.8K 115.2K 230.4K 250K 0.5M 1M
3.6864 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 95 0.0% 191 0.0% 47 0.0% 95 0.0% 23 0.0% 47 0.0% 15 0.0% 31 0.0% 11 0.0% 23 0.0% 7 0.0% 15 0.0% 5 0.0% 11 0.0% 3 0.0% 7 0.0% 2 0.0% 5 0.0% 1 0.0% 3 0.0% 0 0.0% 1 0.0% 0 -7.8% 1 -7.8% 0 -7.8% -
4.0000 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 103 0.2% 207 0.2% 51 0.2% 103 0.2% 25 0.2% 51 0.2% 16 2.1% 34 -0.8% 12 0.2% 25 0.2% 8 -3.5% 16 2.1% 6 -7.0% 12 0.2% 3 8.5% 8 -3.5% 2 8.5% 6 -7.0% 1 8.5% 3 8.5% 0 8.5% 1 8.5% 0 0.0% 1 0.0% 0 0.0% -
7.3728 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 191 0.0% 383 0.0% 95 0.0% 191 0.0% 47 0.0% 95 0.0% 31 0.0% 63 0.0% 23 0.0% 47 0.0% 15 0.0% 31 0.0% 11 0.0% 23 0.0% 7 0.0% 15 0.0% 5 0.0% 11 0.0% 3 0.0% 7 0.0% 1 0.0% 3 0.0% 1 -7.8% 3 -7.8% 0 -7.8% 1 -7.8% 0 -7.8%
8.0000 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 207 0.2% 416 -0.1% 103 0.2% 207 0.2% 51 0.2% 103 0.2% 34 -0.8% 68 0.6% 25 0.2% 51 0.2% 16 2.1% 34 -0.8% 12 0.2% 25 0.2% 8 -3.5% 16 2.1% 6 -7.0% 12 0.2% 3 8.5% 8 -3.5% 1 8.5% 3 8.5% 1 0.0% 3 0.0% 0 0.0% 1 0.0% 0 0.0%
11.0592 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 287 0.0% 575 0.0% 143 0.0% 287 0.0% 71 0.0% 143 0.0% 47 0.0% 95 0.0% 35 0.0% 71 0.0% 23 0.0% 47 0.0% 17 0.0% 35 0.0% 11 0.0% 23 0.0% 8 0.0% 17 0.0% 5 0.0% 11 0.0% 2 0.0% 5 0.0% 2 -7.8% 5 -7.8% 2 -7.8% -
14.7456 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 383 0.0% 767 0.0% 191 0.0% 383 0.0% 95 0.0% 191 0.0% 63 0.0% 127 0.0% 47 0.0% 95 0.0% 31 0.0% 63 0.0% 23 0.0% 47 0.0% 15 0.0% 31 0.0% 11 0.0% 23 0.0% 7 0.0% 15 0.0% 3 0.0% 7 0.0% 3 -7.8% 6 5.3% 1 -7.8% 3 -7.8% 0 -7.8% 1 -7.8%
16.0000 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 416 -0.1% 832 0.0% 207 0.2% 416 -0.1% 103 0.2% 207 0.2% 68 0.6% 138 -0.1% 51 0.2% 103 0.2% 34 -0.8% 68 0.6% 25 0.2% 51 0.2% 16 2.1% 34 -0.8% 12 0.2% 25 0.2% 8 -3.5% 16 2.1% 3 8.5% 8 -3.5% 3 0.0% 7 0.0% 1 0.0% 3 0.0% 0 0.0% 1 0.0%
18.4320 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 479 0.0% 959 0.0% 239 0.0% 479 0.0% 119 0.0% 239 0.0% 79 0.0% 159 0.0% 59 0.0% 119 0.0% 39 0.0% 79 0.0% 29 0.0% 59 0.0% 19 0.0% 39 0.0% 14 0.0% 29 0.0% 9 0.0% 19 0.0% 4 0.0% 9 0.0% 4 -7.8% 8 2.4% 4 -7.8% -
20.0000 MHz U2Xn=0 U2Xn=1 UBRRn Error UBRRn Error 520 0.0% 1041 0.0% 259 0.2% 520 0.0% 129 0.2% 259 0.2% 86 -0.2% 173 -0.2% 64 0.2% 129 0.2% 42 0.9% 86 -0.2% 32 -1.4% 64 0.2% 21 -1.4% 42 0.9% 15 1.7% 32 -1.4% 10 -1.4% 21 -1.4% 4 8.5% 10 -1.4% 4 0.0% 9 0.0% 4 0.0% -
5.3 DESARROLLO. 5.3.1 Escriba y analice el siguiente código, el cual es para recibir datos de manera serial. /* * UART_en_C. c * * Cr eat ed: 20/ 05/ 2014 17: 24: 33 34
Práctica 3: Manejo del Temporizador
* Aut hor : Sol aceLabsHar dwar e */ #i ncl ude #i ncl ude #def i ne F_CPU 11059200 voi d Por t s_Set up( ) ; voi d USART_I ni t ( ) ; voi d Por t s_Set up( ) { DDRD = 0x02; DDRC = 0xFF;
/ / Conf i gur aci ón de l os puer t os / / Especi f i camos Tx como sal i da y Rx como ent r ada / / Especi f i camos el Puer t o C como Sal i da
} voi d USART_I ni t ( ) / / Se conf i gur a USART { UCSR0A=( 0<
una " A" se obt i ene un 1 en el puer t o C una "B" se obt i ene un 2 en el puer t o C una "C" se obt i ene un 4 en el puer t o C una "D" se obt i ene un 8 en el puer t o C una "E" s e obt i ene un 16 en el puer t o C una "F" se obt i ene un 32 en el puer t o C un " car act er no especi f i cado"
} i nt mai n( voi d) 35
Práctica 3: Manejo del Temporizador
{ Por t s_Set up( ) ; USART_I ni t ( ) ; sei ( ) ; whi l e( 1) { } }
5.3.2 Arme el siguiente circuito para probar la comunicación serial.
5.3.3 Para la comunicación serial requierer de un módulo interfaz de USB a serial, y se conecta como se muestra a continuación.
5.3.4 El siguiente código es para transmitir un dato por comunicación serial. Pruebe el código. 36
Práctica 3: Manejo del Temporizador
/ / Cr i st al a 14. 7456MHz o 11. 0592MHz #i ncl ude voi d Por t s_Set up( ) ; voi d USART0_Set up( ) ; voi d Por t s_Set up( ) { DDRC = 0x00; DDRD = 0x02; } voi d USART0_Set up( ) { UCSR0A = ( 0<
5.3.5 Haga un programa que envíe y reciba datos por el puerto de comunicación serial, y que se comunique con una computadora. 5.3.6 Utilice el programa del motor a pasos, para que programe la velocidad del motor desde la computadora. 5.3.7 Adquiera la señal de un sensor de temperatura, de un sensor infrarrojo, y una señal senoidal de un generador de funciones. Transmita los valores a la computadora vía serial, y muestre la forma de onda en la interfaz gráfica de usuario. El programa de la computadora debe permitir configurar que canal o calaes se desea muestrear. 5.3.8 Revise los videos de las siguientes ligas. https://www.youtube.com/watch?v=uQv7py84REs ; https://www.youtube.com/watch?v=zbJfcWparP0 ; https://www.youtube.com/watch?v=JTLOx0C4Qhk ; https://www.youtube.com/watch?v=wLkFomRMsU; https://www.youtube.com/watch?v=JTLOx0C4Qhk 37
PRÁCTICA 6. Comunicación serial con u n mód ulo B luetooth 6.1 OBJETIVO. Aprender a utilizar la comunicación serial para comunicarse con un módulo bluetooth, para tener comunicación con sistemas que utilicen este tipo de interfaz de comunicación. 6.2 DESARROLLO. 6.2.1 Implemente el siguiente circuito, el cual se utiliza para comunicarse con un módulo bluetooth.
6.2.2 Programe el microcontrolador con el siguiente código para recibir datos de manera serial, y compruebe que funciona. Requiere utilizar el terminal en la computadora, así como un adaptador de USB a serial, para poder realizar el intercambio de datos. Debe cuidar que la salida de la interfaz no sea RS232, de lo contrario, requiere un circuito adicional MAX-RS232 para adaptarlo a 5V. #def i ne F_CPU 11059200 #i ncl ude #i ncl ude voi d Por t s_Set up( ) ; voi d USART_I ni t ( ) ; voi d Por t s_Set up( ) / / Conf i gur aci ón de l os puer t os { DDRD = 0x02; / / Especi f i camos Tx como sal i da y Rx como ent r ada DDRC = 0xFF; / / Especi f i camos el Puer t o C como Sal i da } voi d USART_I ni t ( ) / / Se conf i gur a USART { UCSR0A=( 0<
Práctica 3: Manejo del Temporizador
( 0<
una " A" , puer t o C una "B", puer t o C una "C" , puer t o C una "D" , puer t o C una " E" , puer t o C una " F" , puer t o C ot r a cosa, puer t o
= = = = = = C
0x01 0x02 0x04 0x08 0x10 0x20 = 0x3F
} i nt mai n( voi d) { Por t s_Set up( ) ; USART_I ni t ( ) ; sei ( ) ; whi l e( 1) { } }
6.2.3 Programe el microcontrolador con el siguiente código para enviar datos de manera serial, y compruebe que funciona. Requiere utilizar el terminal en la computadora, así como un adaptador de USB a serial, para poder realizar el intercambio de datos. Debe cuidar que la salida de la interfaz no sea RS232, de lo contrario, requiere un circuito adicional MAX-RS232 para adaptarlo a 5V. / / Cr i st al a 14. 7456MHz o 11. 0592MHz #i ncl ude voi d Por t s_Set up( ) ; voi d USART0_Set up( ) ; voi d Por t s_Set up( ) { DDRC = 0x00; DDRD = 0x02; } voi d USART0_Set up( ) 39
Práctica 3: Manejo del Temporizador
{ UCSR0A = ( 0<
6.2.4 Investigue cuales son los registros relacionados con el UART, y describa brevemente el uso de cada uno de ellos, así como de los bit que se utilizan. 6.2.5 Modifique el programa para que se maneje la transmisión y la recepción. Utilice dos microcontroladores para probar la comunicación, mostrando en leds el valor recibido, y utilizando interruptores para establecer el valor a transmitir. El valor recibido se muestra en los leds y debe corresponder al dato introducido con los interruptores. 6.2.6 Pruebe la comunicación utilizando dos microcontroladores. 6.2.7 Implemente el siguiente circuito, el cual será utilizado para comunicarse con un módulo Bluetooth. Debe conseguir las hojas de datos del módulo, para saber cuáles son los comandos que debe utilizar.
40
Práctica 3: Manejo del Temporizador
6.2.8 Investigue cuales son los comandos del módulo Bluetooth, repórtelos y describa brevemente el uso de cada uno de ellos. 6.2.9 Modifique el código del punto 2, para transmitir comandos al módulo bluetooth y establecer una comunicación serial. Se recomienda probar primero los comandos del módulo utilizando la computadora a través del terminal o algún software equivalente. 6.2.10 Pruebe la comunicación serial utilizando dos microcontroladores y dos módulos Bluetooth para comunicarse entre ellos.
41
PRÁCTICA 7. Desarrollo de pro yecto 7.1 OBJETIVO. Desarrollar un proyecto donde se aplique los conocimientos estudiados a lo largo del semestre, para garantizar el aprendizaje del estudiante, obteniendo un producto que funcione y pueda resolver problemas reales. 7.2 DESARROLLO. 7.2.1 El proyecto debe ser registrado con el profesor de la asignatura, entregando la propuesta de proyecto que cumpla con las siguientes condiciones. La evaluación del proyecto es realizada de manera colegiada por un grupo de docentes ajenos al profesor de la asignatura. Formato para la pre-propuesta de proyectos de los estudiantes de la asignatura de Programación Avanzada, de la carrera de Ingeniería en Automatización. No se aceptarán propuestas de proyectos de domótica, ni de invernaderos. La propuesta debe de atender cada uno de los siguientes puntos, en una cuartilla. 1. 2. 3. 4. 5. 6.
Título del proyecto. Nombres de los integrantes del equipo. Máximo 3. Descripción del problema a resolver. Objetivo del proyecto. Descripción de la solución incluyendo un bosquejo del proyecto. Debe incluir los siguientes lineamientos: a. La propuesta debe incluir el monitorear al menos dos variables analógicas externas al microcontrolador. b. Se debe graficar el comportamiento de las señales analógicas. c. Almacenar en archivo las señales monitoreadas. d. Indicar los entregables en forma general (¿A qué se comprometen como equipo?) y particulares (que actividad del proyecto se compromete desarrollar cada integrante) e. ¿Por qué es buen proyecto de programación avanzada? Justificar y defender la propuesta. f. Los proyectos se deben enfocar a procesos que incluyan automatización, especialmente el manejo de motores. En caso de ser algo diferente, queda pendiente de aprobación la propuesta. Debe incluir un apartado para la firma de los integrantes del equipo y del profesor. Cada proyecto será revisado por los docentes que imparten la asignatura, para su aprobación. Para tener derecho a ser evaluados, el proyecto debe estar terminado al 100%. En caso de tener derecho a evaluación, la calificación la determinará el comité evaluador, quienes harán llegar la calificación al docente titular.
7. 8. 9.
7.2.2 Al final, los puntos a evaluar son los siguientes. •
Presentación del proyecto. El proyecto debe estar funci onando al 100% para tener derecho a la evaluación. Si éste presenta fallas, el equipo no tendrá derecho a calificación. Si el proyecto no presenta fallas se tomará como calificación inicial el 10, esto antes del examen oral.
Práctica 3: Manejo del Temporizador
Examen oral. Teniendo como base el funcionamiento total del proyecto se procederá a una sesión de preguntas individuales (3 preguntas); la respuesta incorrecta a una de ellas tendrá la penalización de un punto total sobre la calificación final.
•
7.2.3 Los requerimientos de entrega son los siguientes. Proyecto funcionando en su totalidad. Reporte digital del proyecto (según formato).
• •
7.2.4 El contenido del reporte debe ser el siguiente, y se debe entregar antes de presentar el proyecto. Portada. 1. Datos generales (Universidad, Facultad, Carrera, Profesor y Materia). 2. Nombre del proyecto. 3. Integrantes del equipo (con Expedientes). 4. Fecha de entrega. - Índice de contenido. - Índice de figuras. - Índice de tablas. - Introducción. 1. Objetivo general. 2. Objetivos particulares. - Marco teórico. - Metodología. - Resultados. 1. Resultados obtenidos. 2. Conclusión. - Referencias. - Anexos. 1. Anexo A. Código C (de todos los componentes). 2. Anexo B. Interfaz de monitoreo y control en Visual C. 3. Anexo C. Memoria fotográfica. 4. Anexo D. Hojas de datos de todos los componentes eléctricos y electrónicos utilizados. 5. Anexo E. Esquemáticos electrónicos. 6. Anexo F. Imagen 3D de la tarjeta electrónica. 7. Anexo G. Video. 8. Anexo H. Costos. -
*Los datos enumerados es información mínima requerida, pero no toda la correspondiente a los puntos del reporte. 7.2.5 La entrega del reporte debe realizarse de la siguiente manera. • •
En formato PDF. Grabado en un disco (junto con los códigos y aquella información que crean pertinente). 43