Autor Tema: 16f877 + lcd + teclado 4x3 + reles Ayuda  (Leído 6908 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
16f877 + lcd + teclado 4x3 + reles Ayuda
« en: 24 de Mayo de 2010, 02:46:39 »
Amigos he diseñado un circuito en base al pic 16f877, con un lcd 16x2, mas un teclado 4x3.

La idea de mi circuito es que a traves de conjunto de menus que son manejados a traves del teclado y proyectados en lcd, se active un temporizador que a su vez me active 2 reles pero necesito que los rele se manejen por puertos separados.

Cuando intento hacer esto no puedo lograr que enciendan los dos siempre me enciende uno solo, les dejo una parte del codigo, trabajo con basic  pues soy un poco novato en la materia.


En conclusion necesito manejar simultaneamente los dos reles pero por puertos separados ya que hay rutinas que ameritan solo la activacion de uno de ellos,  tambien como me sucede que hay rutinas que necesito activar los dos al mismo tiempo y eso es lo que no quiere andar  :5]



tempo5:
'SECUENCIA PARA ANULAR EL CONTEO
Gosub get_button
If boton = 11 Then
PORTA.0 = 0  'desactivamos el rele de la bomba de fluidos
Lcdcmdout LcdLine1Pos(1)
Lcdout " CICLO DETENIDO  "
Lcdcmdout LcdLine2Pos(1)
Lcdout " POR EL OPERADOR "
WaitMs 3000
PORTA.1 = 0  'desactivamos el rele del generador
Goto menu1
Endif

'CONTEO COMO TAL
PORTA.0 = 1  'activamos el rele de la bomba de fluidos      <<< ESTA PARTE SOLO ME ACTIVA UNO DE LOS DOS RELES
PORTA.1 = 1  'activamos el rele del generador
WaitMs 1000
sec = sec + 1
Lcdcmdout LcdLine1Pos(1)
Lcdout " STOP - PULSE # "
Lcdcmdout LcdLine2Pos(1)
Lcdout "VAN:            "
Lcdcmdout LcdLine2Pos(09)
Lcdout "0"
Lcdcmdout LcdLine2Pos(10)
Lcdout #min
Lcdcmdout LcdLine2Pos(11)
Lcdout ":"
If sec < 10 Then
Lcdcmdout LcdLine2Pos(12)
Lcdout "0"
Lcdcmdout LcdLine2Pos(13)
Lcdout #sec
Endif
If sec >= 10 Then
Lcdcmdout LcdLine2Pos(12)
Lcdout #sec
Endif
If sec = 59 Then
WaitMs 1000
min = min + 1
sec = 0
Lcdcmdout LcdLine2Pos(12)
Lcdout "00"
Lcdcmdout LcdLine2Pos(10)
Lcdout #min
Endif
If min = 5 And sec = 0 Then
PORTA.0 = 0  'desactivamos rele de la bomba de fluidos
PORTA.1 = 0  'desativamos rele del generador
Lcdcmdout LcdLine2Pos(1)
Lcdout " CICLO COMPLETO "
WaitMs 5000
Goto menu1
Endif
Goto tempo5
'*****************


Adjunto como estoy conectando los componentes al PIC, si es necesaria mas info como para que alguien me pueda ayudar me dicen por favor muchas gracias de antemano.

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #1 en: 24 de Mayo de 2010, 04:13:53 »

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #2 en: 24 de Mayo de 2010, 10:38:26 »
Muchas gracias Stalen pero aun asi no soluciono mi problema, el codigo lo he realizado todo, el pic reacciona a los pulsos del teclado, me manejo a traves de los menus todo perfecto, mi unico detalle es cuando mando una instruccion que es la siguiente cuando el temporizador se activa pues este no me activa los 2 reles solo uno de ellos quiero saber el porque :S !!!!

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #3 en: 24 de Mayo de 2010, 11:08:44 »
pon unos pullup en las salidas y reduce la resistencia a unos 470Ohm, a ver que hacen.

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #4 en: 24 de Mayo de 2010, 18:45:49 »
Pues he colocado los pull ups 10k en las salidas que no estoy utilizando, y bajando los valores de las resistencias que van hacia los transistores, y de igual manera solo se activa un rele, nunca los dos al mismo tiempo. !!!! Que es lo que necesito

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #5 en: 24 de Mayo de 2010, 18:48:52 »
y si activas cada uno solo.

yo te decía los pullup en las lìneas que van a los transistores

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #6 en: 24 de Mayo de 2010, 19:19:32 »
asi si me funciona pero te explico es una maquina que tiene varias funciones

ejemplo

funcion1: Activa por tiempo ya sea 5 min, 10min, 15min  AMBOS RELES

funcion2: Activa solamente el RELE 1

funcion3: Activa solamente el RELE 2


