0% encontró este documento útil (0 votos)
72 vistas11 páginas

6 Contadores

Este documento describe cómo configurar y usar contadores en el microcontrolador PIC18F4550 usando el lenguaje C. Explica que los contadores TMR0 y TMR1 cuentan pulsos externos y cómo configurarlos, incluyendo ejemplos de código para contar pulsos y medir la velocidad de un motor usando el TMR1. También presenta un problema propuesto para medir la velocidad de un motor y activar salidas si la velocidad está fuera de un rango configurado.

Cargado por

Myrian Naced
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)
72 vistas11 páginas

6 Contadores

Este documento describe cómo configurar y usar contadores en el microcontrolador PIC18F4550 usando el lenguaje C. Explica que los contadores TMR0 y TMR1 cuentan pulsos externos y cómo configurarlos, incluyendo ejemplos de código para contar pulsos y medir la velocidad de un motor usando el TMR1. También presenta un problema propuesto para medir la velocidad de un motor y activar salidas si la velocidad está fuera de un rango configurado.

Cargado por

Myrian Naced
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/ 11

Configuración de los contadores usando

LENGUAJE C CON CSS Y PROTEUS

Elaborado por:

Ivan Londoño
José Fernando Perez
Los contadores

Un contador es un registro interno de los microcontroladores


que se incrementa de forma automática cuando recibe pulsos externos por
medio de uno de los pines de un puerto:

El microcontrolador PIC18F4550 tiene dos contadores TMR0 y TMR1 y


cuentas los pulsos que llegan por RA4 y RC0 respectivamente.

Bloque de TMR0 Bloque de TMR1


Configuración (8 bits) configuración (16 bits)

RA4 RC0
Configuración del TMR1

El TMR1 es un contador de 16 bits es decir que puede contar


Desde 0 hasta 65535 pulsos. Su circuito interno esta
conformado por los siguientes elementos:
Configuración del TMR1

Cundo se requieren contar pulsos externos , estos debe llegar a


través del pin RC0, se debe habilitar el prescaler en 1 para que
no modifique la frecuencia de los pulsos (Fext) y se debe
activar la señal TMR1ON que permite que los pulsos lleguen
al TMR1.
Configuración del TMR1

Las instrucciones que configuran el TMR1 en el compilador CCSC son:

 Instrucción que habilita el TMR1 y lo configura como contador de pulsos externos sin división de frecuencia
es decir Prescaler =1 :

setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);

• Instrucción que deshabilita el TMR1 manteniendo el conteo actual:

setup_timer_1(T1_DISABLED);

• Instrucción que escribe un valor de 16 bis en el TMR1, se usa cuando se requiere darle un valor inicial al
conteo . Se debe tener en cuenta que X puede ser una variable int16 o una constante entre 0 y 65535

set_timer1(X);

• Instrucciones que lee el contenido del conteo (TMR1), este conteo se debe guardar en una variable
declarada como int16 (ejemplo int16 Z)

Z = get_timer1();
Ejemplo 1: Conteo de pulsos y visualización de
Conteo en un LCD

Escriba un programa para el microcontrolador


PIC18F4550 que cuente los pulsos que llegan por
el pin RC0 y visualice dicho conteo en un display
de cristal liquido como se observa en la
Siguiente grafica:
Ejemplo 1: Conteo de pulsos y visualización de
Conteo en un LCD

#Include <18f4550.h>
#use delay(clock=4000000)
#include <lcd.c>

Void Main ()
{
int16 X;
lcd_init();
setup_timer_1( T1_EXTERNAL | T1_DIV_BY_1 );
set_timer1(0);
lcd_putc("Pulsos:");

ciclo: X=get_timer1();
lcd_gotoxy(8,1);
printf(Lcd_putc,"%05lu",Aux);
goto ciclo;
}
Ejemplo 2: Medición de Velocidad de un Motor

Escriba un programa para el microcontrolador


PIC18F4550 que mida la velocidad de un motor DC en
RPM, que usa un ecoder que envía 4 pulsos por cada
giro y visualice dicha velocidad en un display de
cristal liquido como se observa en la Siguiente grafica:
Ejemplo 2: Medición de Velocidad de un Motor

#include <18F4550.h>
#use delay(clock=4000000)
#include <lcd.c>

Void Main ()
{
int16 X;
float vel;
lcd_init();
setup_timer_1( T1_EXTERNAL | T1_DIV_BY_1 );
lcd_putc("veloc: ");

Se pone el
contador en 0 y se
ciclo: llama un delay de A partir de los pulsos
set_timer1(0); 1segundo contado se calcula la
delay_ms(1000); velocidad teniendo en
X=get_timer1(); cuenta que 4 pulsos
vel=((float) X/4)*60; equivalena una vuelta y
lcd_gotoxy(8,1); que
printf(Lcd_putc,"%04.0f RPM",vel); 1 minuto = 60segundos
goto ciclo;
}
Problema Propuesto:
Medición de Velocidad de un Motor
Escriba un programa para el microcontrolador PIC18F4550 que mida la velocidad de un motor DC en
RPM, que usa un ecoder que envía 8 pulsos por cada giro y visualice dicha velocidad en un display de
cristal liquido como se observa en la Siguiente grafica:
Además compare la velocidad medida con los valores mínimos y máximos introducidos por cuatro
pulsadores conectados en la parte alta del Puerto B.

Interruptores para
modificar los valores
Mínimos y máximos
A compara con la
velocidad
Problema Propuesto:
Medición de Velocidad de un Motor

Si la velocidad medida es menor que la velocidad Si la velocidad medida es mayor que la velocidad
mínima configurada se debe mínima configurada se debe
Activar la salida conectada en el pin RC6 Activar la salida conectada en el pin RC7

Si la velocidad medida se encuentra dentro del


rango mínimo y máximo los led’s deben permanecer
apagados

También podría gustarte