TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Matadoor en 14 de Abril de 2008, 15:06:25

Título: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: Matadoor en 14 de Abril de 2008, 15:06:25
Hola amigos espero no molestar con esta inquietud espero me puedan ayudar con un par de consejos, me preguntaba como seria posible hacer que cuando pulse mun boton se active un rele y se mantenga activado hasta que yo vuelva a pulsar el mismo pulsador casso en el cual el rele dejaria de estar activo, estoy codificando para el pic 16f628A pero estoy teniendo unos problemitas gracias por su ayuda...
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: dogflu66 en 14 de Abril de 2008, 16:20:52
Hola matadoor, al estar este post aquí debes de trabajar en Basic.
Es muy importante que indiques que Basic usas ya que todos
tienen sus diferencias.
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: LordLafebre en 14 de Abril de 2008, 17:21:43
Hola:

Pues es algo muy simple, necesitas dos pines del pic, ejemplo el RB0 para conectar el pulsador y el RB1 para el relé, configuras el primero como entrada y el segundo como salida, de forma individual o todo el puerto, dependiendo del basic que uses, para PBP puede ser algo como esto:

TRISB=%00000001

Luego solo necesitas declarar una variable:

Cont Var Byte

Esta variable va a ir incrementando su valor dependiendo de como vayas pulsando el botón, así por ejemplo:

Cont Var Byte
TRISB=%00000001
cont=0
inicio:
  If PORTB.0=1 then ' si el pulsante es presionado 
    cont=cont+1
  endif
  if cont=1 then
    high portb.1 'activa el relé
  endif
  if cont=2 then
    low portb.1 'desactiva el relé
    cont=0
  endif
goto inicio

Eso sería todo y lo puedes adaptar perfectamente al basic que estés usando.
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: Matadoor en 14 de Abril de 2008, 22:03:27
Hola LordLafebre a los tiempos........ gracias por tu ayuda ya la voy a cargar a mi pic, estaba haciendo esto mediante un contador base 2, pero no me agradaba como me estaba quedando, voy a probar tu solucion, y aprovecho para hacerte otra pregunta de pronto te haya pasado, mira estoy trabajando con unos servos hitec standar que los truque y los he centrado guiandome con un control remoto de un avion que tenia, ya he logrado centrarlo al enviar el pulso PWM a un ancho de 1400 desde el pic, con una anchura de 800 tengo el giro continuo en un sentido y a 1400 en el otro sentido, pero cuando envio que primero gire en un sentido y luego al otro sentido el servo se me queda girando solo en el sentido que setie primero, no se por que sucede esto tienes alguna sugerencia y justamente trabajo con el PBP, por cierto me habian comentado que C para pic es bastante potente que piensas tu al respecto? Gracias por tu tiempo y por tu ayuda.

Saludos desde Riobamba.....
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: LordLafebre en 15 de Abril de 2008, 11:49:12
Hola:

Pues será mejor que abras otro hilo, lo expliques mejor y seguimos por ahí, respecto al C pues si lo es no entiendo a que viene esa pregunta en este tema.
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: Matadoor en 15 de Abril de 2008, 15:02:57
Hola, si , no tenia animos de ofender, solo queria conocer alguna opinion sobre "Cpara pics" , sobre los servos ya lo solucione estube trabajando toda la tarde pero al final cambie el pack de baterias con las que estaba haciendo las pruebas y ahora todo va de maravillas con los servos.....
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: Conguito en 30 de Abril de 2008, 17:01:02
Me voy a entrometer con toda mi ignorancia de novato.......pero, si usa un pulsador, ¿no es más fácil cambiar el estado del pin de salida con la orden TOGGLE?
Y perdón si he dicho alguna burrada, pero creo que sería más simple que usar una rutina IF......THEN
Salu2.
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: KALLITOS en 30 de Abril de 2008, 19:39:42
Me voy a entrometer con toda mi ignorancia de novato.......pero, si usa un pulsador, ¿no es más fácil cambiar el estado del pin de salida con la orden TOGGLE?
Y perdón si he dicho alguna burrada, pero creo que sería más simple que usar una rutina IF......THEN
Salu2.



Creo seria un poco mas facil como mencionas pero hay que tener en cuenta que despues de la pregunta se deberia colocar una pausa para evitar los rebotes y detectar que se dejo de pulsar el boton, entonces el codigo quedaria asi:


Código: [Seleccionar]
define osc x
TRISB = %00000001
portb.1 = 0
INICIO:
IF portb.0 = 1 THEN
    toggle portb.1
    soltar:
        pause 50
        IF portb.0 = 1 THEN GOTO soltar
ENDIF
GOTO inicio
END
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: 16f en 30 de Abril de 2008, 20:49:15
amigos creo que los ejemplos dados  tienen un problema si mantengo el pulsante activo, estara eternemente el rele cambiando de estado, se debe detectar el flanco no el pulso.
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: LordLafebre en 01 de Mayo de 2008, 12:04:16
Hola:

Eso se soluciona fácil y puede ser así:

  If PORTB.0=1 then ' si el pulsante es presionado 
    cont=cont+1
    while PORTB.0<>0
    wend
  endif

El momento que es cero, es decir cuando ya no es presionado quiebra el while y sigue el programa.
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: KALLITOS en 01 de Mayo de 2008, 14:51:50
amigo 16f prueba mi codigo y veras que no sucede  :)
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: electronando en 01 de Mayo de 2008, 16:01:54
Código: QBasic/QuickBASIC
  1. Device = 16F628A
  2. XTAL 4
  3. Symbol BOTON=PORTA.0
  4.  
  5. CMCON=7 'porta modo digital
  6. TRISA.0=1
  7. TRISB=0
  8. PORTB=0
  9.  
  10. INICIO1:
  11. IF BOTON=0 THEN
  12.    DelayMS 20
  13.    IF BOTON=0 THEN
  14.       ESPERA1:
  15.       IF BOTON=0 THEN ESPERA1
  16.       PORTB=%11111111
  17.       GOTO INICIO2
  18.    EndIf
  19. EndIf
  20. GOTO INICIO1
  21.  
  22. INICIO2:
  23. IF BOTON=0 THEN
  24.    DelayMS 20
  25.    IF BOTON=0 THEN
  26.       ESPERA2:
  27.       IF BOTON=0 THEN ESPERA2
  28.       PORTB=%00000000
  29.       GOTO INICIO1
  30.    EndIf
  31. EndIf
  32. GOTO INICIO2
  33.  


SERVIDO :mrgreen:
Título: Re: Como activar y desactivar un rele con un mismo pulsador?
Publicado por: dogflu66 en 02 de Mayo de 2008, 08:37:22
Se puede hacer de muchas maneras, una seria, una pulsación corta para ON y una pulsación mas larga para OFF.
Y no menos importante colocar un condensador de un valor no inferior a 1nF en paralelo con el pulsador.

Otro tema es usar "pause" para comprobar si la tecla se pulso durante un tiempo, pero esto rompe el flujo normal
del programa. No tiene mucho sentido, por ejemplo, trabajar a 20Mhz y luego insertar "pause" en el programa ya
que mientras estas ejecutando un "pause" no puedes hacer otra cosa. Se puede utilizar un contador que se incrementa
mientras esta la tecla pulsada y se hace Reset cuando se deja de pulsar y, en el caso que el contador llega al valor
deseado se da como valida la pulsación de la tecla.

PD. Pause = Delay = Wait = etc, segun version de Basic