Manual de prácticas para microcontrolador ATmega8
-
Upload
panchishdz -
Category
Documents
-
view
291 -
download
13
Transcript of Manual de prácticas para microcontrolador ATmega8
Índice
I INTRODUCCIÓN 3
II PRÁCTICAS 7
1. Práctica 1 81.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2. Destreza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.4. Codigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2. Práctica 2 102.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2. Destreza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.4. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3. Práctica 3 123.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4. Práctica 4 144.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5. Práctica 5 165.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6. Práctica 7 186.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1
7. Práctica 8 207.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8. Práctica 9 218.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
9. Práctica 10 229.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229.2. Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229.3. Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
9.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
10.Práctica 11 2310.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2310.2.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
10.2.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
11.Práctica 12 2411.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2411.2.Diagrama eléctrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2411.3.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
11.3.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.Práctica 13 2512.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512.2.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.2.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
13.Práctica 14 2613.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613.2.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
13.2.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
14.Práctica 15 2714.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2714.2.Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
14.2.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
15.Práctica 16 2815.1.Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2815.2.Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2
UNIVERSIDAD TECNOLÓGICA DE TEHUACÁN
Robótica
Reporte de Practicas
Luis Antonio Trinidad Cid
Francisco Gaspar Hernandez
Michael Milton Huerta Sevilla
19 de Octubre de 2015
Parte I
INTRODUCCIÓN
Microcontrolador
El microcontrolador es un circuito integrado de muy alta escala de integraciónque contiene las partes funcionales de un computador:
CPU (Central Processor Unit o Unidad de Procesamiento Central)
Memorias volátiles (RAM), para datos
Memorias no volátiles( ROM, PROM, EPROM) para escribir el programa
Líneas de entrada y salida para comunicarse con el mundo exterior.
Algunos periféricos (comunicación serial, temporizador, convertidor A/D, etc)
Es decir el microcontrolador es un computador integrado en un solo chip. Integrartodos estos elementos en un solo circuito integrado a significado desarrollar aplica-ciones importantes en la industria al economizar materiales, tiempo y espacio.
ATMEL
ATMEL fabrica los microcontroladores de la familia AVR, esta nueva tecnologíaproporciona todos los beneficios habituales de arquitectura RISC y memoria flashreprogramable eléctricamente. La característica que los identifica a estos microcon-troladores de ATMEL es la memoria flash y eeprom que incorpora. AVR compite con
3
varias familias de microcontroladores bien establecidas en el mercado, tales como8051 de Intel, 68HC11 de Motorola y la familia PIC de Microchip. La firma tambiénproduce y vende varios subproductos de la popular familia 8051 con la diferencia deque están basados en la memoria flash.
El ATmega8 es un microcontrolador de la familia Atmel, contiene una arquitecturatipo RISC, sus instrucciones se ejecutan en un solo ciclo de maquina, su estructuraelimina la necesidad de usar componentes externos ya que internamente contie-ne: osciladores, USART, SPI, resistencias pull-up, modulación por anchura de pul-so (PWM), convertidor ADC, comparador analógico y cronometros, estas son soloalgunas características que se encuentran en este dispositivo. Su programación esposible realizarla en leguaje C, assembly o Basic. Todo su sistema esta depositadoen una sola pastilla.
Características
Entre sus características encontramos:
Organización de memoria Flash 8kx8bitCapacidad de memoria EEPROM 512BCapacidad de memoria SRAM 512BCarcasa DIP28Frecuencia de tacteado 16MHzPeriféricos RTC, comparadorCantidad de entradas/salidas 23Cantidad de canales PWM 3Cantidad de timers 8-bit 2Cantidad de timers 16-bit 1Montaje THTTensión de trabajo 4.5...5.5VCantidad de transductores A/C 10-bit 6 92
Pines
El ATmega 8 cuenta con 26 pines de los cuales:VCC y GND. Son los pines de alimentación (+5 v) y tierra (0 v).XTAL1 y XTAL2. Conectores del cristal de reloj externo.RESET. Corresponde a la línea de reset (entrada).AVCC. Es el pin para conectar la fuente de alimentación al convertidor A/D.AREF. Para conectar una tensión de referencia para el conversor.Puerto C(PC0 .. PC5). Tiene 7 bits, bidireccionales con resistencias internas pull up,para cada bit.Puerto B(PB7 .. PB0).Puerto D (PD0..PD7).PC6/RESET.
4
Figura 1: Diagrama de pines del ATMEGA8.
El microcontrolador tiene varios puertos de los cuales podemos hacer uso, estospuertos los podemos configurar como nosotros queramos, como entrada o comosalida, para poder hacer esto es necesario escribir en los registros del puerto paradarle las instrucciones necesarias. Existen tres principales formas de controlar lospuertos, tomamos como ejemplo el puerto B.
DDR
Para obtener que el puerto B se comporte como entrada, como salida o ambos,es necesario indicarle esto en el DDR, este registro no activara ni desactivara ningúnpin del microcontrolador, simplemente le indicara al puerto si este será entrada osalida.
Figura 2: Direccion de registro de datos del Puerto B - DDRB.
Para indicarle al DDR si el puerto sea de entrada o salida, el 1 indica salida, y el 0entrada, se le puede escribir como hexadecimal, decimal, o binario, por ejemplo, siqueremos que todos los bits del puerto sean salidas lo podemos escribir como sigue:
5
DDRB=0xFF; //Como HexadecimalDDRB=255; //Como DecimalDDRB=0b11111111; //Como Binario
Si queremos que algunos bits funcionen como entradas:
DDRB=0x8C; //Como HexadecimalDDRB=140; //Como DecimalDDRB=0b10001100; //Como Binario
Se puede escribir en cualquiera de los tres tipos (binario hexadecimal y decimal),en todos los registros.
PORT
El PORT controla la salida del puerto, este se usa en caso de que el DDR haya si-do seleccionado como salida, un 1 en el PORT indica un nivel alto en el puerto comosalida, un 0 indica que el pin esta en nivel bajo. Varias configuraciones de ejemplopara el PORT:
PORTB=0xFF; //Todos los pines estan activosPORTB=0x00; //Todos los pines estan desactivadosPORTB=0x03; //Solo los primeros dos bits del puerto estan activos
Figura 3: Registro de datos del Puerto B - PORTB.
PIN
El PIN es un registro de lectura (notar en la imagen del registro donde dice Read/W-rite, todos son R), este registro nos da un 1 si a un pin del microcontrolador se le estáalimentando externamente, y un cero si esta en nivel bajo de voltaje. En este caso elvalor del PIN se le puede asignar a una variable la cual guardara el valor del miso, almomento de ejecutar la instrucción.
valor=PINB; //El valor de PINB es asignado a la variable "valor"
6
Figura 4: Direccion de los pines de entrada del Puerto B - PINB
Programación AVR
Para programar el microcontrolador se hara uso de el software de AVR Studio elcual utiliza el lenguje C, acontinuacion se describen los detalles del programa.
1 #define F_CPU 8000000L
Esta linea define la frecuencia a la que trabajará el micro, esta definición sirve parahacer calculos en algunas librerias, como en la librería delay.h, que requiere saber lafrecuencia del micro para poder calcular los tiempos de espera de sus rutinas.
1 #include <avr/io.h>
Incluimos la librería avr/io que contiene la información de las entradas y salidas delmicrocontrolador.
1 #include <util/delay.h>
Esta librería es necesaria, ya que contiene todas las funciones para poder utilizar losretardos de tiempo.
1 int main (void){
El main es la función principal, es donde el programa inicia, siempre es necesariodeclarar la función main.
1 while(1){
El ciclo while, es un ciclo que ejecuta todas las instrucciones que se encuentran den-tro de sus corchetes, siempre y cuando lo que este dentro del paréntesis se cumpla,en este caso el 1 es lo mismo que TRUE, por lo tanto, siempre se cumple y se ejecu-taran cíclicamente las instrucciones dentro del while. Esto se hace con la intenciónde que el programa nunca se detenga, y siempre repita lo mismo.
7
Parte II
PRÁCTICAS
1. Práctica 1
1.1. Objetivo
Diseñar un programa que encienda un led, dure 500ms y se apague; esta con-mutación debe darse en cadaterminal del puerto B, del LSB al MSB.
1.2. Destreza
Partiendo del código con el que se logró hacer funcionar el ATMEGA8, diseñe uncódigo que resuelva elproblema.
1.3. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 5: Diagrama eléctrico de la Práctica 1.
8
1.4. Codigo
Listing 1: Código AVR
1 /*2 * Practica_1.c3 *4 * Created: 21/09/2015 08:51:43 AM5 *6 */7
8
9 #define F_CPU 1000000UL //Oscilador interno 10 Mhz10
11 #include <util/delay.h>12 #include <avr/io.h>13
14 int main(void)15 {16 DDRB = 0xFF; // Configurar el puerto B como salidas17
18 while(1)19 {20 PORTB = PORTB | 0x01; // Aplicamos or21 _delay_ms(500);22 PORTB = PORTB & 0xFE;23 _delay_ms(500);24 }25 }
1.4.1. Descripción
9
2. Práctica 2
2.1. Objetivo
Diseñar un programa que muestre los digitos en hexadecimal (0„1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)en undisplay 7 segmentos.
2.2. Destreza
El punto clave es guardar los datos en la memoria FLASH usando la libreriaavr/pgmspace.h. Recuerde que solo toma los 4 LSB del puerto D (Puerto D comoentrada). El display está conectado al puerto B.
2.3. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 6: Diagrama eléctrico de la Práctica 2.
10
2.4. Código
Listing 2: Código Práctica 2
1
2 /*3 * Practica_2.c4 *5 * Created: 21/09/2015 08:51:43 AM6 */7
8 #include <avr/io.h>9 #include <avr/pgmspace.h>
10
11 const char tabla [] ={ 0x3F, 0x06, 0x5B, 0x4F,12 0x66, 0x6D, 0x7D, 0x07,13 0x7F, 0x67, 0x77, 0x7C,14 0x39, 0x5E, 0x79, 0x71};15
16 int main(void)17 {18 unsigned char dato;19 DDRD = 0x00;20 PORTD = 0x00;21 DDRB = 0xFF;22
23 while (1)24 {25 dato = PIND & 0x0F;26 PORTB = pgm_read_byte (& tabla[dato]);27 }28 }
2.4.1. Descripción
11
3. Práctica 3
3.1. Objetivo
Diseñar una ALU (Unidad Aritmética Lógica) de 4 bits.
3.2. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 7: Diagrama eléctrico de la Práctica 3.
3.3. Código
Listing 3: Código Práctica 3
1
2 /*3 * Practica_3.c4 *5 * Created: 21/09/2015 09:01:43 AM6 */
12
7
8 #include <avr/io.h>9
10 int main(void)11 {12 unsigned char Dig1, Dig2, R, Oper;13
14 DDRB = 0x00 ;15 DDRC = 0x00 ;16 PORTB= 0x00 ; // Resistores Pull Down17 PORTC= 0x00 ; // Resistores Pull Down18 DDRD=0xFF;19
20 while (1)21 {22 Dig1 = PINB&0x0F ;23 Dig2 =(PINB&0xF0)>>4;24 Oper = PINC&0x07 ;25
26 switch(Oper)27 {28 case 0: R = A + B;29 break;30 case 1: R = A - B;31 break;32 case 2: R = A * B;33 break;34 case 3: R = A & B;35 break;36 case 4: R = A | B;37 break;38 default: R = 0;39 }40 PORTD=R;41 }42 }
3.3.1. Descripción
13
4. Práctica 4
4.1. Objetivo
Mostrar letras (según las posibilidades)en un display 7 segmentos, formandouna palabra de mínimo 4 letras. Estas letras deben visulizarse cada 400ms. Dise-ñar las letras como se hizo en clase.
4.2. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 8: Diagrama eléctrico de la Práctica4.
4.3. Código
Listing 4: Código Práctica 4
1 /*2 * Practica_4.c3 *4 * Created: 18/09/2015 07:21:54 AM5 */6
7 #define F_CPU 1000000UL
14
8 #include <avr/io.h>9 #include <util/delay.h>
10
11 int main(void)12 {13 DDRB = 0xFF;14 while(1)15 {16 PORTB = 0x7D;17 _delay_ms(400);18 PORTB = 0xF9;19 _delay_ms(400);20 PORTB = 0x50;21 _delay_ms(400);22 PORTB = 0x77;23 _delay_ms(400);24 PORTB = 0x50;25 _delay_ms(400);26 PORTB = 0x5E;27 _delay_ms(400);28 PORTB = 0x3F;29 _delay_ms(400);30 }31 }
4.3.1. Descripción
15
5. Práctica 5
5.1. Objetivo
Diseñar un registro de corrimiento de bits utilizando el puerto D. Debe ir del LSBal MSB y viceversa.
5.2. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 9: Diagrama eléctrico de la Práctica 5.
5.3. Código
Listing 5: Código Práctica 5
1 /*2 * Proyecto_5.c3 *4 * Created: 18/09/2015 07:38:21 AM5 */6
7 #define F_CPU 1000000UL8 #include <avr/io.h>9 #include <util/delay.h>
10
11 int main(void)12 {13 DDRB = 0xFF;
16
14 PORTD = 0x01;15 while(1)16 {17 while (PORTB < 0x80)18 {19 PORTD = PORTD << 1; //Recorrer a la izquierda20 _delay_ms(300);21 }22 while (PORTD > 0x01)23 {24 PORTD = PORTD >> 1; //Recorrer a la derecha25 _delay_ms(300);26 }27 }28 }
5.3.1. Descripción
17
6. Práctica 7
6.1. Objetivo
Utilizar interrupciones y hacer conmutar el LSB del Puerto B.
6.2. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 10: Diagrama eléctrico de la Práctica 7.
6.3. Código
Listing 6: Código Práctica 7
1 /*2 * Proyecto_7.c3 *4 * Created: 18/09/2015 07:38:21 AM5 */6
7 #include <avr/io.h>8 #include <avr/interrupt.h>9
10 ISR (INT0_vect)11 {12 PORTB = PORTB^0X01; //OR EXCLUSIVE PARA CONMUTAR LSB13 }14
15 int main ()
18
16 {17 DDRD = 0X00; //PUERTO D COMO ENTRADA18 PORTD = 0XFF; //RESISTOR PULL UP19
20 DDRB = 0XFF; //PUERTO B COMO SALIDA21
22 MCUCR= 0X02;//CONFIGURACION DE INTERRUPCION POR FLANCO DE ←-
BAJADA23 GICR = 0X40;//HABILITA INTERRUPCION24
25 PORTB = 0X00; //ESTADO INICIAL DE LA SALIDA26 sei () ; //HABILITADOR GLOBAL DE INTERRUPCIONES27
28 while (1)29 {30 asm( "nop" ) ;31 }32 }
6.3.1. Descripción
19
7. Práctica 8
7.1. Objetivo
Utilizar interrupciones y hacer conmutar el LSB del Puerto B durante 2000ms.
7.2. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 11: Diagrama eléctrico de la Práctica 8.
7.3. Código
Listing 7: Código Práctica 8
1 #define F_CPU 1000000UL2 #include <avr/io.h>3 #include <avr/interrupt.h>4 #include <util/delay.h>5
6 ISR (INT0_vect)7 {8 PORTB = 0x01;9 _delay_ms(2000);
10 PORTB = 0x00;11 }12
13 int main(void)14 {15 DDRD = 0x00;
20
16 PORTD = 0xFF;17 DDRB = 0xFF;18
19 cli ();20
21 MCUCR = 0x02;22 GICR = 0x40;23
24 sei ();25
26 while(1)27 {28 PORTB = 0x40;29 }30 }
7.3.1. Descripción
21
8. Práctica 9
8.1. Objetivo
Realice contador de eventos ascendente y descendente con salida en binario.
8.2. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 12: Diagrama eléctrico de la Práctica 9.
8.3. Código
Listing 8: Código Práctica 9
1 #include <avr/io.h>2 #include <avr/interrupt.h>3
4 unsigned char cuenta; // variable global5
6 ISR (INT0_vect)7 {8 cuenta ++;9 PORTB = cuenta;
10 }11
12 ISR (INT1_vect)13 {
22
14 cuenta--;15 PORTB = cuenta;16 }17
18 int main(void)19 {20 DDRD = 0x00; //Puerto D como entrada21 PORTD = 0xFF; // Configuracion Pull Up22 DDRB = 0xFF; // Puerto B como salida23
24 MCUCR = 0x0A; // Configuracion por flanco de bajada25 GICR = 0xC0; // Hablita INT1 E INT026 cuenta = 0;27 PORTB = cuenta; // inicializa la salida28 sei ();29
30 while(1)31 {32 asm ("nop");33 }34 }
8.3.1. Descripción
23
9. Práctica 10
9.1. Objetivo
Diseñe un sistema de conteo de 0 a 99 y muestrelos en dos display 7 segmentos.Cada display representala unidad y la decena.
9.2. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 13: Diagrama eléctrico de la Práctica 10.
9.3. Código
Listing 9: Código Práctica 10
1 #define F_CPU 1000000UL2 #include <avr/io.h>3 #include <avr/pgmspace.h>4 #include <util/delay.h>5
6 const char tabla [ ] PROGMEM = { 0x3F, 0x06, 0x5B, 0x4F, 0←-
x66, 0x6D,7 0x7D, 0x7F, 0x67, 0x77, 0x7C, 0x39,8 0x5E, 0x79, 0x71};9
10 int main(void)11 {12 int u=0,d=0;13 DDRB=0xFF; //CONF COMO SALIDA14 DDRD=0xFF; //CONF COMO SALIDA15 while(1)16 {17 while ( d < 9)
24
18 {19 PORTB = pgm_read_byte(&tabla[d]);20 _delay_ms(150);21 d++;22
23 while (u < 9)24 {25 PORTD = pgm_read_byte(&tabla[u]);26 _delay_ms(150);27 u++;28 }29
30 PORTD = 0x3f;31 u = 0;32 }33
34 d = 0;35 }36 }
9.3.1. Descripción
25
10. Práctica 11
10.1. Objetivo
Generar una señal PWM en modo no invertido, con el ancho de pulso determi-nado por el valor delpuerto D.
10.2. Código
Listing 10: Código Práctica 11
1 #include <avr/io.h>2 //PWM3 int main(void)4 {5 DDRB = 0xFF; // Conf como salida6 PORTD = 0xFF; // Conf como entrada7
8 TCCR2 = 0x69;9
10 while(1)11 {12 OCR2 = PIND;13 }14 }
10.2.1. Descripción
26
11. Práctica 12
11.1. Objetivo
Diseñe un sistema que mantenga la temperatura de una habitación en el rangode 18 y 23 °C. Si esmayor a 23 °C debe encender un ventilador, si es menor a 18 °C uncalefactor. Si se encuentra dentro de los rangos no debe activarse algo.
11.2. Diagrama eléctrico
Se presenta el diagrama eléctrico de la práctica.
Figura 14: Diagrama eléctrico de la Práctica 12.
11.3. Código
Listing 11: Código Práctica 12
1 #define inf 3682 #define sup 4713
4 #include <avr/io.h>5
6 int main(void)7 {8 unsigned int temp;9 DDRB = 0xFF;
10 PORTB = 0x00;11
27
12 ADMUX = 0x00; // Selecciona ADC0 y Vref sin activar13 ADCSRA = 0xC3; // Habilita ADC, inicia conversion14
15 while(1)16 {17 while (!(ADCSRA & 1 << ADIF)); // Espera fin de ←-
conversion18 ADCSRA |= 1 << ADIF; // Limpia bandera19 temp = ADCW; // Obtiene la temperatura20 if (temp < sup)21 PORTB = 0x01;22 else if (temp < inf)23 PORTB = 0x02;24 else25 PORTB = 0x00;26 ADCSRA |= 1 << ADSC; // Inicia conversion27 }28 }
11.3.1. Descripción
28
12. Práctica 13
12.1. Objetivo
Diseñe el control de un seguidor de linea, compuesto por dos llantas traserasmanejadas por motoresindependientes y una llanta (bola loca). El móvil debe seguiruna línea blanca en una superficie de fondonegro. Suponga que los sensores se hanacondicionado de manera que, cuando se encuentran en una zonaoscura presentanun voltaje mayor a 2.5V y en una zona clara su voltaje está por debajo de ese nivel.
12.2. Código
Listing 12: Código Práctica 13
1 #include <avr/io.h>2
3 int main(void)4 {5 unsigned char sens;6 DDRB = 0xFF;7 PORTB = 0x03;8 ADCSRA = 0x00; // acitva ADC9 SFIOR = 0x08; // Conecta multiplexor con AC
10
11 while(1)12 {13 sens = 0x00;14 ACSR = 0x80; // Desact AC15 ADMUX = 0x00; // Selecciona Canal 016 ACSR = 0x00; // Activa AC17 asm ("nop");18 if (!(ACSR & 1 << ACO)) //Si sensor 1 esta en zona ←-
oscura19 sens |= 0x01; // Enciende motor 120 ACSR = 0x80;21 ADMUX = 0x01;22 ACSR = 0x00;23 asm ("nop");24
25 if (!(ACSR & 1 << ACO))26 sens |= 0x02;27 if (sens == 0x01 || sens == 0x02)28 PORTB = sens;29 else30 PORTB = 0x03;
29
31 }32 }
12.2.1. Descripción
30
13. Práctica 14
13.1. Objetivo
Diseñe un código en RobotC for VEX utilizando tres sensores de linea para resol-ver el problema del "LineFollower".
13.2. Código
Listing 13: Código Práctica 14
13.2.1. Descripción
31
14. Práctica 15
14.1. Objetivo
Diseñe un código en RobotC for VEX que logre situar al móvil dentro de un circu-lo, y una vez situadodentro del circulo evitar que salga. La destreza es utilizar el sen-sor o los sensores de luz.
14.2. Código
Listing 14: Código Práctica 15
14.2.1. Descripción
32
15. Práctica 16
15.1. Objetivo
Diseñe un robot Móvil de ruedas o patas (articulaciones) con las siguientes ca-racterísticas.
15.2. Características
1.- El robot Móvil deberá tener Ruedas o patas. 2.- Las dimensiones del RobotMóvil no deben exceder las dimensiones de 20x20x40 cm, esto con el fín deque pue-da trasladarse y moverse dentro de un laberinto. 3.- Es libre de usar cualquier dis-positivo uC o embebido para su control. 4.- Deberá tener como mínimo un sensorultrasónico en la parte frontal del Móvil. 5.- Deberá tener al menos un par de ele-mentos ópticos (IRED y Fototransistor) que ayude al Móvil en ladetección de lineas(blancas o negras). 6.- Es necesario que el Móvil se pueda armar y desarmar de ma-nera practica, procurepegarsolo lo necesario,haga uso de tornillería. 7.- Es necesarioque los circuitos electrónicos posibles a usar esten en PCB (Print Circuit Board). 8.-El Móvil debe tener un boton de encendido. 9.- Considere la pila ya en el Móvil. 10.-Para este corte valorativo (primer Parcial), se pide solo el mecanismo pero listo paracargar códigos. 11.-Podrá, si así lo desea, tomar algunas recomendaciones vistas enclase para su contruccíon.12.- Recuerde que este practica equivale a 2.5 pts
33