DESCARGAS

FRECUENCIMETRO VOLTIMETROI CON PIC MICROCHIP



Este es un proyecto en el que se aplica la instruccion count para contar los pulsos en el puerto B6

y visualizar como frecuencia en el modulo lcd, el puerto A.0 sta configurado como entrada analogica de 10 bits para el conversor analogico digital del pic, en este proyecto no he usado oscilador externo, sta configurado a 4Mhz con oscilador interno, esto es un problema al momento de medir frecuencias altas, en la practica sugiero usar oscilador externo para no tener inconvenientes
La compilacion sta hecha en pbp y la simulacion en proteus
A continuacion el enlace de descarga.
descargar

El programa escrito es:




'****************************************************************

'*  Name    : frecuencimetro voltimetro                         *

'*  Author  : Leonardo Saldaña                                  *                  

'*  Date    : 16/07/2012                                        *

'*  Version : 1.0                                               *

'*  Notes   :                                                   *

'*          :                                                   *

'***************************************************************



osccon=%1100100 ;DEFINE EL OSCILADOR INTERNO A 4MHZ;



DEFINE LCD_DREG PORTB    ;DEFINE EL PUERTO B PARA CONTROL DE LCD;

DEFINE LCD_DBIT 0        ;SE USAN LOS PINES MENOS SIGNIFICATIVOS DEL PUERTOB

DEFINE LCD_RSREG PORTB   ;REGISTRO LCD

DEFINE LCD_RSBIT 5       ;REGISTRO DE LCD EN PORTB.5 (PIN RS )

DEFINE LCD_EREG PORTB    ;BIT HABILITAR LCD

DEFINE LCD_EBIT 4        ;PUERTOB.4 HABILITAR LCD



DEFINE ADC_BITS 8       ;FIJA NUMEROS DE BITS DEL RESULTADO(5,8,10)

DEFINE ADC_CLOCK 3        ;FIJA EL RELOJ

DEFINE ADC_SAMPLEUS 50    ;VELOCIDAD DE MUESTRE0



TRISA = %0011           ;PUERTO A.0 COMO ENTRADA, EL RESTO COMO SALIDA

TRISB=%01000000          ;PUERTO B COMO SALIDAS

ADCON1=%00001110         ;PUERTO A.0 ES CONVERSOR, EL RESTO DIGITALES

X VAR BYTE               ;VARIABLE PARA LA INSTRUCCION FOR NEXT

Y VAR BYTE               ;VARIABLE PARA LA INSTRUCCION FOR NEXT

Z VAR BYTE               ;VARIABLE PARA LA INSTRUCCION FOR NEXT

A VAR BYTE

B VAR BYTE

DEF VAR BYTE

ABC VAR BYTE             ;VARIABLE PARA LA INSTRUCCION LOOKUP

DATOS VAR WORD           ;VARIABLE PARA ALMACENAR LOS DATOS LEIDOS 

PULS VAR WORD

VOLTAJE VAR WORD



    

 ARRANQUE:               ;ETIQUETA PREVIA A INICIO DE PROGRAMA

      FOR X=0 TO 3

      SOUND PORTB.7,[10000,2]

      NEXT

      LOW PORTB.7

      FOR Z=0 TO 2       ;REPETIR 2 VECES

      LCDOUT $FE,1       ;LIMPIAR LCD

      FOR Y=0 TO 9       ;REPETIR 9 VECES

      LOOKUP Y,[" INICIANDO"],ABC    ;TOMAR CARACTER POR CARACTER Y ALMACENAR EN "ABC"

      LCDOUT,ABC                                   

      PAUSE 50          

      NEXT             

      NEXT              

GOTO INICIO             



INICIO:

      FOR A=0 TO 10                              

      COUNT PORTB.6,1000,PULS

      ADCIN 0,DATOS

      PAUSE 5

      VOLTAJE = DATOS *5/255

      LCDOUT $FE,1," FREC:",DEC PULS,"hz" 

      LCDOUT $FE,$C4,DEC VOLTAJE      

      VOLTAJE = (DATOS) *100 /51

      LCDOUT $FE,$C5,".",DEC2 VOLTAJE,"V"

      NEXT

