LABORATORIO-MICROCONTROLADOR

MICROCONTROLADORES, RONDON JUAN PABLO, CRISTOBAL MOSCOSO PEÑA, BRAYAN STEVEN BERMUDEZ INSTITUCIÓN DE EDUCACION SUPERIOR

Views 138 Downloads 3 File size 296KB

Report DMCA / Copyright

DOWNLOAD FILE

Citation preview

MICROCONTROLADORES, RONDON JUAN PABLO, CRISTOBAL MOSCOSO PEÑA, BRAYAN STEVEN BERMUDEZ

INSTITUCIÓN DE EDUCACION SUPERIOR ITFIP FACULTAD DE INGENIERIA Y CIENCIAS AGROINDUSTRIALES LABORATORIO SIMULADO MICROCONTROLADORES JUAN PABLO RONDON OYUELA E-mail: [email protected] CRISTOBAL MOSCOSO PEÑA BRAYAN STEVEN BERMUDEZ DIAZ E-mail: [email protected]

RESUMEN: El presente trabajo fue realizado de manera grupal. Describe mediante un informe la realización de una práctica de simulada con la cual se busca Modificar un código suministrado por el docente en PICC para que muestre de manera simulada en proteus medición de un sensor de temperatura en una pantalla LCD controlada por un microcontrolador 16F877A.ya que en un comienzo solo se obtenían mediciones de resistencia. La práctica simulada se hizo grupal y se contó con la ayuda del docente de apoyo. Es de gran importancia esta experiencia para que el estudiante se comience a familiarizar con el funcionamiento del microcontrolador y la programación que se le debe hacer. Tema que será el eje principal de la materia en el presente semestre.

PALABRAS CLAVE: Microcontrolador, Programación, Variable, Leyenda del LCD, código hexadecimal, archivo Hex, lcd, keypad. ABSTRACT: This work was done as a group. A report described by conducting a simulated practice with which seeks to modify a code supplied by the teacher in PICC to show how proteus simulated measuring a temperature sensor controlled by a microcontroller LCD 16F877A.ya which initially only resistance measurements were obtained. The simulated practice became group and enlisted the help of teacher support. It is very important experience for the student begins to familiarize themselves with the operation of the microcontroller and the programming that will be done. Topic will be the main focus of the subject in this semester.



Analizar y obtener conclusiones sobre el tema

1.1.2 MATERIALES      

Software de simulación de circuitos electrónicos Proteus ISIS 7 Software de programación de microcontroladores Picc Compiler. 1 microcontrolador 16F877A Pantalla LCD Keypad 3x4 Sensor Lm35

2 MARCO TEORICO SENSOR LM35 El LM35 es un sensor de temperatura con una precisión calibrada de 1 ºC. Su rango de medición abarca desde -55 °C hasta 150 °C. La salida es lineal y cada grado Celsius equivale a 10 mV, por lo tanto: 150 ºC = 1500 mV -55 ºC = -550 mV1

CARACTERÍSTICAS Sus características más relevantes son: - Está calibrado directamente en grados Celsius. - La tensión de salida es proporcional a la temperatura. - Tiene una precisión garantizada de 0.5 °C a 25 °C. - Baja impedancia de salida. - Baja corriente de alimentación (60 μA). - Bajo coste.

KEY WORD: Microcontroller Programming, Variable, Legend LCD, hexadecimal code, Hex file, keypad, lcd

MICROCONTROLADOR

1 LABORATORIO SENSORICA 1

Un microcontrolador (abreviado μC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.

1.1 OBJETIVOS 



Realizar la modificación del código suministrado por el docente que visualizaba la medición de dicho sensor con su respectiva resolución (lm35sensor de temperatura). Insertar este código en el microcontrolador 16F877A de proteus y simularlo para ver si el resultado es correcto

MICROCONTROLADORES, RONDON JUAN PABLO, CRISTOBAL MOSCOSO PEÑA, BRAYAN STEVEN BERMUDEZ Algunos microcontroladores pueden utilizar palabras de cuatro bits y funcionan a velocidad de reloj con frecuencias tan bajas como 4 kHz, con un consumo de baja potencia (mW o microvatios). Por lo general, tendrá la capacidad de mantenerse a la espera de un evento como pulsar un botón o de otra interrupción; así, el consumo de energía durante el estado de reposo (reloj de la CPU y los periféricos de la mayoría) puede ser sólo de nanovatios, lo que hace que muchos de ellos sean muy adecuados para aplicaciones con batería de larga duración. Otros microcontroladores pueden servir para roles de rendimiento crítico, donde sea necesario actuar más como un procesador digital de señal (DSP), con velocidades de reloj y consumo de energía más altos. Cuando es fabricado el microcontrolador, no contiene datos en la memoria ROM. Para que pueda controlar algún proceso es necesario generar o crear y luego grabar en la EEPROM o equivalente del microcontrolador algún programa, el cual puede ser escrito en lenguaje ensamblador u otro lenguaje para microcontroladores; sin embargo, para que el programa pueda ser grabado en la memoria del microcontrolador, debe ser codificado en sistema numérico hexadecimal que es finalmente el sistema que hace trabajar al microcontrolador cuando éste es alimentado con el voltaje adecuado y asociado a dispositivos analógicos y discretos para su funcionamiento.

2.1 CARACTERISTICAS Los microcontroladores están diseñados para reducir el costo económico y el consumo de energía de un sistema en particular. Por eso el tamaño de la unidad central de procesamiento, la cantidad de memoria y los periféricos incluidos dependerán de la aplicación. El control de un electrodoméstico sencillo como una batidora utilizará un procesador muy pequeño (4 u 8 bits) porque sustituirá a un autómata finito. En cambio, un reproductor de música y/o vídeo digital (MP3 o MP4) requerirá de un procesador de 32 bits o de 64 bits y de uno o más códecs de señal digital (audio y/o vídeo). El control de un sistema de frenos ABS (Antilock Brake System) se basa normalmente en un microcontrolador de 16 bits, al igual que el sistema de control electrónico del motor en un automóvil. Los microcontroladores representan la inmensa mayoría de los chips de computadoras vendidos, sobre un 50% son controladores "simples" y el restante corresponde a DSP más especializados. Mientras se pueden tener uno o dos microprocesadores de propósito general en casa (Ud. está usando uno para esto), usted tiene distribuidos seguramente entre los electrodomésticos de su hogar una o dos docenas de microcontroladores. Pueden encontrarse en casi cualquier dispositivo electrónico como automóviles, lavadoras, hornos microondas, teléfonos, etc.

Un microcontrolador difiere de una unidad central de procesamiento normal, debido a que es más fácil convertirla en una computadora en funcionamiento, con un mínimo de circuitos integrados externos de apoyo. La idea es que el circuito integrado se coloque en el dispositivo, enganchado a la fuente de energía y de información que necesite, y eso es todo. Un microprocesador tradicional no le permitirá hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Hay que agregarle los módulos de entrada y salida (puertos) y la memoria para almacenamiento de información. Un microcontrolador típico tendrá un generador de reloj integrado y una pequeña cantidad de memoria de acceso aleatorio y/o ROM/EPROM/EEPROM/flash, con lo que para hacerlo funcionar todo lo que se necesita son unos pocos programas de control y un cristal de sincronización. Los microcontroladores disponen generalmente también de una gran variedad de dispositivos de entrada/salida, como convertidor analógico digital, temporizadores, UARTs y buses de interfaz serie especializados, como I2C y CAN. Frecuentemente, estos dispositivos integrados pueden ser controlados por instrucciones de procesadores especializados. Los modernos microcontroladores frecuentemente incluyen un lenguaje de programación integrado, como el lenguaje de programación BASIC que se utiliza bastante con este propósito. Los microcontroladores negocian la velocidad y la flexibilidad para facilitar su uso. Debido a que se utiliza bastante sitio en el chip para incluir funcionalidad, como los dispositivos de entrada/salida o la memoria que incluye el microcontrolador, se ha de prescindir de cualquier otra circuitería. 2.1.2 LENGUAJE DE PROGRAMACIÓN C El lenguaje C dispone de todas las ventajas de un lenguaje de programación de alto nivel (anteriormente descritas) y le permite realizar algunas operaciones tanto sobre los bytes como sobre los bits (operaciones lógicas, desplazamiento etc.). Las características de C pueden ser muy útiles al programar los microcontroladores. Además, C está estandarizado (el estándar ANSI), es muy portable, así que el mismo código se puede utilizar muchas veces en diferentes proyectos. Lo que lo hace accesible para cualquiera que conozca este lenguaje sin reparar en el propósito de uso del microcontrolador. C es un lenguaje compilado, lo que significa que los archivos fuentes que contienen el código C se traducen a lenguaje máquina por el compilador. Todas estas características hicieron al C uno de los lenguajes de programación más populares.

MICROCONTROLADORES, RONDON JUAN PABLO, CRISTOBAL MOSCOSO PEÑA, BRAYAN STEVEN BERMUDEZ

. Fig.1Proceso de programación con Lenguaje C

MICROCONTROLADORES, RONDON JUAN PABLO, CRISTOBAL MOSCOSO PEÑA, BRAYAN STEVEN BERMUDEZ

3. PROCEDIMIENTO DE ELABORACION PRÁCTICA DE LABORATORIO No 1 SENSORICA

 Para iniciar con el montaje y la elaboración de la práctica de laboratorio simulada se debe tener a disposición el circuito suministrado por el docente y el código #include #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay (clock=4000000) #include #include int i,x; // Declaración de variables para conversión de caracter a entero float conversion, voltajeadc, resistencia; // Declaración de variable // para almacenamiento de lectura ADC, este formato permite cubrir //el rango operacional char k; // Declaración de variable para captura desde teclado matricial // Informacion almacenada en la ROM por medio de arreglos unidimensionales // teniendo en cuenta que el LCD es de tipo 2x16(dos filas y 16 columnas) const char Institucion[] = {"INSTITUCION:\nITFIP "}; const char Asignatura[] = {"ASIGNATURA:\nMICROS "}; const char Nombre1[] = {"NOMBRE1\nAPELLIDO1 "}; const char Nombre2[] = {"NOMBRE2\nAPELLIDO2 "}; const char Fecha[] = {"FECHA:\ndd/mm/aaaa "}; void menu(void){ // Función creada para despliegue de menu principal lcd_gotoxy(1,1); // Ubica el cursor en la primera columna y primera fila printf(lcd_putc,"1-LECTURA SENSOR"); // Imprime leyenda en el LCD lcd_gotoxy(1,2); // Ubica el cursor en la primera columna y segunda fila printf(lcd_putc,"2-INFORMACION"); // Imprime leyenda en el LCD }// fin función menu() void opcion(x){ // Función creada para desarrollo de las opciones del menu // por lo que posee un parámetro de entrada definido por la variable x if(x==1){ // Si el usuario pulsa el número 1 printf(lcd_putc,"\f RESISTENCIA "); // Imprime leyenda en el LCD while(true){ // Ciclo para lectura continua del valor del ADC lcd_gotoxy(1,2); // Ubica el cursor en la primera columna y segunda fila read_adc(ADC_START_ONLY); // Inicia conversión conversion = read_adc(); // Almacena valor de lectura ADC delay_us(20);// tiempo de retardo de conversión voltajeadc = (conversion/65472)* 5;// Se obtiene lectura en voltaje resistencia = voltajeadc*(100/0.05);// Lectura sensor // cuya resolución es de 50mv/100 ohmios printf(lcd_putc,"%f ohmios",resistencia);// Imprime valor ADC en el LCD } // fin del ciclo while } // fin de if (x==1) else if(x==2){ // Si se escoge la opcion 2 read_adc(ADC_OFF); printf(lcd_putc,"\f2-INFORMACION",);// Imprime leyenda en el LCD delay_ms(1000); while(true){ // Ciclo para despliegue constante de información delay_ms(1000); printf(lcd_putc,"\f%s",Institucion);// Imprime leyenda en el LCD delay_ms(1000); printf(lcd_putc,"\f%s",Asignatura);// Imprime leyenda en el LCD delay_ms(1000); printf(lcd_putc,"\f%s",Nombre1);// Imprime leyenda en el LCD delay_ms(1000);

MICROCONTROLADORES, RONDON JUAN PABLO, CRISTOBAL MOSCOSO PEÑA, BRAYAN STEVEN BERMUDEZ printf(lcd_putc,"\f%s",Nombre2);// Imprime leyenda en el LCD delay_ms(1000); printf(lcd_putc,"\f%s",Fecha);// Imprime leyenda en el LCD } } } void main() // Función principal { setup_adc_ports(AN0_VREF_VREF); // Define los pines para el ADC setup_adc(ADC_CLOCK_INTERNAL); // Define reloj interno para el ADC set_adc_channel(0);// Selecciona el canal 0 lcd_init(); // Inicializa el LCD kbd_init(); // Inicializa el teclado matricial port_b_pullups(true); // Habilita configuración pullups para teclado menu(); // Invocación de función menu() while(true){ // Ciclo continuo para trabajo constante del microcontrolador k= kbd_getc(); // Captura caracter desde el teclado matricial i=k-48; // Conversión de caracter a entero if(k!=0){ // Si se pulsa un botón del teclado opcion(i); // Invocación función opcion() cuyo parámetro de entrada // es el dígito ingresado por el usuario desde el teclado // matricial } // fin de if(k!=0) } // fin ciclo while } // fin función principal Código suministrado por el docente Se crear nuevas variables medición y temper , se remplaza los datos impreso en el lcd por termómetro, temperatura, actual y °c. el "0.48875" sale de dividir 5 1023 y el resultado de eso multiplicarlo por 100, el 5 sale de los 5 voltios aplicado a el voltage de referencia, los 1023 salen de los 10 bit de resolucion del conversor analogico digital que seleccionamos. Si utlizaramos la resolucion de 8 bist del conversor analogico digital, la formula fuera (5 255)*100 ya que con 8 bits el numero maximo posible es de 0-255

MICROCONTROLADORES, RONDON JUAN PABLO, CRISTOBAL MOSCOSO PEÑA, BRAYAN STEVEN BERMUDEZ

Figura 4. Código suministrado por el docente modificado para el sensor media la temperatura Este código se compila y se carga al microcontrolador de la simulación.

MICROCONTROLADORES, RONDON JUAN PABLO, CRISTOBAL MOSCOSO PEÑA, BRAYAN STEVEN BERMUDEZ Figura 5. Simulación al realizar la modificación al código

4 ANALISIS DE RESULTADOS De la práctica simulada se puede decir que los resultados fueron los esperados gracias a la orientación del docente y a la intuición de los estudiantes se logró realizar la modificación al código y a la simulación que el docente solicito. Solo se modificaron el código dos líneas de código, se crearon nuevas variables y se obtuvieron los resultados esperados, el ambiente de trabajo fue el adecuado y se contaron con todas las herramientas necesarios.



  

 

5 CONCLUCIONES   

Se remplazó el potenciómetro por un lm35. medicion=read_adc () hace la conversión AD temper=medicion*(0.48875); se hace la conversión de binario a °c donde el "0.48875" sale de dividir 5 1023 y el resultado de eso multiplicarlo por 100 el 5 sale de los 5 voltios aplicado a el voltaje de referencia, los 1023 salen de los 10 bit de resolución del conversor analógico digital que seleccionamos.

Si utilizáramos la resolución de 8 bits del conversor analógico digital, la formula fuera (5 255)*100 ya que con 8 bits el número máximo posible es de 0-255 Cada vez que se declara un vector se usa [ ] El While (true) es una opción que crea un ciclo infinito y hace que el microcontrolador permanezca en funcionamiento y no se apague Set_timer0 (0) Es la instrucción que permite inicializar el timer. Solo se requirió la modificación de dos líneas de código para lograr los resultados esperados.

6 WEBGRAFIA  

http://learn.mikroe.com/ebooks/microcontroladorespicc/ chapter/lenguajes-de-programacion/ http://4.bp.blogspot.com/nXGLfYZbRlQ/Ub0aNZTDV8I/AAAAAAAAANo/UWAH wvOwCz4/s1600/7-segmentospinout_www_tecnoface_com.gif