[go: up one dir, main page]

0% encontró este documento útil (0 votos)
36 vistas16 páginas

Práctica 1.1

Este documento presenta el desarrollo de un programa para un microcontrolador que hace oscilar un LED con nueve periodos diferentes (de 10 a 500 milisegundos) según se presione un botón pulsador. El programa inicializa las entradas y salidas, define una tabla con los periodos y usa un ciclo infinito para togglear las salidas y detectar cuando se presiona el botón, incrementando así el periodo de oscilación del LED.

Cargado por

ARTURO
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas16 páginas

Práctica 1.1

Este documento presenta el desarrollo de un programa para un microcontrolador que hace oscilar un LED con nueve periodos diferentes (de 10 a 500 milisegundos) según se presione un botón pulsador. El programa inicializa las entradas y salidas, define una tabla con los periodos y usa un ciclo infinito para togglear las salidas y detectar cuando se presiona el botón, incrementando así el periodo de oscilación del LED.

Cargado por

ARTURO
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

INSTITUTO TECNOLÓGICO

DE LÁZARO CÁRDENAS

PRÁCTICA 1.1.

ALUMNOS: JAIME HUMBERTO GARCÍA VALLE 20560102

ARTURO JOREL AYALA CRUZ 20560024

CARRERA: INGENIERÍA ELECTRÓNICA

PROFESOR: M.C. JULIO CÉSAR GALLO SÁNCHEZ

MATERIA: APLICACIONES DE MICROCONTROLADORES

UNIDAD 1: MICROCONTROLADORES

CD Y PTO. LÁZARO CÁRDENAS MICHOACÁN JUEVES, 14 DE SEPTIEMBRE DE 2023


71S Aplicaciones de Microcontroladores Ingeniería Electrónica

ÍNDICE

Introducción....................................................................................................................................... 1
Material .............................................................................................................................................. 2
Equipo ................................................................................................................................................ 2
Desarrollo ........................................................................................................................................... 3
Funcionamiento del código ............................................................................................................. 3
Prueba del programa ....................................................................................................................... 6
Código del programa ...................................................................................................................... 12
Conclusión........................................................................................................................................ 13
Bibliografía ...................................................................................................................................... 14

i
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Introducción

En esta práctica se desarrollará un programa que consiste en hacer oscilar un led con periodo
de 10, 20, 50, 100, 150, 200, 300, 400 y 500 milisegundos según se presione un botón
pulsador. El programa se iniciará con el periodo mínimo (10ms), al presionar el botón se
cambiará al segundo periodo (20ms) y así sucesivamente hasta llegar al periodo más grande,
donde al presionar el botón nuevamente se reseteará el modo al periodo inicial.

El programa en esencia es muy sencillo, sin embargo, es necesario utilizar cierta lógica de
programación para evitar problemas relacionados al funcionamiento físico del botón pulsador
tales como el efecto rebote y el tiempo de duración del pulso. Todo esto para que el programa
funcione de manera perfecta y no exista ninguna restricción o condición de uso. El diagrama
eléctrico propuesto para la práctica se muestra en la Figura 1.

5V

RESET 39kΩ

MCLR/Vpp/RE3 1 40 RB7
RA0 2 39 RB6
RA1 3 38 RB5
RA2 4 37 RB4
RA3 5 36 RB3
PIC18F45K50

RA4 6 35 RB2
Salida Osciloscopio
RA5 7 34 RB1
5V
RE0 8 33 RB0
470Ω RE1 9 32 VDD 5V
RE2 10 31 VSS
LEDA VDD 11 30 RD7
VSS 12 29 RD6
5V
RA7 13 28 RD5
BOT1
RA6 14 27 RD4
RC0 15 26 RC7
RC1 16 25 RC6
5V
RC2 17 24 D+
4.7kΩ
VUSB3V3 18 23 D-
RD0 19 22 RD3
RD1 20 21 RD2

Figura 1.- Diagrama eléctrico propuesto para la práctica.

1
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Material

1. Tarjeta de evaluación µvva (Miuva) con PIC18F45K50.


