Autor Tema: Duracion pausa  (Leído 4426 veces)

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

Desconectado ponyony

  • PIC10
  • *
  • Mensajes: 18
Duracion pausa
« en: 24 de Febrero de 2006, 19:22:00 »
Hola, estoy intentando hacer una pausa de 18H y otra de 6H pero no me permite poner pausas tan grandes, como podria poner una pausa de 18Horas ?

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: Duracion pausa
« Respuesta #1 en: 24 de Febrero de 2006, 21:14:00 »
GUAU... esas pausas nunca las habia pensado... la verdad que para mi la unica forma es que te hagas pausas secuenciales del mayor tiempo posible, es decir configurar 6*60 pausas de 1 minuto... o algo asi... lo malo es que dificilmente encontraras una buena precision ene el tiempo.

Otra buena opcion seria usar una RTC, es decir un reloj externo, el cual esta preparado para funcionar independientemente y uno le pregunta que hora es cada vez que uno necesite. Lo que puedes hacer es quedarte preguntando desde una hora hasta que pase todo el tiempo que necesitas. A mi parecer esto es mas facil...

Suerte RebotadoRebotado
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Duracion pausa
« Respuesta #2 en: 24 de Febrero de 2006, 21:26:00 »
Hola:

Coincido con Victor, el Relojn de tiempo real (RTC) es la mejor opcion para esas labores, asi lo configuras y desde el pic cada cierto tiempo compruebas la hora para que realices la operacion que necesites, eso de hacer ese tipos de pausas con el pic como que no van bien, en que lo quieres aplicar?

Desconectado ponyony

  • PIC10
  • *
  • Mensajes: 18
RE: Duracion pausa
« Respuesta #3 en: 24 de Febrero de 2006, 21:32:00 »
Pos estoy haciendo un circuitillo el cual me activa y descativa unos reles, se podria decir como un automatismo, queria intentar hacerlo con pausas ya que mi nivel no es muy alto y no se como hacerlo con un reloj externo, pero habra que mirarlo, si me echais un cable Giño

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Duracion pausa
« Respuesta #4 en: 24 de Febrero de 2006, 21:50:00 »
Hola:

Para eso estamos... puedes utilizar el conocidisimo DS1307 que es un RTC por I2C... si te pare ce bien ese te puedo colga un ejemplo... Sonrisa Gigante

Desconectado ponyony

  • PIC10
  • *
  • Mensajes: 18
RE: Duracion pausa
« Respuesta #5 en: 24 de Febrero de 2006, 22:30:00 »
pues me harias un gran favor Giño haver si consigo montar esto Giño jejeej lo que no tengo ni idea como leer los datos pero ya mirare haver Giño

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Duracion pausa
« Respuesta #6 en: 24 de Febrero de 2006, 23:25:00 »
Hola:

Por eso no te preocupes, te pondre un ejemplo en el que lo puedas entender, es sencillo utilizas solamente la funcion I2Cread e I2Cwrite, ahora aqui son las 00:28 am como a las 11:30 am de aqui tendras listo tu ejemplo...

PD: vi tu perfil, es verdad eso de tu edad...? invasor Sonrisa Gigante

Desconectado ponyony

  • PIC10
  • *
  • Mensajes: 18
RE: Duracion pausa
« Respuesta #7 en: 25 de Febrero de 2006, 07:38:00 »
ok muchisimas gracias Giño yo ire provando cosas haver que tal Giño gracias por la ayuda Flash

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Duracion pausa
« Respuesta #8 en: 25 de Febrero de 2006, 11:04:00 »
Hola:

Aqui esta lo prometido:

Este es el código:

Codigo:
CPIN  Var Portb.7                 ;pin señal de reloj I2C
DPIN  Var Portb.6                 ;pin de datos I2C