misteriosamente no se q este pasando pero cuando activo 1 por 1 individual si se activan


 pero cuando activo ambos para ejecutar la funcion1   no se activan sino uno solo de ellos casi siempre el que esta en el PORTA.1

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #7 en: 24 de Mayo de 2010, 19:30:25 »
qué corriente estás exigiendo al pic a la vez??

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #8 en: 24 de Mayo de 2010, 19:41:01 »
Solo la necesaria para mover ambos transistores, porque el resto es el teclado y el lcd que se alimenta por VCC no le roba energia al PIC.

Descarto el echo de la corriente porque si reemplazo la parte de los RELES por unos simples leds, sigue mi problema.  Solo me enciende un led a la vez, mas no ambos cuando necesito que se enciendan ambos.

Estoy pensando que sera error de codigo.


'************ DEFINICION DE PARAMETROS DE LCD
Define LCD_DREG = PORTB
Define LCD_DBIT = 0
Define LCD_RSREG = PORTC
Define LCD_RSBIT = 0
Define LCD_EREG = PORTC
Define LCD_EBIT = 1
Define LCD_BITS = 8
Define LCD_LINES = 2
Define LCD_CHARS = 16
Define LCD_COMMANDUS = 2000
Define LCD_DATAUS = 60
Define LCD_INITMS = 100

'************ DECLARACION DE VARIABLES
Dim l1 As Byte
Dim l2 As Byte
Dim l3 As Byte
Dim l4 As Byte
Dim flag As Byte
Dim contra As Byte
Dim count1 As Byte
Dim i As Byte
Dim pass1 As Byte
Dim pass2 As Byte
Dim relepwm As Bit
Dim relebomba As Bit
Dim tecla As Byte
Dim boton As Byte
Dim page As Byte
Dim tiempo5 As Byte
Dim tiempo10 As Byte
Dim tiempo15 As Byte
Dim sec As Word
Dim min As Word
tecla = boton
boton = 0

'************ ARRANQUE DE LCD
Lcdinit
'************

'************ DEMO DE LCD
inicio:
Lcdcmdout LcdLine1Pos(1)
Lcdout "INJECTOR CLEANER"
Lcdcmdout LcdLine2Pos(1)
Lcdout "CARGANDO SISTEMA"
WaitMs 1000
Lcdcmdout LcdClear
Lcdcmdout LcdLine1Pos(1)
Lcdout "SISTEMA CARGADO"
WaitMs 1000
Lcdcmdout LcdClear


'************** RUTINA DE TECLADO
teclado:
'Pines que conforman las filas
Symbol fila1 = RD1
Symbol fila2 = RD2
Symbol fila3 = RD3
Symbol fila4 = RD4

'Pines que conforman las columnas
Symbol col1 = RD5
Symbol col2 = RD6
Symbol col3 = RD7

'Definición de puertos     <<<< ESTA PARTE CREO Q TENGO EL ERROR NO TENGO MUY CLARA LA DEFINICION DE PUERTOS
'TENDRIA QUE ESPECIFICAR EL TRISA  ????                                   

TRISD = %00011111


Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #9 en: 24 de Mayo de 2010, 19:43:37 »
tendrías que poner trisa=0x00; si todo son salidas

antes tienes que meterte en el banco 1 y después salir de él
« Última modificación: 24 de Mayo de 2010, 19:45:55 por Slalen »

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #10 en: 24 de Mayo de 2010, 19:48:21 »
Hermano ya coloque la definicion del puerto y sigo con lo mismo que me sugieres ??? sera que los manejo por otro puerto ??? no se de verdad me he esforzado muchisimo y no comprendo que sucede....

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #11 en: 24 de Mayo de 2010, 19:49:53 »
en vez de activar las líneas por separado, activalas a la vez PORTA=0x03;

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #12 en: 24 de Mayo de 2010, 19:58:48 »
Hermano muchisimas gracias de verdad muy agradecido, como te digo soy novato y me falta muchisimo por aprender aun en ELECTRONICA DIGITAL, en lo analogico me manejo muy bien pero me falta. Muchas gracias de verdad problema resuelto !!!!.

Al recibir la instruccion de activar ambos puertos a la vez funciono de maravilla muchisimas gracias.

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #13 en: 24 de Mayo de 2010, 20:00:40 »
es que hay veces que se salta una por problema de latch, en los 18f lo solucionan creando un registro específico

me alero de que te funcione :-/ :mrgreen: :-/

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: 16f877 + lcd + teclado 4x3 + reles Ayuda
« Respuesta #14 en: 24 de Mayo de 2010, 20:06:35 »
Muchas gracias y como digo seguire aprendiendo lo fascinante que es la electronica, jajajaja !!!! De verdad he avanzado muchisimo y ahi vamos poco a poco.  :D  :-/


 

anything