Ingeniería en Mecatrónica M.C. Sirgei Garcia Ballinas Practicas 1er Corte. Victor Javier Cancino González Darinel Cruz Vázquez Hugo Grajales Roman Giber Guzman Abad Luis Enrique Hernández Gómez 24 de Abril del 2012 M I C R O C O N T R O L A D O R E S Universidad Politécnica de Chiapas
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
I n g e n i e r í a e n M e c a t r ó n i c a
M.C. Sirgei Garcia Ballinas
Practicas 1er Corte.
Victor Javier Cancino González
Darinel Cruz Vázquez
Hugo Grajales Roman
Giber Guzman Abad
Luis Enrique Hernández Gómez
24 de Abril del 2012
M I C R O C O N T R O L A D O R E S
Universidad Pol i técnica de Chiapas
Contenido
Adiamco! 3Dui bla faccumsan velis auguero! 3Lore dolorpe! 3Tuat vulluptat alit er iniamcore exeriure! 4
Practica 1! 4Secuencia de Leds (Parpadeo).! 4Código! 5Simulación.! 6Físico! 7
Práctica 2.! 8Secuencia de Leds (Inicio-Fin).! 8Código.! 9Simulación.! 11Físico.! 11
Practica 3! 12Secuencia de Leds (Extremos-Centro).! 12Código.! 13Simulación.! 14Físico.! 14
Practica 4! 15Secuencia de Leds (hola).! 15Código.! 16Simulación.! 17Físico.! 17
Practica 5! 18Secuencia de Leds (mecatronica).! 18Código.! 19Simulación.! 20Físico.! 22
A través de programas realizados en lenguaje C en el Compilador CCS y simulaciones en Pro-teus se realizaron siete distintas practicas con el objetivo de aprender a utilizar las distintas instrucciones básicas que se le pueden ordenar a un microcontrolador en este caso para todas las practicas se utilizó el PIC16F877A.
Para la realización de estas prácticas primeramente fue de suma importancia aprender arealizar la configuración de los puertos I/O. Así como también, como podemos declarar nues-tras variables y el tipo de PIC a utilizar. Otro factor que es indispensable para realizar las practicas fue conocer las librerías que se utilizarán ya que cambian con las ya conocidas en C.
M e c a t r ó n i c a! 1 º C o r t e
Practica 1Secuencia de Leds (Parpadeo).
Utilizamos el compilador CCS para la siguiente práctica.
5. Para mantener la secuencia de los leds tenemos que para dar un estado alto a un pin en especifico se escribe:
! ! “output_high(PIN_(nombre del pin));”
ésta instrucción se hará cada que queramos tener un solo PIN encendido, quedándonos el código de la siguiente manera ingresándolo en un ciclo “for(;;) ” que lo ejecutará infinita-mente hasta ser suspendida la alimentación.
! ! ! ! for(;;)! ! ! //Inicialización del For ! ! ! ! { ! ! ! ! output_high(PIN_B0);! //Led en Estado Alto !! ! ! output_low(PIN_B1); ! //Led en Estado Bajo !! ! ! output_low(PIN_B2); !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); !! ! ! delay_ms(100);! ! // delay de 100 mili-segundo! ! ! ! output_low(PIN_B0);!! //Led en Estado Bajo! ! ! ! output_high(PIN_B1);! //Led en Estado Alto !! ! ! output_low(PIN_B2); !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); !! ! ! delay_ms(100);! ! // delay de 100 mili-segundos! ! ! ! output_low(PIN_B0);!! //Led en Estado Bajo
M e c a t r ó n i c a! 1 º C o r t e
! ! ! ! output_low(PIN_B1); ! ! ! ! output_high(PIN_B2);! //Led en Estado Alto !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); !! ! ! delay_ms(100);! ! //delay de 100 mili-segundos !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1); !! ! ! output_low(PIN_B2); !! ! ! output_high(PIN_B3);! //Led en Estado Alto !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); ! ! ! ! delay_ms(100);! ! // delay de 100 mili-segundos !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1); !! ! ! output_low(PIN_B2); ! ! ! ! output_low(PIN_B3); !! ! ! output_high(PIN_B4);! //Led en Estado Alto !! ! ! output_low(PIN_B5); ! ! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); !! ! ! delay_ms(100);! ! ! // delay de 100 mili-segundo !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1); !! ! ! output_low(PIN_B2); !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_high(PIN_B5);! //Led en Estado Alto !! ! ! output_low(PIN_B6); !! ! ! output_low(PIN_B7); ! ! ! ! delay_ms(100);! ! // delay de 100 mili-segundos !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1); !! ! ! output_low(PIN_B2); !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_high(PIN_B6);! //Led en Estado Alto !! ! ! output_low(PIN_B7); !! ! ! delay_ms(100);! ! // delay de 100 mili-segundos !! ! ! output_low(PIN_B0);!! //Led en Estado Bajo !! ! ! output_low(PIN_B1);! ! ! ! output_low(PIN_B2); !! ! ! output_low(PIN_B3); !! ! ! output_low(PIN_B4); !! ! ! output_low(PIN_B5); !! ! ! output_low(PIN_B6);
M e c a t r ó n i c a! 1 º C o r t e
!! ! ! output_high(PIN_B7);! //Led en Estado Alto !! ! ! delay_ms(100);! ! // delay de 100 mili-segundos! ! ! ! }! ! ! ! //Finaliza For
Por cada secuencia de encendido y apagado de los leds, se usa un “delay” (retardo) de 100 mili-segundos con el cual podremos ver la secuencia de leds (inicio-fin).
Simulación.
Físico.
M e c a t r ó n i c a! 1 º C o r t e
Fig.2.4 PIN B5 en estado alto Fig.2.5 PIN B3 en estado bajo
Fig.2.6 PIN B7 en estado alto Fig.2.7 PIN B6 en estado alto
Fig.2.8 PIN B2 en estado alto
Fig.3.1 Barra de Menú
Practica 3Secuencia de Leds (Extremos-Centro).
1ºCrear un nuevo proyecto con el software compilador CCS.
5. Para mantener la secuencia de los leds tenemos que para dar un estado alto a un pin en especifico se escribe:
! ! “output_high(PIN_(nombre del pin));”ésta instrucción se hará cada que queramos tener un solo PIN encendido, quedándonos el código de la siguiente manera ingresándolo en un ciclo “for(;;) ” que lo ejecutará infinita-mente hasta ser suspendida la alimentación.
5.Verificar los pines analógicos ya se-leccionados
Código.6.Bajo el empleo de los recursos solicitados el programa genera un código previo de inicia-lización que queda de la siguiente forma:
! ! ! #include <voltaje.h>! ! ! #include <LCD.C>! ! ! ! //Librería del LCD! ! ! #include <string.h>!! ! ! //Librería String! ! ! void main()! ! ! {! ! ! setup_adc_ports(AN0);! ! ! //Pines analogícos! ! ! setup_adc(ADC_CLOCK_DIV_2);! ! ! setup_psp(PSP_DISABLED);! ! ! setup_spi(SPI_SS_DISABLED);! ! ! setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);! ! ! setup_timer_1(T1_DISABLED);! ! ! setup_timer_2(T2_DISABLED,0,1);! ! ! setup_comparator(NC_NC_NC_NC);! ! ! lcd_init();! ! ! ! ! //Inicialización del LCD! ! ! }M e c a t r ó n i c a! 1 º C o r t e
Fig.6.4 Pestaña Header Files
Fig.6.5 Pestaña Header Files
7. Para poder sensar el voltaje tendremos que hacer una conversión analógico-digital que sera el valor máximo analógico entre bytes de resolución:! float voltaje;!! ! ! ! //Declarar variable voltaje! setup_adc(adc_clock_internal);! ! //Activar reloj interno! set_adc_channel(0);! ! ! ! //Definir Pin Analógico! delay_us(10);! ! ! ! ! //Retreso de 10 microsegundos! for(;;)!! ! ! ! ! //For Infinito ! {! voltaje= (.019607)*read_adc();! ! //La variable voltaje tomara el valor del !! ! ! ! ! ! ! producto de factor de conversión analógi!! ! ! ! ! ! ! co-digital(5/255) por la lectura del pin !! ! ! ! ! ! ! definido anteriormente! lcd_gotoxy(1,1);! ! ! ! //Coordenadas donde iniciara el texto en !! ! ! ! ! ! ! el LCD! printf(LCD_PUTC,"VOLTAJE= %.2f", voltaje);//El LCD imprimirá VOLTAJE y el valor de !! ! ! ! ! ! ! la variable voltaje! delay_ms(1000);! ! ! ! //Retraso de 1000 milisegundos! }! ! ! ! ! ! //Finaliza For
Simulación.
Real.
M e c a t r ó n i c a! 1 º C o r t e
Fig.6.6 Lectura Media Fig.6.7 Lectura Máxima
Fig.6.8 Lectura Media
Fig.6.9 Lectura Máxima
Practica 7LCD (fotodiodo).
1ºCrear un nuevo proyecto con el software compilador CCS.
6. Para poder sensar el voltaje tendremos que hacer una conversión analógico-digital que será el valor máximo analógico entre bytes de resolución:
! ! while(true)! ! ! ! ! //Inicialización un while infinito! ! {! !! ! if (input(PIN_A0))! ! ! ! //Condición ! ! ! ! ! ! ! ! //Si el PIN A0 esta en estado alto !! ! {! ! ! ! ! ! se imprime “BIENBENIDO:)”! ! printf(LCD_PUTC," BIENVENIDO :)");! ! }
! ! else! ! ! ! ! ! ! ! //Si el PIN A2 no esta en estado !! ! {! ! ! ! ! ! alto se imprime “ADELANTE-->”! ! printf(LCD_PUTC," ADELANTE-->");! ! }! ! delay_ms(100);! ! ! ! //Retraso de 100 milisegundos! ! }
M e c a t r ó n i c a! 1 º C o r t e
Fig.7.4 Pestaña I/O Pins
Simulación.
Real.
M e c a t r ó n i c a! 1 º C o r t e
Fig.7.5 PIN A0 en estado bajo Fig.7.6 PIN A0 en estado alto
Fig.7.7 PINA0 en estado alto Fig.7.6 PIN A0 en estado bajo
Conclusión
El principal y mayor problema que nos topamos al realizar las practicas fue que el com-
pilador nos comenzó a presentar algunas fallas. Como por ejemplo nos marcaba errores inexistentes o nos dejaba compilar pero no nos generaba ningún cambio.