segu    var byte   ;definir tamaño de variable segundos 1 a 255
minu    var byte                    ;variable para los minutos
hora    var byte                    ;variable para las horas
diaS    var byte                    ;variable día de la semana
diaF    var byte                    ;variable día fecha del mes
mes     var byte                    ;variable mes
anio    var byte                    ;variable año de 2 dígitos

dato    VAR BYTE                 ;variable para almacenar dato leído
actualizado VAR BIT              ;variable para almacenar un 1 o 0

goto grabarRTC   ;si es la 1ra vez que corre ir a grabar RTC
                                   ;caso contrario solo leer el RTC
INICIO:  
    I2CREAD DPIN,CPIN,%11010000,0,[segu]   ;leer los datos de mem. 0,            
    I2CREAD DPIN,CPIN,%11010000,1,[minu]   ;1,2,..y guardarlos en sus
    I2CREAD DPIN,CPIN,%11010000,2,[hora]   ;respectivas variables
    I2CREAD DPIN,CPIN,%11010000,3,[diaS]
    I2CREAD DPIN,CPIN,%11010000,4,[diaF]            
    I2CREAD DPIN,CPIN,%11010000,5,[mes]
    I2CREAD DPIN,CPIN,%11010000,6,[anio]
         
    lcdout $fe,1,hex2 hora,":",hex2 minu,":",hex2 segu   ;mostrar la
                          ;hora minuto y segundos en 2 dígitos (HEX2)
lcdout $fe,$c0                      ; saltar a la 2da línea del LCD
    if diaS=$1 then lcdout "Dom."    ;mostrar día de la semana
    if diaS=$2 then lcdout "Lun."
    if diaS=$3 then lcdout "Mar."
    if diaS=$4 then lcdout "Mie."
    if diaS=$5 then lcdout "Jue."
    if diaS=$6 then lcdout "Vie."
    if diaS=$7 then lcdout "Sab."

lcdout $fe,$c5,hex2 diaF,"/"          ;mostrar el día del mes /
lcdout $fe,$cB,"/20",hex2 anio        ; mostrar año /20 + 04

lcdout $fe,$c8                       ;pasar a la casilla 8
    if mes=$1 then lcdout "ene"       ;mostrar el mes
    if mes=$2 then lcdout "feb"
    if mes=$3 then lcdout "mar"
    if mes=$4 then lcdout "abr"
    if mes=$5 then lcdout "may"
    if mes=$6 then lcdout "jun"
    if mes=$7 then lcdout "jul"
    if mes=$8 then lcdout "ago"
    if mes=$9 then lcdout "sep"
    if mes=$10 then lcdout "oct"
    if mes=$11 then lcdout "nov"
    if mes=$12 then lcdout "dic"
PAUSE 500                            ;esperar 0,5 segundo
   
goto inicio                         ;volver a leer los datos

; ************************ subrutina grabar *********************
grabarRTC:
     
I2CWRITE DPIN,CPIN,%11010000,0,[$00]   ;setear 00 segundos
    Pause 10                     ;retardo para finalizar grabación
I2CWRITE DPIN,CPIN,%11010000,1,[$59]   ;setear 30 minutos
    Pause 10  
I2CWRITE DPIN,CPIN,%11010000,2,[$18]    ;setear las 13 horas
    Pause 10  
I2CWRITE DPIN,CPIN,%11010000,3,[$3]    ;setear día lunes ,D=1,L=2
    Pause 10                              ;M=3 , M=4, J=5, V=6, S=7
I2CWRITE DPIN,CPIN,%11010000,4,[$8]    ;setear día 27 del mes
    Pause 10  
I2CWRITE DPIN,CPIN,%11010000,5,[$11]    ;setear mes septiembre
    Pause 50  
I2CWRITE DPIN,CPIN,%11010000,6,[$05]    ;setear año  04
    Pause 10
I2CWRITE DPIN,CPIN,%11010000,7,[$10]   ;control %00010000 para
    Pause 10                           ;encender el led cada 1 seg.