2. Cable Dupont.
3. Cable Micro USB.

Equipo

1. Osciloscopio.
2. Puntas de osciloscopio.
3. Computadora con los softwares MPLAB IDE, CCS y PICkit 2 instalados.

2
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Desarrollo

Funcionamiento del código

El programa se inicia importando la librería del PIC18F45K50 indicando con comillas dobles
que el archivo se encuentra en la carpeta del proyecto, después con el fuse NOWDT se
desactiva el watchdog y por último se define la frecuencia de operación del microcontrolador
a 48 MHz.

#include "18F45k50.h"
#fuses NOWDT
#use delay(internal=48MHz)

Las líneas siguientes definen los pines PB0, PE2 y PC0 con un nombre apropiado para la
función que desempeñan en el programa. “MED” debido a que será la salida para medir con
el osciloscopio, “LED” porque por ella se encenderá el LED indicador del periodo
seleccionado y “BOT1” debido a que a esta se conectará el botón pulsador.

#define MED PIN_B0


#define LED PIN_E2
#define BOT1 PIN_C0

Se declara una tabla constante tipo char que contendrá todos los valores de los periodos
divididos por 10, debido a un arreglo necesario para el programa que se hará más adelante.

const char Table[9]={1,2,5,10,15,20,30,40,50};

3
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

La variable “SEL” declarada a continuación será utilizada para llevar el conteo sobre las
veces que se ha presionado el botón, “i” se usará como variable auxiliar para realizar un ciclo
For y “BOTLA” como variable para guardar el estado anterior del botón, necesario para
realizar la detección de flanco.

char sel=0,i=1;
char BOTLA=0;

La función principal se comienza a continuación. En primer lugar, se declaran los pines LED
y MED como salidas y se saca un 0 por estas. Posteriormente se configura BOT1 como
entrada.

void main(void){
output_drive(MED);
output_drive(LED);
output_low(MED);
output_low(LED);
output_float(BOT1);

Una vez configuradas las entradas y salida se inicia el ciclo infinito for, donde se colocará
todo el código que el microcontrolador estará ejecutando repetidamente, por ello es aquí
donde se estarán toggleando las salidas LED y MED este toggleo es el que generará la salida
cuadrada, exactamente medio ciclo por cada cambio de valor.

for(;;)
{
output_toggle(MED);
output_toggle(LED);

4
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Los periodos se guardaron divididos por 10 debido a que es necesario una división entre 2 ya
que el tiempo de retardo que le demos a las salidas en 0 o 1 definirá tan solo la mitad del
periodo. La división entre 5 es debida a la utilización de un for de 5 iteraciones utilizado para
leer el valor de BOT1 cinco veces por cada mitad de periodo, con la finalidad de que el
microcontrolador no se pierda ningún pulso del botón.

for(i=1;i<=5;i++)
{
delay_ms(Table[sel]);

La función de detección de flanco positivo se hace utilizando un If con una AND de dos
condiciones, la primera es que el valor de BOT1 sea 1 y la segunda es que el valor anterior
de BOT1 es 0 (esta condición solo se cumple justo después de darse un flanco positivo). Al
cumplirse la condición, la variable SEL se incrementará en 1 para registrar el pulso, el
siguiente If es necesario para que la variable SEL no sea mayor o igual a 9 ya que son solo 9
periodos distintos. Para terminar, a la variable BOTLA se le asigna el valor del botón en ese
momento ya que este valor pasará a ser el valor anterior en el siguiente pulso.

if(input(BOT1) && BOTLA==0)


{
sel++;
if(i>=9) sel=0;
delay_ms(2);
}
BOTLA= input(BOT1);
}
}
}

5
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Prueba del programa

Primeramente se descarga el programa en la tarjeta Miuva, mostrada la Figura 2, y se realizan


las conexiones correspondientes para comprobar su funcionamiento empleando un
osciloscopio, tal como se muestra en la Figura 3.

Figura 2.- Tarjeta de evaluación µvva (Miuva) con PIC18F45K50.

Figura 3.- Esquema de conexiones para la tarjeta Miuva con osciloscopio.

