You are on page 1of 7

Proyecto: Frecuencimetro Digital

Preguntas de anteproyecto:
Qu se quiere hacer?
Se quiere elaborar un frecuencmetro, en el cual, al ingresar una seal con X
frecuencia, se pueda leer e informar mediante un LCD y/o la PC misma, cul es la
frecuencia de esa seal.
Por qu se quiere hacer?
Se quiere hacer porque en este proyecto, la parte principal es el tiempo; incluye
tanto la parte de software como de hardware.
Para qu se quiere hacer?
Para poder demostrar una de las tantas utilidades que tiene la programacin y
sus aplicaciones en c (en este caso utilizamos un PIC16F887).
En dnde se lo quiere hacer?
Trabajamos en el rea de Laboratorio II y en el domicilio de cada uno de los
integrantes.
Cmo se lo quiere hacer?
Trabajando de ambos lados, o sea, mientras se ve cmo va a quedar el
software, se trabaja en el hardware, ya que ambos tienen un vnculo importante
sobre cmo quedar el producto final.
A quines est dirigido el proyecto?
Se destina a aquellos que tengan que trabajar con un cierto rango de
frecuencias y necesiten saber que la seal este a su frecuencia favorable a su
trabajo.
Quines lo van a hacer?
Lo van a hacer los tres integrantes del grupo, con ayuda del profesor para
aclarar dudas y preguntas.
Con qu se lo va a hacer?
Para la parte de software y planeamiento hardware utilizamos las netbooks que
nos han entregado, toda la parte de hardware (soldadura, agujereo, corte) se
trabaja en el mbito de Laboratorio II y en los domicilios de los integrantes.
Con qu se va a costear?
Todos los gastos vienen del dinero de la familia de los integrantes y de los
mismos, todo pagado en efectivo.


Problemas que se encontraron al realizar el
proyecto:
Que el programa en el cual simula la futura placa, no funcione de la manera que el
usuario quiere.
Que haya un problema de soldadura en el cual provoca que la placa no funcione
de manera debida.
Que el driver del LCD no sea el correcto para el proyecto.
Que los materiales no tengan stock en ciertas sucursales.
Que los materiales no sean fciles de encontrar en las zonas cercanas al Instituto
y de los domicilios de los integrantes.
Que al realizar el diseo de la placa, no se encuentren los mdulos de los
componentes a utilizar, provocando que tengamos que crear de manera propia los
mdulos.
Que los componentes ya estn mal de fbrica.
No tener acceso a la informacin sobre algn componente, ya sea porque no se
tenga acceso a Internet, o en la datasheet no encontremos lo que nosotros
buscamos.
Que al realizar el proceso de colocar el silkscreen de la placa, no salga con
resultados favorables.
No todos los componentes tienen el mismo tamao de pads, por lo cual, al
agujerear la placa, cambiar las mechas.
Chequear el cable que se conecta de la placa principal al programador.
Al momento de la compra del gabinete, chequear el tamao de las placas, la
ubicacin de las salidas, la altura de los componentes, el material del gabinete en
si.

Llamar por telfono al negocio para preguntar si tienen stock del componente,
para ahorrar el tiempo en ir al negocio y preguntar.


Fuentes para poder llevar a cabo el
proyecto:
http://labo2cuba.blogspot.com.ar/
Libro Compilador CCS C
http://picmania.garcia-cuervo.net/tecnicas_en_c_1.php


Negocios en donde se consiguieron los
componentes:
Musikman - Blanco Encalada 2274 - Tel.: (54 11) 4780-0073
Bousa - Ciudad de la Paz 2226 - Tel.: 011 4783-0920
SYC Electronica - Paran 274 - Tel.: 4371-5300
Microelectrnica S.H - Sucursal Paran - Paran 180 - Tel.: (54 11) 4375-0066
La Casa del Transformador "ALAMTEC" - Paran 220 - Tel: 4371-1023


Programas utilizados para realizar el
proyecto:
KiCad (para el diseo de las placas).
Link para descargar KiCad: http://iut-tice.ujf-grenoble.fr/cao/
PIC C COMPILER (para programar el PIC en lenguaje C).
ISIS PROTEUS (para la simulacin del programa en C en la placa futura).


Cdigo utilizado para el PIC en el lenguaje
C:
#include frec.h
//-----------------------------------------------------------------------
// Variables globales
int1 flagToggleFlanco, flagHayDatos;
int16 t1,t2,tt;
float st=0.0;
float valf=0.0;

//-----------------------------------------------------------------------
// Constantes
float const uSxTick = 0.2;

//-----------------------------------------------------------------------
#define LCD_TYPE 2
#include <lcd.c>

//-----------------------------------------------------------------------
#int_ext
void handle_ext_int(){
if(flagToggleFlanco==0){
flagToggleFlanco=1;
t1=get_timer1();
ext_int_edge(0,H_TO_L);
}else{
t2=get_timer1();
ext_int_edge(0,L_TO_H);
flagToggleFlanco=0;
set_timer1(0);
if(flagHayDatos==0){
flagHayDatos=1;
}
}
}

//-----------------------------------------------------------------------------
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1); // -- Revisar
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
//-----------------------------------------------------------------------------
ext_int_edge(0,L_TO_H); // Configuro captura de 1er flanco de subida
flagToggleFlanco=0; // inicializo el Flag para cambiar de flanco

enable_interrupts(int_ext);
enable_interrupts(global);
set_tris_d(0);

printf(\r\nFrecuencimetro Digital\r\n);
lcd_init();

do{
if(flagHayDatos==1){ // Detecto que ya hay datos de flancos
if(t2 > t1){
tt = t2 t1;
st = uSxTick * tt; // Calculo en uS el tiempo.
Valf = 5000.0 / tt;
printf(Ticks %Lu - %Lu = %Lu = %3.1fuS \r\n,t2,t1,tt,st);
printf(Frecuencia: %2.3f Hz \r\n,valf);
lcd_gotoxy(1,1);
lcd_putc(Frecuencia);
lcd_gotoxy(1,2);
printf(lcd_putc,%2.3f Hz,valf);
flagHayDatos=0; // Indico que ya he transmitido lo pendiente.
}
}
}while(TRUE);
}


Para capturar la frecuencia utilizamos el TIMER1, lo que el programa hace
es que captura el primer flanco, ya sea ascendente o descendente, guardar el
dato en una variable, capturar el segundo flanco y guardarlo en otra variable.
Se hace la diferencia entre ambos valores, multiplicamos el resultado por el
tiempo que dura cada tick (depende del cristal que utilizemos), y
obtendremos el tiempo.



Diseo final de la Placa de Entrada y la
Placa Principal:










Componentes Crticos:

DISPLAY LCD GDM1602K.

PIC16F887

MAX232

DB-9
LM311
SWITCH
RJ12
ALIMENTACIN 9V
CRISTAL 20MHZ
PRESET 10K
7805


Links de las hojas de dato (datasheet) de los
componentes:

https://www.sparkfun.com/datasheets/LCD/GDM1602K.pdf

http://ww1.microchip.com/downloads/en/DeviceDoc/41291D.pdf

http://www.ti.com/lit/ds/symlink/max232.pdf

http://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_DB9-
USB-RS232.pdf
https://www.sparkfun.com/datasheets/Components/LM7805.pdf


Demostracin de la simulacin en el
programa ISIS PROTEUS:



Lo que demuestra es el ciclo completo de la frecuencia, en la ventana de la
izquierda, muestra la frecuencia y el perodo de sta. El LCD solo muestra la
frecuencia, esto permite que verlo en la PC la frecuencia sea opcional.

You might also like