goto inicio                 ;ir a presentar los datos en el LCD

end


y este el circuito:



Espero que te sirva, SUERTE...!!!

Desconectado ponyony

  • PIC10
  • *
  • Mensajes: 18
RE: Duracion pausa
« Respuesta #9 en: 25 de Febrero de 2006, 17:15:00 »
muchisimas gracias compi, lo que yo uso un PIC16F84 y no me interesa mostrar nada en LCD tansolo seria comprovar la hora y si esa hora es la misma ala que le he indicado poner un portB a High para activarme un rele Giño jejej es que veo mucho codigo aki y el lcd y otro pic Giño haver si se podria solo la comprovacion Giño

Desconectado ponyony

  • PIC10
  • *
  • Mensajes: 18
RE: Duracion pausa
« Respuesta #10 en: 25 de Febrero de 2006, 18:24:00 »
ok Giño me lo he stado mirando una y otra vez y ya entiendo el codigo Giño jejeej probare a resolver como interconectarlo y mirar como compararlo Giño seguro que algo sacaremos Giño si quieres agregame asi si necesito algo te pregunto por aki o por MSN Giño ponyony@hotmail.com Giño

saludos

                Pony

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Duracion pausa
« Respuesta #11 en: 25 de Febrero de 2006, 22:20:00 »
Hola:

Lo del pic no es problema, ese codigo funciona igual para cualquiera... Sonrisa Gigante

Desconectado ponyony

  • PIC10
  • *
  • Mensajes: 18
RE: Duracion pausa
« Respuesta #12 en: 28 de Febrero de 2006, 16:44:00 »
vamos a ver que no se que le pasa que me quedao enganchao Giño ya me va todo los reles botones etc.. me falla la comprovacion de la hora, hice unos calculos para determianr la hora que seria, aqui os dejo el codigo del reloj ( un 1307) y mi codigo de calculo, en el codigo solo sale la configuracion del reloj y la deteccion de la hora, es que no pongo todo xq es muy largo osea quiero que mireis donde me equivoco o que me falla del codigo. Giño yo creo que es en el calculo que creo que me devolvera "0" en Vez de "00" que serian las 12 de la noche Giño haver si lo entendeis :P

"----------------- RELOJ --------------------------------------------------------------------------
   
                CPIN  Var Porta.0                   "pin señal de reloj I2C

      DPIN  Var Porta.1                   "pin de datos I2C

 
      segu    var byte                    "definir tamaño de variable segundos 1 a 255

      minu    var byte                    "variable para los minutos

      hora    var byte                    "variable para las horas

      diaS    var byte                    "variable día de la semana

      diaF    var byte                    "variable día fecha del mes

      mes     var byte                    "variable mes

      anio    var byte                    "variable año de 2 dígitos



      dato    VAR BYTE                    "variable para almacenar dato leído

      actualizado VAR BIT                 "variable para almacenar un 1 o 0
"---------------------------------------------------------------------------------------------------------      
      B   var byte          " variable para almacenar la hora que se ha de apagar

      A   var byte               " la hora actual

      Zn   var byte          " Hora final ala que se ah de desactivar

      X    var byte          " Lugar donde guardar un calculo

      goto grabarRTC                      "si es la 1ra vez que corre ir a grabar RTC
"--------------------------------------------------------------------------------------------------------

grabarRTC:

     
      I2CWRITE DPIN,CPIN,%11010000,0,[$00]    "setear 00 segundos

          Pause 10                                "retardo para finalizar grabación

      I2CWRITE DPIN,CPIN,%11010000,1,[$59]    "setear 30 minutos

          Pause 10  

      I2CWRITE DPIN,CPIN,%11010000,2,[$23]    "setear las 13 horas

          Pause 10  

      I2CWRITE DPIN,CPIN,%11010000,3,[$3]     "setear día lunes ,D=1,L=2
 
          Pause 10                                "M=3 , M=4, J=5, V=6, S=7

      I2CWRITE DPIN,CPIN,%11010000,4,[$8]     "setear día 27 del mes

          Pause 10  

      I2CWRITE DPIN,CPIN,%11010000,5,[$11]    "setear mes septiembre

          Pause 50  

      I2CWRITE DPIN,CPIN,%11010000,6,[$05]    "setear año  04

          Pause 10

      I2CWRITE DPIN,CPIN,%11010000,7,[$10]   "control %00010000 para

          Pause 10                               "encender el led cada 1 seg.

      goto inicio                            "Salta a Inicio

