fr

fr
Labansoft

martes, 26 de noviembre de 2013

Localizacion GPS con Pic 16F877A + LCD

Código de programa para configurar el LCD y declaración
de variables para lectura del GPS








Como se explico anteriormente se conecta el GPS mediante el CI 74HC14 al puerto serial o USB usando conversor usb_232, luego en el COMPIM del   PROTEUS  se  configura  el  puerto  virtual  y  fisico   con  iguales caractristicas que el GPS 4800 b/s etc. Se carga el programa :GPS_CIDT1:HEX en el PIC 16F877a y listo



 Ubicacion Recibida del GPS

Descargar

PROYECTO EN PROTEUS

Programa en Pic Basic .pbp

Alguna Duda a mi correo : mario_labanm@hotmail.com



temperatura



CONTROL DE TEMPERATURA CON PIC Y LM35

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. Bueno decidi agregar otro ventilador mas, seteado a una temperatura mayor que el primer ventilador, pero al aumentar la temperatura mas alla del seteo del 1er ventiladorencienda una alarma y envie un aviso en el lcd. no soy bueno para dar explicaciones, mejor vean el funcionamiento en el video




DESCARGAS
Control de Temperatura.Zip  El programa esta en pbp y la simulacion en Proteus7.8
Data Sheet PIC16f819 descargado de datasheetcatalog.com
MANUAL PICBASIC EN ESPAÑOL manual descargado de frino.com.ar

Hay un inconveniente en el circuito debido a que el LM35 tiene incrementos de 10 mV por grado al leer el dato con el conversor AD del pic, este dato lo he multiplicado x 2 para tener una lectura aproximada , lo malo es que solo muestra en LCD valores pares.
Es mi primera publicacion si algun lector tiene una mejora comentela y la posteare.


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 26/11/2013                                        *
'*  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_BITS10        ;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

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*2                   ;MULTIPLICAR POR 2 EL VALOR "DATOS"
  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 DATOS,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*2-1
  LCDOUT $FE,1," ENFRIANDO"      ;SACAR LA PALABRA "ENFRIANDO" EN EL LCD
  LCDOUT $FE,$C6, DEC DATOS,G,"C" ;SACAR EL VALOR DECIMAL DE "DATOS" Y 
                                      ;EL SIMBOLO GRADOS
GOTO INICIO                           ;IR A INICIO

PELIGRO:          
  ADCIN 0,DATOS
  DATOS = DATOS*2-1
  LCDOUT $FE,1," PELIGRO "
  LCDOUT $FE,$C6, DEC DATOS,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




domingo, 17 de noviembre de 2013

Proyecto Ascensor de 3 Pisos + LCD + DISPLAY con PIC 16F877A

Este proyecto electrónico consta de una maqueta y de una tarjeta PCB cuyo microcontrolador es el PIC16F877A... En la tarjeta electrónica se oprime cualquiera de los tres botones para ordenar al ascensor moverse... Cuando el ascensor llega al piso de destino, se detiene .Se visualiza en un LCD y un display de siete segmentos indica el piso en el que actualmente se encuentra el ascensor... En la maqueta, también se van activando leds a medida que pasa el ascensor... Posee además un botón de parada de emergencia...


SECCION DE CONTROL

Este dispositivo simula el funcionamiento de un ascensor de 3 plantas, como si fuera uno real, el ascensor podra ser llamado desde cada una de las plantas por medio de unos pulsadores del mismo modo, desde dentro de la cabina podremos elegir el piso de destino colocando en paralelo sensores de llamada a los del panel.
El sistema se ha construido con un unico motor, que realiza el movimiento de subida y bajada de la cabina del ascensor. En cada planta, hay colocado un final de carrera o un sensor magnetico, que detecta cuando pasa la cabina por el y  pararlo.
Este programa esta hecho para un ascensor de 3 pisos cuya cabina subira o bajara desde el piso que lo llamen, Al inicio la cabina esta en el piso1 y por lo tanto Ra0 estara en 1 (5voltios) y el resto de pulsadores de la cabina y de llamada en 0v (conectados a tierra).
los pulsadores que seran accionados por la cabina:

Ra0=pulsador de piso1 
Ra1=pulsador de piso2
Ra2=pulsador de piso3 

Los pulsadores de llamada son:
Rc3=pulsador llamada de piso1
Rc4=pulsador llamada de piso2
Rc5=pulsador llamada de piso3 

y para los pulsadores de la cabina (si es que desean colocarlos) les ponen un pulsador en paralelo para cada piso( por ejemplo en Rc3 iria dos pulsadores de llamada en paralelo)
Ojito aqui: Al inicio la cabina esta en el piso1 y por lo tanto Rc0 estara en 1 (5voltios).


ETAPA DE POTENCIA PARA MOTOR DC

Para el motor DC hacemos un puente H con  transistores 2n3904 para motores pequeños  y los cambian por tip41 si usan  motores DC mas grandes. Conectar la salida  Re0 y Re1 del PIC a la entrada del puente H (izquierda y derecha), los diodos d1-d4 son de proteccion contra chispazos que produce el motor DC.
Si es posible prueben el puente H solo para ver si sus entradas son excitadas con 0 y 5 voltios, generalmente los TIP41 necesitan mas corriente que la que genera un pic, lo mejor es usar darlingtongs y solucionamos el problema.




ETAPA DE POTENCIA PARA MOTOR DC 24v

*Tambien lo pueden Hacer sin los Opam.... :P
*Alimentacion 12V


video

 enviar un e-mail: mario_labanm@hotmail.com  si quieren el proyecto

DESCARGAS: