Haremos el famoso frecuencimetro con un pic16f628a y un LCD para visualizar los datos medidos, la instruccion usada es COUNT o contar pulsos en español.
LA DECLARACIÓN COUNT. Sirve para contar el número de pulsos que ingresan por un pin en un determinado tiempo, este a su vez lo guarda en una variable para su posterior procesamiento, la manera de utilizarlo es la siguiente:
COUNT portb.1,1000,cuenta
Lo interpretamos así: cuenta pulsos a través del puerto B1 en un período de 1000 milisegundos y lo guarda en la variable previamente creada llamada cuenta, el período podemos variarlo de 1 a 65535.
EL CIRCUITO:
;EL PROGRAMA
CMCON = 7 ;Puerto A con In/out digitales
Define LCD_DREG PORTB ;Rb4-Rb7 conectados
Define LCD_DBIT 4 ;al lcd D4-D7
Define LCD_RSREG PORTA
Define LCD_RSBIT 0 ;Rs del lcd conectado a Ra0
Define LCD_EREG PORTA
Define LCD_EBIT 2 ;E del lcd conectado a Ra2
cuenta VAR WORD ;variable CUENTA, de 0 a 65535
inicio:
COUNT portb.0,1000,cuenta ;contar pulsos en el puerto B.0
LCDOUT $FE, 1 ;limpiar pantalla LCD
LCDOUT $FE,$82,"Frecuencia:" ;cursor centrado en 1era línea
LCDOUT $FE,$C5, DEC cuenta," Hertz" ;2da línea sacar el valor
GOTO inicio ;decimal de la variable cuenta
end
Aqui esta al archivo HEX. lo bajan de este link:
http://www.4shared.com/file/LmBUs1Il/frecuencimetro.html
Para probar este ckto podriamos implementar un astable con el LM555 y conectar su salida a la entrada RB0 del pic16f628a, pero ojo, alimentar solo con 5 voltios DC ambos circuitos.
LA DECLARACIÓN COUNT. Sirve para contar el número de pulsos que ingresan por un pin en un determinado tiempo, este a su vez lo guarda en una variable para su posterior procesamiento, la manera de utilizarlo es la siguiente:
COUNT portb.1,1000,cuenta
Lo interpretamos así: cuenta pulsos a través del puerto B1 en un período de 1000 milisegundos y lo guarda en la variable previamente creada llamada cuenta, el período podemos variarlo de 1 a 65535.
EL CIRCUITO:
;EL PROGRAMA
CMCON = 7 ;Puerto A con In/out digitales
Define LCD_DREG PORTB ;Rb4-Rb7 conectados
Define LCD_DBIT 4 ;al lcd D4-D7
Define LCD_RSREG PORTA
Define LCD_RSBIT 0 ;Rs del lcd conectado a Ra0
Define LCD_EREG PORTA
Define LCD_EBIT 2 ;E del lcd conectado a Ra2
cuenta VAR WORD ;variable CUENTA, de 0 a 65535
inicio:
COUNT portb.0,1000,cuenta ;contar pulsos en el puerto B.0
LCDOUT $FE, 1 ;limpiar pantalla LCD
LCDOUT $FE,$82,"Frecuencia:" ;cursor centrado en 1era línea
LCDOUT $FE,$C5, DEC cuenta," Hertz" ;2da línea sacar el valor
GOTO inicio ;decimal de la variable cuenta
end
Aqui esta al archivo HEX. lo bajan de este link:
http://www.4shared.com/file/LmBUs1Il/frecuencimetro.html
Para probar este ckto podriamos implementar un astable con el LM555 y conectar su salida a la entrada RB0 del pic16f628a, pero ojo, alimentar solo con 5 voltios DC ambos circuitos.
Interesante el proyecto pero solo podemos medir bajas frecuencias, y ademas depende del oscilador que se use, creo q con el pic trabajando a maxima velocidad solo se pueden medir hasta unos 120 Khz; pero el problema biene cuando queremos medir altas frecuencias, ya que en teoria el pic puede medir hasta unos 60Mhz usando el tmr0, y es un poco complicado hacer el codigo en pic basic pero no imposible, yo he llegado a medir hasta unos 10 mhz con una resolucion de 1 hz usando un cristal de 10Mhz, haciendo uso del preescaler y el propio tmr0 y la interrupcion con lo que se consigue un contar hasta los 16777215 Hz; para medir frecuencias mas altas he tenido que insertar rutinas de ensamblador y anular la interrupcion por desbordamiento del tmr0 y usar un artilugio para poder llegar al maximo de medicion factible con el pic unos 50 Mhz.
ResponderEliminarEsto no es complicado de hacer en assembler, pero el lenguaje de alto nivel si es engorroso.
hi
ResponderEliminarExactamente ahi estan las ventajas y desventajas del picbasicpro vs assembler, me atrevo a decir que mas son las ventajas del picbasicpro que sus desventajas, pero eso en casos especificos es conveniente usar el asembler por ser el lenguaje nativo de un pic con lo cual se ocupa menos memoria y es mas rapido la ejecucion del programa. en todo caso el picbasic pro permite tambien usar instrucciones en asembler.
ResponderEliminarA todo esto tambien tengo una pagina en asembler http://www.proyectoselectronicos1.blogspot.com/
en donde al final haciendo una comparacion entre estos programas de picbasicpro vs assembler decidi usar mas el picbasic pro por las facilidades de programacion :)
gracias, por el blogs. quiero ver si alguien me puede ayudar quiero armar un frecuencimetro que cuente hasta 10mhz con picbasicpro, yo uso el microcode estudio plus para generar el .hex bueno dejo mi correo por si alguien del blogs me da una manito
ResponderEliminarce6ugt@gmail.com
Hola necesito que alguien me mande el Codigo en C del Frecuencimetro con PIC16f628A.
ResponderEliminarGracias, alexaleon13@gmail.com
Hola amigos!!! estoy comenzando a ontroducirme en el mundo de los PIC, llegue a esta pagina buscando un oscilador con 555, y al ver la posibilidad de facilitar la programacion con PICbasic, quiero preguntar como puedo hacer para comenzar a estudiar este tema? espero su grata ayuda, gracias!!!
ResponderEliminarPrimero tienes q escoger un lenguaje de programacion para PICs te sugiero el picbasicpro para empezar, y despues aprender a compilar y grabar pìcs.
ResponderEliminaruna ayuda mario quiero hacer que cuente hasta 20mhz ?? ò mas si se pudiera usando el mismo codigo .asm gracias saludos...
ResponderEliminarHasta cuanto mide en Hz este frecuencimetro, hiciste la prueba? yo porel tiempo no hice eso, me lo comunicas.
ResponderEliminareste frecuencimetro solo mide maximo 20 khz, yo mmismo hice las pruebas
ResponderEliminarhola que tal, la instruccion count cuanta pulsos pero si detectaa un puslo y despues ejecuta otras instrucciones como sumar pulso o prender led y enseguida regresa a la instruccion count y si aun sigue el mismo pulso este lo contara?? o sabra q es el mismo pulso y no lo contara asta q alla una bajada y subida??.. saludos.
ResponderEliminarlos pulsos son por un puerto especifico, un solo pin se utiliza para contar. para otros procesos se aplica otro puertos y diferentes pines.
ResponderEliminarhola como puedo hacer encender un led con sensor cny70 ayuda
ResponderEliminar