6
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Una vez cargado el programa en la tarjeta de evaluación, al empezar a correr este se tendrá a
la salida la señal cuadrada con periodo de 10 ms, conectamos el osciloscopio a PB0 (MED)
y se obtiene la señal que se observa en la Figura 4.

Figura 4.- Primer señal obtenida al correr el programa (pulsos=0).

Tal como se explicó en la introducción, al pulsar el botón una vez el periodo cambiará a 20
ms y así seguirá funcionando con cada clic que demos al botón hasta que se haya dado un
total de 8 clics y el periodo sea 500ms, después de eso se volverá a comenzar desde los 10
ms. La medición de estas señales se puede apreciar en la Figura 5 hasta la Figura 12.

7
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Figura 5.- Segunda señal obtenida al correr el programa (pulsos=1).

Figura 6.- Tercera señal obtenida al correr el programa (pulsos=2).

8
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Figura 7.- Cuarta señal obtenida al correr el programa (pulsos=3).

Figura 8.- Quinta señal obtenida al correr el programa (pulsos=4).

9
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Figura 9.- Sexta señal obtenida al correr el programa (pulsos=5).

Figura 10.- Séptima señal obtenida al correr el programa (pulsos=6).

10
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Figura 11.- Octava señal obtenida al correr el programa (pulsos=7).

Figura 12.- Novena señal obtenida al correr el programa (pulsos=8).

11
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Código del programa

#include "18F45k50.h"
#fuses NOWDT
#use delay(internal=48MHz)
#define LED PIN_E2
#define MED PIN_B0
#define BOT1 PIN_C0

const char Table[9]={1,2,5,10,15,20,30,40,50};


char sel=0,i=1;
char BOTLA=0;

void main(void){

output_drive(MED);
output_drive(LED);
output_low(MED);
output_low(LED);
output_float(BOT1);
for(;;)
{
output_toggle(MED);
output_toggle(LED);

for(i=1;i<=5;i++)
{
delay_ms(Table[sel]);
if(input(BOT1) && BOTLA==0)
{
sel++;
if(i>=9) sel=0;
delay_ms(2);
}
BOTLA= input(BOT1);
}
}
}

12
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Conclusión

Esta primera práctica de la materia ha servido como una buena introducción a la


programación de microcontroladores en lenguaje de alto nivel C. Ha servido para contrastar
con la programación a nivel de registro de la materia de microcontroladores anterior. Este
tipo de programación al ser de más alto nivel tiene una mayor similitud o cercanía con el
lenguaje humano y hace que ciertas acciones como sacar un dato por un puerto, la
configuración del puerto, los retardos y los ciclos se puedan realizar incluso en una sola línea
de código con una función de nombre sencillo de recordar para el programador.

La práctica también ha servido para ver que hasta en los programas que parecen muy sencillos
es necesario tener que abarcar todo tipo de escenario en el que puedan fallar y no solo en
referencia a errores en la lógica del programa, sino también a factores físicos que no
contemplamos. En esta práctica se ha aprendido a solucionar errores correspondientes a las
características físicas de un botón pulsador, donde pueden existir tanto un error de rebote (al
ser un elemento mecánico no tiene una transición limpia de un estado a otro), error por el
tiempo que la persona mantiene presionado el botón que aunque para la persona puede
parecer que lo haga muy rápido para el microcontrolador generalmente esto es muy lento y
él alcanza a hacer muchas cosas más durante ese tiempo que se tiene presionado.

13
Reporte Práctica 1.1
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Bibliografía

1. Fabricante: Microchip.
Título: PIC18(L)F2X/45K50 Datasheet.
Editorial: Microchip.

2. Autor: Julio Cesar Gallo Sánchez.


Título: Programando el Microcontrolador PIC18F4550 en Leguaje C con el
compilador CCS en MPLAB.
Edición: 1era Edición.

3. Autores: Eduardo García Breijo.


Título: Compilador C CCS y simulador PROTEUS para Microcontroladores PIC.
Edición: Primera Edición.
Editorial: Alfaomega.

14
Reporte Práctica 1.1

También podría gustarte