INICIO:  

          I2CREAD DPIN,CPIN,%11010000,0,[segu]   "leer los datos de mem. 0,            

         I2CREAD DPIN,CPIN,%11010000,1,[minu]   "1,2,..y guardarlos en sus

          I2CREAD DPIN,CPIN,%11010000,2,[hora]   "respectivas variables

          I2CREAD DPIN,CPIN,%11010000,3,[diaS]

          I2CREAD DPIN,CPIN,%11010000,4,[diaF]            
   
          I2CREAD DPIN,CPIN,%11010000,5,[mes]

          I2CREAD DPIN,CPIN,%11010000,6,[anio]
   
      goto start
Start:

testC1:
          I2CREAD DPIN,CPIN,%11010000,2,[hora] "Lee que hora es ( 2 digitos ) y lo gurada en "hora"

          If PORTB.7 = 1 then reset   "Si es PORTB.7 esta a "1" saltamos a reset

          B = 1                             "Numero de horas de la pausa
          A = hora                           "La hora actual
          X = A + B                          "Calculo de horar
          If X >= 24 then calculo  
calculo:       Zn = X - 24                        "Si X es mas grande o igual que 24 le restamos 24
          If X < 24 then sigue
sigue:         Zn = X                             "si X es mas pequeña que 24 se queda igual

          if hora <> Zn then testC1 "Comprueva si la hora es "X" donde "X" la hora que quieres que se apague si no lo es salta a testC1

          High 1      " Desactiva el rele 1
          High 2      " Desactiva el rele 2
               High 3      " Desactiva el rele 3
               High 4      " Desactiva el rele 4


Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Duracion pausa
« Respuesta #13 en: 28 de Febrero de 2006, 16:56:00 »
Hola:

Pues no me queda claro que es lo que quieres hacer, pero te doy la idea de como lo haría, en el momento que el boton es precionado almaceno en variables el valor de la hora de ese instante luego le sumo una hora y voy comparando el valor que lee ese momento el RTC con el valor calculado para la pausa de 1 hora... asi lo haria... digo.. es mi humilde opinión...

Desconectado ponyony

  • PIC10
  • *
  • Mensajes: 18
RE: Duracion pausa
« Respuesta #14 en: 28 de Febrero de 2006, 17:29:00 »
vale, es lo que ago pero mira si tu lees y son las 18h osea (18) entonces si le sumo 18 por que quiero que la pausa sea de 18 horas la suma seria 36 y eso no es ninguna hora, por eso ago esa operacion 36 - 24 = 12 se tendria que desactivar a las 12 en el caso de que sea inferior como aki son las 01 y quieres 12 horas de retardo 12+1 = 13 se tendria que apagar a las 13 osea la 1 del medio dia, por eso ago esa operacion lo que luego no me lo calcula bien.... osea no me desactiva nada... queria hacer que se visualizaran los 2 primeros digitos en 2 seven segments pero lo veo muy chungo... xq ahora mismo no veo la hora en lcd ni nada.... y lo tengo puesto para que sean las 23:59 y en 1 minuto sean las 00:00 y asi ver si se desactiva, porque solo compruevo las horas no minutos osea 1 retraso de 1 hora pero si son las 23:59 a la que marque 00 lo considera 1 hora pero no me lo desactiva... no se si es xq sacara un 0 en vez de 00 no se :S


 

anything