LOGO:

      FOR B=0 TO 1

      LCDOUT $FE,1      

      FOR Y=0 TO 13      

      LOOKUP Y,[" PIC BASIC PRO"],DEF   

      LCDOUT,DEF                                   

      PAUSE 100          

      NEXT

      NEXT                           

GOTO INICIO     




Para probar el funcionamiento del ADC del pic podemos desconectar el puerto A.0 del genrador y conectralo a un potenciometro conectado a vcc como muetra la imagen
                          






CONTROL DE TEMPERATURA CON MICROCONTROLADOR PIC


El siguiente programa esta diseñado para controlar la temperatura de un panel a travez de 2 ventiladores y un sensor  de temperatura el IC LM35.
El funcionamiento del circuito es el siguiente:
El corazon del circuito es el microcontroladro PIC16F819, decidi usar este porque tiene conversores
analogicos - digital, y el sensor de temperarura LM35 porque ya lo tenia a la mano, la idea es que cuando la temperatura aumenta se encienda un ventilador que ayude a bajar la temperatura y cuando la temperatura es baja este se apague. Adicionalmente a esto me pregunte y que pasa si el ventilador se averia y la temperatura sigue aumentando podria dañar los equipo por eso decidi agregar otro ventilador mas, seteado a una temperatura mayor que el primer ventilador, cuando la temperatura es muy alta activa un segundo ventilador de respaldo, una alarma sonora y un aviso en el lcd.
En el video se aprecia el funcionamiento eld circuito.




DESCARGAS
CONTROL DE TEMPERATURA.ZIP  El programa esta en pbp y la simulacion en Proteus7.8
Data Sheet LM35
Data Sheet PIC16f819 descargado de datasheetcatalog.com
MANUAL PICBASIC EN ESPAÑOL manual descargado de frino.com.ar
.
Es mi primera publicacion si algun lector tiene una mejora comentela y la posteare.



'****************************************************************
'*  Name    : Control de Temperatura                            *
'*  Author  : Leonardo Saldaña                                  *                                                               *
'*  Date    : 16/07/2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'***************************************************************
osccon=%1100100 ;DEFINE EL OSCILADOR INTERNO A 4MHZ;
DEFINE LCD_DREG PORTB    ;DEFINE EL PUERTO B PARA CONTROL DE LCD;
DEFINE LCD_DBIT 0        ;SE USAN LOS PINES MENOS SIGNIFICATIVOS DEL PUERTOB
DEFINE LCD_RSREG PORTB   ;REGISTRO LCD
DEFINE LCD_RSBIT 5       ;REGISTRO DE LCD EN PORTB.5 (PIN RS )
DEFINE LCD_EREG PORTB    ;BIT HABILITAR LCD
DEFINE LCD_EBIT 4        ;PUERTOB.4 HABILITAR LCD
DEFINE ADC_BITS 10        ;FIJA NUMEROS DE BITS DEL RESULTADO(5,8,10)
DEFINE ADC_CLOCK3        ;FIJA EL RELOJ
DEFINE ADC_SAMPLEUS50    ;VELOCIDAD DE MUESTREO;
G CON 223                ;CONSTANTE G
                         ;223 EN ASCII ES EL SIMBOLO DE GRADOS
TEMP VAR WORD
TRISA = 001           ;PUERTO A.0 COMO ENTRADA, EL RESTO COMO SALIDA;
TRISB=000000          ;PUERTO B COMO SALIDAS;
ADCON1=001110         ;PUERTO A.0 ES CONVERSOR, EL RESTO DIGITALES;

X VAR BYTE               ;VARIABLE PARA LA INSTRUCCION FOR NEXT;
Y VAR BYTE               ;VARIABLE PARA LA INSTRUCCION FOR NEXT
Z VAR BYTE               ;VARIABLE PARA LA INSTRUCCION FOR NEXT
ABC VAR BYTE             ;VARIABLE PARA LA INSTRUCCION LOOKUP
DATOS VAR BYTE           ;VARIABLE PARA ALMACENAR LOS DATOS LEIDOS
VENTILADOR1 VAR PORTA.1  ;VARIABLE USADA COMO SALIDA VENTILADOR1
VENTILADOR2 VAR PORTB.6  ;VARIABLE USADA COMO SALIDA VENTILADOR1
LED VAR PORTA.2          ;VARIABLE USADA COMO SALIDA VENTILADOR2
PORTB.7=0                ;LIMPIAR PORTB.7 (ENVIAR UN "0" LOGICO)

LED=0                    ;LIMPIAR LED (ENVIAR UN "0" LOGICO)
VENTILADOR1=0            ;LIMPIAR VENTILADOR1 (ENVIAR UN "0" LOGICO)
VENTILADOR2=0            ;LIMPIAR VENTILADOR2 (ENVIAR UN "0" LOGICO)
PAUSE 200               

ARRANQUE:               ;ETIQUETA PREVIA A INICIO DE PROGRAMA
  FOR Z=0 TO 2       ;REPETIR 2 VECES
  LCDOUT $FE,1       ;LIMPIAR LCD
  FOR Y=0 TO 9       ;REPETIR 9 VECES
  LOOKUP Y,[" INICIANDO"],ABC    ;TOMAR LETRA POR LETRA Y GUARDAR EN "ABC";
  LCDOUT,ABC                                   
  PAUSE 50           ;ESPERAR 50 ms
  NEXT               ;SIGUIENTE REPETICION
  NEXT               ;SIGUIENTE REPETICION
GOTO INICIO              ;IR A INICIO

INICIO:                             ;ETIQUETA INICIO
  ADCIN 0,DATOS                     ;LEER CANAL "0" Y GUARDAR EN "DATOS" 
  DATOS = DATOS/ 128                  ;MULTIPLICAR POR 2 EL VALOR "DATOS"
  TEMP = DATOS - 1
  IF DATOS > 40 THEN PELIGRO        ;SI DATOS >"40" IR A "PELIGRO"
  IF DATOS >= 15 THEN ENFRIANDO     ;SI DATOS >"15" IR A "ENFRIANDO
  LOW VENTILADOR1 : LOW VENTILADOR2 ;"0" LOGICO LOS VENTILADORES 1Y2
  LCDOUT $FE,1," TEMPERATURA:"      ;PALABRA "TEMPERATURA" EN EL LCD
  LCDOUT $FE,$C6, DEC TEMP,G,"C"   ; VALOR DECIMAL DE DATOS Y GRADOS
  PAUSE 200                         ;ESPERAR 200 ms
GOTO INICIO                             ;IR A "INICIO" 

ENFRIANDO:             ;ETIQUETA ENFRIANDO;
  HIGH VENTILADOR1     ;ENCENDER VENTILADOR1 (PONER "1" LOGICO);
  LOW VENTILADOR2      ;ENCENDER VENTILADOR1 (PONER "1" LOGICO)
  HIGH LED             ;ENCENDER LED(PONER "1" LOGICO)
  PAUSE 200
  LOW LED
  PAUSE 200
  ADCIN 0,DATOS
  DATOS = DATOS /128
  TEMP = DATOS - 1
  LCDOUT $FE,1," ENFRIANDO"      ;SACAR LA PALABRA "ENFRIANDO" EN EL LCD
  LCDOUT $FE,$C6, DEC TEMP,G,"C" ;SACAR EL VALOR DECIMAL DE "DATOS" Y
                                      ;EL SIMBOLO GRADOS
GOTO INICIO                           ;IR A INICIO

PELIGRO:          
  ADCIN 0,DATOS
  DATOS = DATOS /128
  TEMP = DATOS - 1
  LCDOUT $FE,1," PELIGRO "
  LCDOUT $FE,$C6, DEC TEMP,G,"C"
  LOW VENTILADOR1
  HIGH VENTILADOR2
  SOUND PORTB.7,[10000,200]    ;INSTRUCCION PARA ENVIAR PITIDO
                               ;POR EL PUERTO B.7
  LOW PORTB.7
GOTO INICIO     

END